/// ***** Private Variables *****
// The stack of active game states
-vector<GameState*> active_States;
+static vector<GameState*> s_active_States;
// Pointers to each possible game state
-// inserted and removed from the active_States
-Running* running;
-Paused* paused;
-CreatingPolygon* creating_Polygon;
+// inserted and removed from the s_active_States
+static vector<GameState*> s_possible_States;
// true if the top state requested itself to be poped
-bool pop_State;
+static bool s_bPopState;
// pointer to a state wishing to be added
-GameState* push_State;
+static GameState* s_pPushState;
/// ***** Public Methods *****
void game::init()
{
- running = new Running();
- paused = new Paused();
- creating_Polygon = new CreatingPolygon();
-
- pop_State = false;
- push_State = NULL;
+ s_bPopState = false;
+ s_pPushState = NULL;
// create starting entities
creator::init();
+ effect::init();
- active_States.push_back(running);
+ Running* pRunning = new Running();
+ s_possible_States.push_back(pRunning);
+ s_possible_States.push_back(new Paused());
+ s_possible_States.push_back(new CreatingPolygon());
- effect::init();
+ s_active_States.push_back(pRunning);
DPF(0, "World Created");
}
void game::clean()
{
effect::clean();
-
creator::clean();
- delete creating_Polygon;
- delete paused;
- delete running;
+ for(unsigned int i=0; i < s_possible_States.size(); i++)
+ {
+ delete s_possible_States[i];
+ }
+ s_possible_States.clear();
+ s_active_States.clear();
}
void game::handleInput()
{
creator::handleInput();
- int last = active_States.size() -1;
+ int iLast = s_active_States.size() -1;
- if(active_States[last] != running && running->pushMe())
+ for(unsigned int i=0; i < s_possible_States.size(); i++)
{
- push_State = running;
- }
+ GameState* pState = s_possible_States[i];
- if(active_States[last] != paused && paused->pushMe())
- {
- push_State = paused;
- }
-
- if(active_States[last] != creating_Polygon && creating_Polygon->pushMe())
- {
- push_State = creating_Polygon;
+ if(s_active_States[iLast] != pState && pState->pushMe())
+ {
+ s_pPushState = pState;
+ }
}
for( int i = 0;
- i <= last;
+ i <= iLast;
i++ )
{
- if( i == last )
+ if( i == iLast )
{
- if(active_States[i]->popMe())
- pop_State = true;
+ if(s_active_States[i]->popMe())
+ s_bPopState = true;
else
- active_States[i]->handleInput(true);
+ s_active_States[i]->handleInput(true);
}
else
- active_States[i]->handleInput(false);
+ s_active_States[i]->handleInput(false);
}
}
-void game::update(float time_step)
+void game::update(float fTimeStep)
{
- if(pop_State)
+ if(s_bPopState)
{
- active_States.pop_back();
- pop_State = false;
+ s_active_States.pop_back();
+ s_bPopState = false;
}
- if(push_State != NULL)
+ if(s_pPushState != NULL)
{
- active_States.push_back(push_State);
- push_State = NULL;
+ s_active_States.push_back(s_pPushState);
+ s_pPushState = NULL;
}
- int last = active_States.size() -1;
+ int iLast = s_active_States.size() -1;
for( int i = 0;
- i <= last;
+ i <= iLast;
i++ )
{
- if( i == last )
- active_States[i]->update(time_step, true);
+ if( i == iLast )
+ s_active_States[i]->update(fTimeStep, true);
else
- active_States[i]->update(time_step, false);
+ s_active_States[i]->update(fTimeStep, false);
}
}
void game::draw()
{
- int last = active_States.size() -1;
+ int iLast = s_active_States.size() -1;
for( int i = 0;
- i <= last;
+ i <= iLast;
i++ )
{
- if( i == last )
- active_States[i]->draw(true);
+ if( i == iLast )
+ s_active_States[i]->draw(true);
else
- active_States[i]->draw(false);
+ s_active_States[i]->draw(false);
}
}