public GameState(Game game, GameStateManager manager)
     : base(game)
 {
     StateManager = manager;
     childComponents = new List<GameComponent>();
     tag = this;
 }
 public void PushState(GameState newState)
 {
     drawOrder += drawOrderInc;
     newState.DrawOrder = drawOrder;
     AddState(newState);
     if (OnStateChange != null)
         OnStateChange(this, null);
 }
 public void ChangeState(GameState newState)
 {
     while (gameStates.Count > 0)
         RemoveState();
     newState.DrawOrder = startDrawOrder;
     drawOrder = startDrawOrder;
     AddState(newState);
     if (OnStateChange != null)
         OnStateChange(this, null);
 }
 private void AddState(GameState newState)
 {
     gameStates.Push(newState);
     Game.Components.Add(newState);
     OnStateChange += newState.StateChange;
 }