Files
gameBase/stateManager.cpp
T
2021-12-05 17:16:54 +02:00

50 lines
1018 B
C++

#include "stateManager.h"
namespace gameBase {
void StateManager::update(){
for(int i = 0; i < appStates.size(); i++)
appStates[i]->update();
}
void StateManager::attachAppState(AbstractAppState *a){
appStates.push_back(a);
a->onAttached();
}
void StateManager::dettachAppState(AbstractAppState *a){
int id=-1;
for(int i = 0; i < appStates.size() && id == -1; i++)
if(appStates[i] == a)
id = i;
if(id != -1){
a->onDettached();
appStates.erase(appStates.begin() + id);
}
}
void StateManager::dettachAppStateByType(int type){
int id = -1;
for(int i = 0; i < appStates.size() && id == -1; i++)
if(appStates[i]->getType() == type)
id = i;
if(id != -1){
appStates[id]->onDettached();
appStates.erase(appStates.begin() + id);
}
}
AbstractAppState* StateManager::getAppStateByType(int type){
AbstractAppState *a = nullptr;
for(int i = 0; i < appStates.size() && !a; i++)
if(appStates[i]->getType() == type)
a = appStates[i];
return a;
}
}