diff --git a/sources/Models/GameState.hpp b/sources/Models/GameState.hpp index b3d506be..a87f3c95 100644 --- a/sources/Models/GameState.hpp +++ b/sources/Models/GameState.hpp @@ -31,6 +31,9 @@ namespace BBM }; + //! @brief The scene before the actual one. Used for back buttons. + SceneID previousScene = SplashScreen; + //! @brief The currently loaded scene SceneID currentScene = SplashScreen; @@ -38,6 +41,6 @@ namespace BBM SceneID nextScene = SplashScreen; //! @brief The list of loaded scenes. - std::unordered_map> _loadedScenes = {}; + std::unordered_map> loadedScenes = {}; }; } \ No newline at end of file diff --git a/sources/Runner/Runner.cpp b/sources/Runner/Runner.cpp index e554e14d..5c5b8273 100644 --- a/sources/Runner/Runner.cpp +++ b/sources/Runner/Runner.cpp @@ -74,13 +74,14 @@ namespace BBM if (gameState.nextScene == gameState.currentScene) return; if (gameState.nextScene == GameState::SceneID::ScoreScene) { - gameState._loadedScenes[GameState::SceneID::ScoreScene] = Runner::loadScoreScene(*engine.getScene()); + gameState.loadedScenes[GameState::SceneID::ScoreScene] = Runner::loadScoreScene(*engine.getScene()); for (auto &[_, component]: engine.getScene()->view()) { component.fastClick = false; } } - gameState._loadedScenes[gameState.currentScene] = engine.getScene(); - engine.changeScene(gameState._loadedScenes[gameState.nextScene]); + gameState.loadedScenes[gameState.currentScene] = engine.getScene(); + engine.changeScene(gameState.loadedScenes[gameState.nextScene]); + gameState.previousScene = gameState.currentScene; gameState.currentScene = gameState.nextScene; } @@ -150,14 +151,14 @@ namespace BBM void Runner::loadScenes() { - gameState._loadedScenes[GameState::SceneID::MainMenuScene] = loadMainMenuScene(); - gameState._loadedScenes[GameState::SceneID::SettingsScene] = loadSettingsMenuScene(); - gameState._loadedScenes[GameState::SceneID::PauseMenuScene] = loadPauseMenuScene(); - gameState._loadedScenes[GameState::SceneID::TitleScreenScene] = loadTitleScreenScene(); - gameState._loadedScenes[GameState::SceneID::CreditScene] = loadCreditScene(); - gameState._loadedScenes[GameState::SceneID::SplashScreen] = loadSplashScreenScene(); - gameState._loadedScenes[GameState::SceneID::LobbyScene] = loadLobbyScene(); - gameState._loadedScenes[GameState::SceneID::HowToPlayScene] = loadHowToPlayScene(); + gameState.loadedScenes[GameState::SceneID::MainMenuScene] = loadMainMenuScene(); + gameState.loadedScenes[GameState::SceneID::SettingsScene] = loadSettingsMenuScene(); + gameState.loadedScenes[GameState::SceneID::PauseMenuScene] = loadPauseMenuScene(); + gameState.loadedScenes[GameState::SceneID::TitleScreenScene] = loadTitleScreenScene(); + gameState.loadedScenes[GameState::SceneID::CreditScene] = loadCreditScene(); + gameState.loadedScenes[GameState::SceneID::SplashScreen] = loadSplashScreenScene(); + gameState.loadedScenes[GameState::SceneID::LobbyScene] = loadLobbyScene(); + gameState.loadedScenes[GameState::SceneID::HowToPlayScene] = loadHowToPlayScene(); } int Runner::run() @@ -167,7 +168,7 @@ namespace BBM Runner::addSystems(wal); Runner::enableRaylib(wal); Runner::loadScenes(); - wal.changeScene(Runner::gameState._loadedScenes[GameState::SceneID::SplashScreen]); + wal.changeScene(Runner::gameState.loadedScenes[GameState::SceneID::SplashScreen]); wal.run(Runner::updateState, Runner::gameState); return 0; } diff --git a/sources/Runner/SettingsMenuScene.cpp b/sources/Runner/SettingsMenuScene.cpp index 1fd24c48..9c0975bc 100644 --- a/sources/Runner/SettingsMenuScene.cpp +++ b/sources/Runner/SettingsMenuScene.cpp @@ -207,7 +207,7 @@ namespace BBM .addComponent("assets/buttons/button_back.png") .addComponent([](WAL::Entity &entity, WAL::Wal &) { - gameState.nextScene = BBM::GameState::SceneID::MainMenuScene; + gameState.nextScene = gameState.previousScene; }) .addComponent([](WAL::Entity &entity, WAL::Wal &) { diff --git a/sources/System/Lobby/LobbySystem.cpp b/sources/System/Lobby/LobbySystem.cpp index b36b6196..b29b3770 100644 --- a/sources/System/Lobby/LobbySystem.cpp +++ b/sources/System/Lobby/LobbySystem.cpp @@ -280,7 +280,7 @@ namespace BBM }); playerCount++; } - Runner::gameState._loadedScenes[GameState::SceneID::GameScene] = scene; + Runner::gameState.loadedScenes[GameState::SceneID::GameScene] = scene; Runner::gameState.nextScene = BBM::GameState::SceneID::GameScene; wal.getSystem().unloadLobby(); }