Files
PinPoint/app/src/main/cpp/my_gl_app/GameStateManager.cpp
T

43 lines
1.1 KiB
C++

#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();
}
}