public void PushState(GameState newState)
        {
            drawOrder += drawOrderInc;
            newState.DrawOrder = drawOrder;

            AddState(newState);

            if (OnStateChange != null)
            {
                OnStateChange(this, EventArgs.Empty);
            }
        }
 private void AddState(GameState newState)
 {
     GameStates.Push(newState);
     Game.Components.Add(newState);
     OnStateChange += newState.StateChange;
 }
        public void ChangeState(GameState newState)
        {
            while (GameStates.Count > 0)
            {
                RemoveState();
            }

            newState.DrawOrder = startDrawOrder;
            drawOrder = startDrawOrder;

            AddState(newState);

            if (OnStateChange != null)
            {
                OnStateChange(this, EventArgs.Empty);
            }
        }