public void ChangeState(AbstractState inState)
 {
     //clean up the current state
     if (states != null)
     {
         if (states.Count > 0)
         {
             states[states.Count - 1].Cleanup();
             states.RemoveAt (states.Count - 1);
         }
     }
     //store and initialize the new state
     states.Add(inState);
     states[states.Count - 1].Init();
 }
 public void ChangeState(StateManager game, AbstractState state)
 {
     game.ChangeState(state);
 }
 public void PushState(AbstractState inState)
 {
     //pause the current state
     if (states.Count > 0)
     {
         states[states.Count - 1].Pause();
     }
     //store and initialize the new state
     states.Add (inState);
     states[states.Count - 1].Init ();
 }