//StateManager.cpp // #include "StateManager.h" #include "GameState.h" namespace Framework { StateManager* StateManager::mInstance = 0; /** * Function: Constructor * Purpose: **/ StateManager::StateManager() { } /** * Function: Destructor * Purpose: **/ StateManager::~StateManager() { } /** * Function: LoadState * Purpose: Loads a State onto the Stack and calls its initialize function\ **/ void StateManager::LoadState(GameState* state) { state->Initalize(); mStates.push_state(state); } /** * Function: DestroyState * Purpose: Destroys the state on top of the stack **/ GameState* StateManager::DestroyState() { GameState* state = 0; if (mStates.size() > 0) { state = mStates[mStates.size()-1]; mStates.pop_back(); state->Shutdown(); } return state; } /** * Function: Destory All * Purpose: Removes all states from stack **/ void StateManager::DestroyAll() { while(DestroyState()); } /** * Function: Update * Purpose: **/ bool StateManager::Update() { if (mStates.size() > 0) return mStates[mStates.size()-1]->Update(); else return false; } /** * Function: Render * Purpose: **/ void StateManager::Render() { if(mStates.size() > 0) mStates[mStates.size()-1]->Render(); } /** * Function: GetInstance * Purpose: **/ StateManager* StateManager::GetInstance() { if(mInstance == 0) mInstance = new StateManager(); return mInstance; } }