Fixing minor bugs, added about screen
This commit is contained in:
1 parent
159fac02f0
commit
b6cd17449f
11 files changed
+257
-22
No files matched your search
+3
-8
@@ -78,11 +78,6 @@ namespace ZL
|
||||
}
|
||||
|
||||
Game::~Game() {
|
||||
#ifndef EMSCRIPTEN
|
||||
// In Emscripten, SDL must stay alive across context loss/restore cycles
|
||||
// so the window remains valid when the game object is re-created.
|
||||
SDL_Quit();
|
||||
#endif
|
||||
}
|
||||
|
||||
void Game::setup() {
|
||||
@@ -586,7 +581,7 @@ namespace ZL
|
||||
gameState.locations["uni_interior"]->requestClosePhone = [this]() { menuManager.closePhoneEntirely(); };
|
||||
gameState.locations["uni_interior"]->requestReturnToMainMenu = [this]() {
|
||||
gameState.currentLocationName.clear();
|
||||
menuManager.showMainMenu();
|
||||
menuManager.showMenuAfterGameCompleted();
|
||||
};
|
||||
gameState.locations["uni_interior"]->requestSetChatUnread = [this](int idx, bool unread, const std::string& msg) {
|
||||
menuManager.setChatUnread(idx, unread, msg);
|
||||
@@ -656,7 +651,7 @@ namespace ZL
|
||||
};
|
||||
gameState.locations["uni_exterior"]->requestDarklandsTransition = [this]() { return startDarklandsTransition(); };
|
||||
gameState.locations["uni_exterior"]->requestClosePhone = [this]() { menuManager.closePhoneEntirely(); };
|
||||
gameState.locations["uni_exterior"]->requestReturnToMainMenu = [this]() { menuManager.showMainMenu(); };
|
||||
//gameState.locations["uni_exterior"]->requestReturnToMainMenu = [this]() { menuManager.showMenuAfterGameCompleted(); };
|
||||
gameState.locations["uni_exterior"]->requestSetChatUnread = [this](int idx, bool unread, const std::string& msg) {
|
||||
menuManager.setChatUnread(idx, unread, msg);
|
||||
};
|
||||
@@ -740,7 +735,7 @@ namespace ZL
|
||||
gameState.locations["location_dorm"]->requestNightDayTransition = [this](bool isNight, bool isDawn) { gameState.isNight = isNight; gameState.isDawn = isDawn; };
|
||||
gameState.locations["location_dorm"]->requestDarklandsTransition = [this]() { return startDarklandsTransition(); };
|
||||
gameState.locations["location_dorm"]->requestClosePhone = [this]() { menuManager.closePhoneEntirely(); };
|
||||
gameState.locations["location_dorm"]->requestReturnToMainMenu = [this]() { menuManager.showMainMenu(); };
|
||||
//gameState.locations["location_dorm"]->requestReturnToMainMenu = [this]() { menuManager.showMenuAfterGameCompleted(); };
|
||||
gameState.locations["location_dorm"]->requestSetChatUnread = [this](int idx, bool unread, const std::string& msg) {
|
||||
menuManager.setChatUnread(idx, unread, msg);
|
||||
};
|
||||
|
||||
+97
-1
@@ -16,6 +16,9 @@ namespace ZL {
|
||||
static const std::string EMPTY_LANGUAGE_RU = u8"(пусто)";
|
||||
static const std::string EMPTY_LANGUAGE_EN = "(empty)";
|
||||
|
||||
static const std::string BACK_TO_MAIN_MENU_RU = u8"Вернуться в меню";
|
||||
static const std::string BACK_TO_MAIN_MENU_EN = "Back to Main Menu";
|
||||
|
||||
|
||||
static int questStatusPriority(Quest::QuestStatus status) {
|
||||
switch (status) {
|
||||
@@ -385,6 +388,81 @@ namespace ZL {
|
||||
#endif
|
||||
}
|
||||
|
||||
void MenuManager::showMenuAfterGameCompleted() {
|
||||
//gameState_.currentLocationName.clear();
|
||||
|
||||
audioPlayer_.crossFadeMusicAsync("audio/main menu final.ogg");
|
||||
|
||||
uiState_ = GameUiState::MainMenu;
|
||||
uiManager.clearMenuStack();
|
||||
topUiManager.replaceRoot(nullptr);
|
||||
topUiManager.clearMenuStack();
|
||||
uiManager.replaceRoot(mainMenuRoot);
|
||||
|
||||
|
||||
|
||||
uiManager.setTextButtonCallback("menuStartButton", [this](const std::string&) {
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
enterGameplay();
|
||||
|
||||
});
|
||||
uiManager.setTextButtonCallback("menuAboutButton", [this](const std::string&) {
|
||||
showAboutScreen();
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
});
|
||||
uiManager.setTextButtonCallback("menuCreditsButton", [this](const std::string&) {
|
||||
showCreditsScreen();
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
});
|
||||
uiManager.setTextButtonCallback("menuSettingsButton", [this](const std::string&) {
|
||||
showSettingsScreen();
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
});
|
||||
uiManager.setTextButtonCallback("menuLanguageButton", [this](const std::string&) {
|
||||
showLanguageScreen();
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
});
|
||||
uiManager.setTextButtonCallback("menuLoadButton", [this](const std::string&) {
|
||||
showLoadGameScreen();
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
});
|
||||
|
||||
|
||||
|
||||
#ifndef EMSCRIPTEN
|
||||
uiManager.setTextButtonCallback("menuExitButton", [this](const std::string&) {
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
Environment::exitGameLoop = true;
|
||||
});
|
||||
#else
|
||||
uiManager.setNodeVisible("menuExitButton", false);
|
||||
#endif
|
||||
|
||||
//Now open the about screen:
|
||||
uiManager.pushMenuFromSavedRoot(aboutScreenRoot);
|
||||
uiManager.findTextButton("aboutBackButton")->text = (g_currentLanguage == Language::Russian) ? BACK_TO_MAIN_MENU_RU : BACK_TO_MAIN_MENU_EN;
|
||||
uiManager.setTextButtonCallback("aboutBackButton", [this](const std::string&) {
|
||||
uiManager.popMenu();
|
||||
uiManager.updateAllLayouts();
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
});
|
||||
|
||||
uiManager.setTextButtonCallback("steamButton", [this](const std::string&) {
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
SDL_OpenURL("https://store.steampowered.com/app/4801010/");
|
||||
});
|
||||
|
||||
uiManager.setTextButtonCallback("telegramButton", [this](const std::string&) {
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
SDL_OpenURL("https://telegram.me/fishrungames");
|
||||
});
|
||||
|
||||
uiManager.setTextButtonCallback("discordButton", [this](const std::string&) {
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
SDL_OpenURL("https://discord.gg/S8jgGHXjw");
|
||||
});
|
||||
}
|
||||
|
||||
void MenuManager::showAboutScreen() {
|
||||
uiManager.pushMenuFromSavedRoot(aboutScreenRoot);
|
||||
uiManager.setTextButtonCallback("aboutBackButton", [this](const std::string&) {
|
||||
@@ -392,6 +470,21 @@ namespace ZL {
|
||||
uiManager.updateAllLayouts();
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
});
|
||||
|
||||
uiManager.setTextButtonCallback("steamButton", [this](const std::string&) {
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
SDL_OpenURL("https://store.steampowered.com/app/4801010/");
|
||||
});
|
||||
|
||||
uiManager.setTextButtonCallback("telegramButton", [this](const std::string&) {
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
SDL_OpenURL("https://telegram.me/fishrungames");
|
||||
});
|
||||
|
||||
uiManager.setTextButtonCallback("discordButton", [this](const std::string&) {
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
SDL_OpenURL("https://discord.gg/S8jgGHXjw");
|
||||
});
|
||||
}
|
||||
|
||||
void MenuManager::showCreditsScreen() {
|
||||
@@ -402,6 +495,7 @@ namespace ZL {
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
});
|
||||
|
||||
|
||||
uiManager.stopAnimationOnNode("creditsLinearLayout", "slowScroll");
|
||||
uiManager.resetAnimationOnNode("creditsLinearLayout");
|
||||
uiManager.startAnimationOnNode("creditsLinearLayout", "slowScroll");
|
||||
@@ -510,7 +604,7 @@ namespace ZL {
|
||||
void MenuManager::showSettingsGraphicsScreen() {
|
||||
uiManager.pushMenuFromSavedRoot(settingsGraphicsScreenRoot);
|
||||
uiManager.setTextButtonCallback("settingsBackButton", [this](const std::string&) {
|
||||
//saveSettings();
|
||||
saveSettings();
|
||||
uiManager.popMenu();
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
});
|
||||
@@ -550,6 +644,8 @@ namespace ZL {
|
||||
Environment::setFullscreen(!Environment::isFullscreen);
|
||||
refreshFullscreenToggle();
|
||||
audioPlayer_.playSoundAsync("audio/751089__smallconfusion__mechanical-plastic-click-11.ogg");
|
||||
uiManager.updateAllLayouts();
|
||||
topUiManager.updateAllLayouts();
|
||||
});
|
||||
|
||||
uiManager.setTextButtonCallback("shadowToggleButton", [this, refreshShadowToggle](const std::string&) {
|
||||
|
||||
@@ -53,6 +53,7 @@ namespace ZL {
|
||||
bool isQuestJournalOpen() const { return uiState_ == GameUiState::QuestJournal; }
|
||||
|
||||
void showMainMenu();
|
||||
void showMenuAfterGameCompleted();
|
||||
bool isMainMenuOpen() const { return uiState_ == GameUiState::MainMenu; }
|
||||
|
||||
void openPhoneScreen();
|
||||
|
||||
@@ -356,8 +356,10 @@ int main(int argc, char* argv[]) {
|
||||
#endif
|
||||
}
|
||||
|
||||
//ZL::logger() << "Quitting step 1: " << std::endl;
|
||||
// Явное уничтожение объекта игры ДО завершения работы Steamworks
|
||||
delete g_game;
|
||||
//ZL::logger() << "Quitting step 2: " << std::endl;
|
||||
g_game = nullptr;
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
@@ -377,19 +379,31 @@ int main(int argc, char* argv[]) {
|
||||
}
|
||||
}
|
||||
|
||||
//ZL::logger() << "Quitting step 3: " << std::endl;
|
||||
|
||||
#ifdef STEAMSDK
|
||||
// Деинициализация Steamworks происходит только тогда, когда все объекты игры гарантированно уничтожены
|
||||
SteamAPI_Shutdown();
|
||||
#endif
|
||||
//ZL::logger() << "Quitting step 4: " << std::endl;
|
||||
|
||||
// Очистка ресурсов SDL
|
||||
if (ctx) {
|
||||
//ZL::logger() << "Quitting step 5: " << std::endl;
|
||||
SDL_GL_DeleteContext(ctx);
|
||||
}
|
||||
//ZL::logger() << "Quitting step 6: " << std::endl;
|
||||
if (ZL::Environment::window) {
|
||||
//ZL::logger() << "Quitting step 7: " << std::endl;
|
||||
SDL_DestroyWindow(ZL::Environment::window);
|
||||
}
|
||||
//ZL::logger() << "Quitting step 8: " << std::endl;
|
||||
#ifndef EMSCRIPTEN
|
||||
// In Emscripten, SDL must stay alive across context loss/restore cycles
|
||||
// so the window remains valid when the game object is re-created.
|
||||
SDL_Quit();
|
||||
#endif
|
||||
//ZL::logger() << "Quitting step 9: " << std::endl;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
Reference in new issue
Block a user