Working on UI improvement
This commit is contained in:
1 parent
0da1ae124c
commit
80af0e61ae
43 files changed
+889
-64
No files matched your search
+123
-1
@@ -34,7 +34,16 @@ namespace ZL {
|
||||
inventory = &inv;
|
||||
|
||||
//hudRoot = loadUiFromFile("resources/config2/hud.json", renderer, zipFile);
|
||||
hudRoot = loadUiFromFile("resources/w/ui/hud_step0.json", renderer, zipFile);
|
||||
hudRoot = loadUiFromFile("resources/w/ui/hud_step0.json", renderer, zipFile);
|
||||
hudStep1Root = loadUiFromFile("resources/w/ui/hud_step1.json", renderer, zipFile);
|
||||
hudStep2Root = loadUiFromFile("resources/w/ui/hud_step2.json", renderer, zipFile);
|
||||
hudStep3Root = loadUiFromFile("resources/w/ui/hud_step3.json", renderer, zipFile);
|
||||
hudStep4Root = loadUiFromFile("resources/w/ui/hud_step4.json", renderer, zipFile);
|
||||
hudStep5aRoot = loadUiFromFile("resources/w/ui/hud_step5a.json", renderer, zipFile);
|
||||
hudStep5bRoot = loadUiFromFile("resources/w/ui/hud_step5b.json", renderer, zipFile);
|
||||
hudStep5abRoot = loadUiFromFile("resources/w/ui/hud_step5ab.json", renderer, zipFile);
|
||||
phoneScreenRoot = loadUiFromFile("resources/w/ui/screen_phone.json", renderer, zipFile);
|
||||
journalScreenRoot= loadUiFromFile("resources/w/ui/screen_journal.json", renderer, zipFile);
|
||||
inventoryRoot = loadUiFromFile("resources/config2/ui_inventory.json", renderer, zipFile);
|
||||
questJournalRoot = loadUiFromFile("resources/config2/ui_quest_journal.json", renderer, zipFile);
|
||||
|
||||
@@ -124,6 +133,119 @@ namespace ZL {
|
||||
}
|
||||
}
|
||||
|
||||
void MenuManager::openPhoneScreen() {
|
||||
state = GameState::PhoneScreen;
|
||||
tutorialPhoneScreenOpened = true;
|
||||
// Hide the phone hint on the current HUD so it stays hidden when we return.
|
||||
uiManager.setNodeVisible("hint6a", false);
|
||||
uiManager.pushMenuFromSavedRoot(phoneScreenRoot);
|
||||
uiManager.setButtonCallback("phoneExitButton", [this](const std::string&) {
|
||||
closePhoneScreen();
|
||||
});
|
||||
}
|
||||
|
||||
void MenuManager::closePhoneScreen() {
|
||||
state = GameState::Gameplay;
|
||||
uiManager.popMenu();
|
||||
}
|
||||
|
||||
void MenuManager::openJournalScreen() {
|
||||
state = GameState::JournalScreen;
|
||||
tutorialJournalScreenOpened = true;
|
||||
// Hide the journal hint on the current HUD so it stays hidden when we return.
|
||||
uiManager.setNodeVisible("hint6b", false);
|
||||
uiManager.pushMenuFromSavedRoot(journalScreenRoot);
|
||||
uiManager.setButtonCallback("journalExitButton", [this](const std::string&) {
|
||||
closeJournalScreen();
|
||||
});
|
||||
}
|
||||
|
||||
void MenuManager::closeJournalScreen() {
|
||||
state = GameState::Gameplay;
|
||||
uiManager.popMenu();
|
||||
}
|
||||
|
||||
// Registers phoneButton / journalButton callbacks on the current HUD root
|
||||
// and hides any hints that have already been completed.
|
||||
// Called after every replaceRoot during step 5.
|
||||
void MenuManager::setupStep5Callbacks() {
|
||||
if (uiManager.findButton("phoneButton")) {
|
||||
uiManager.setButtonCallback("phoneButton", [this](const std::string&) {
|
||||
openPhoneScreen();
|
||||
});
|
||||
}
|
||||
if (uiManager.findButton("journalButton")) {
|
||||
uiManager.setButtonCallback("journalButton", [this](const std::string&) {
|
||||
openJournalScreen();
|
||||
});
|
||||
}
|
||||
if (tutorialPhoneScreenOpened) uiManager.setNodeVisible("hint6a", false);
|
||||
if (tutorialJournalScreenOpened) uiManager.setNodeVisible("hint6b", false);
|
||||
}
|
||||
|
||||
void MenuManager::advanceTutorialStep() {
|
||||
std::shared_ptr<UiNode> nextRoot;
|
||||
|
||||
switch (tutorialStep) {
|
||||
case TutorialStep::Step0:
|
||||
tutorialStep = TutorialStep::Step1;
|
||||
nextRoot = hudStep1Root;
|
||||
break;
|
||||
case TutorialStep::Step1:
|
||||
tutorialStep = TutorialStep::Step2;
|
||||
nextRoot = hudStep2Root;
|
||||
break;
|
||||
case TutorialStep::Step2:
|
||||
tutorialStep = TutorialStep::Step3;
|
||||
nextRoot = hudStep3Root;
|
||||
break;
|
||||
case TutorialStep::Step3:
|
||||
tutorialStep = TutorialStep::Step4;
|
||||
nextRoot = hudStep4Root;
|
||||
break;
|
||||
default:
|
||||
return; // Step4/Step5 transitions are driven by onItemPickedUp
|
||||
}
|
||||
|
||||
if (state == GameState::Gameplay && nextRoot) {
|
||||
uiManager.replaceRoot(nextRoot);
|
||||
}
|
||||
}
|
||||
|
||||
void MenuManager::onItemPickedUp(const std::string& itemId) {
|
||||
if (tutorialStep != TutorialStep::Step4 && tutorialStep != TutorialStep::Step5) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (itemId == "phone") tutorialPhonePickedUp = true;
|
||||
if (itemId == "journal") tutorialJournalPickedUp = true;
|
||||
|
||||
if (tutorialStep == TutorialStep::Step4) {
|
||||
tutorialStep = TutorialStep::Step5;
|
||||
}
|
||||
|
||||
refreshItemPickupHud();
|
||||
}
|
||||
|
||||
void MenuManager::refreshItemPickupHud() {
|
||||
if (state != GameState::Gameplay) return;
|
||||
|
||||
std::shared_ptr<UiNode> nextRoot;
|
||||
if (tutorialPhonePickedUp && tutorialJournalPickedUp) {
|
||||
nextRoot = hudStep5abRoot;
|
||||
} else if (tutorialPhonePickedUp) {
|
||||
nextRoot = hudStep5aRoot;
|
||||
} else if (tutorialJournalPickedUp) {
|
||||
nextRoot = hudStep5bRoot;
|
||||
}
|
||||
|
||||
if (nextRoot) {
|
||||
uiManager.replaceRoot(nextRoot);
|
||||
// Register item-screen buttons and re-apply any already-completed hint visibility.
|
||||
setupStep5Callbacks();
|
||||
}
|
||||
}
|
||||
|
||||
void MenuManager::refreshQuestJournalUi() {
|
||||
visibleQuestIds.clear();
|
||||
auto quests = questJournal.getVisibleQuests();
|
||||
|
||||
Reference in new issue
Block a user