#include "GameStateManager.h" #include "StateFactories.h" GameStateManager& GameStateManager::Instance() { static GameStateManager instance; return instance; } void GameStateManager::RequestStateChange(StateID id) { hasPendingChange = true; pendingState = id; } void GameStateManager::Update() { if (hasPendingChange) { hasPendingChange = false; if (currentState) { currentState->Exit(); } switch (pendingState) { case StateID::MainMenu: currentState = CreateMainMenuState(); break; case StateID::Settings: currentState = CreateSettingsState(); break; case StateID::Menu1: currentState = CreateMenu1State(); break; case StateID::Menu2: currentState = CreateMenu2State(); break; case StateID::Menu3: currentState = CreateMenu3State(); break; } currentState->Enter(); } if (currentState) { currentState->Update(); } } void GameStateManager::Render() { if (currentState) { currentState->Render(); } }