protected void RemoveInstanceCore <TInstance>(string extName)
        {
            var cell = StateStack.FirstOrDefault(p => p.InstanceType == typeof(TInstance) && p.ExtName == extName);

            if (cell != null)
            {
                StateStack.Remove(cell);
            }
        }
Пример #2
0
        public void Render(DwarfTime time)
        {
            if (Game.GraphicsDevice.IsDisposed ||
                DwarfGame.SpriteBatch.IsDisposed ||
                DwarfGame.SpriteBatch.GraphicsDevice.IsDisposed)
            {
                return;
            }

            Game.GraphicsDevice.Clear(Color.Black);

            if (CurrentState != null && CurrentState.EnableScreensaver)
            {
                ScreenSaver.Render(Game.GraphicsDevice, time);
            }

            List <GameState> removals = new List <GameState>();

            for (int i = StateStack.Count - 1; i >= 0; i--)
            {
                GameState state = StateStack[i];

                if (state != null &&
                    (state.RenderUnderneath || i == 0 ||
                     Object.ReferenceEquals(state, CurrentState) ||
                     Object.ReferenceEquals(state, NextState)))
                {
                    if (state.IsInitialized)
                    {
                        //try
                        //{
                        state.Render(time);
                        //}
                        //catch (InvalidOperationException exception)
                        //{
                        //    removals.Add(state);
                        //}
                    }
                    else if (!state.IsInitialized)
                    {
                        state.RenderUnitialized(time);
                    }
                }
            }

            foreach (var state in removals)
            {
                StateStack.Remove(state);
            }
        }
Пример #3
0
    protected override void Update()
    {
        Status.PrepareState();
        for (int i = 0; i < StateStack.Count; ++i)
        {
            StateStack[i].UpdateState();
        }

        foreach (var deletedState in DeleteStateList)
        {
            StateStack.Remove(deletedState);
        }

        if (UseCardStack.Count != 0 && !(CurrentAction is PlayerCardAction))
        {
            EntityUtil.ChangeCardAction(this, UseCardStack[0].card.CardActionName, UseCardStack[0].card.Data, UseCardStack[0].target);
            UseCardStack.RemoveAt(0);
        }
        else
        {
            CurrentAction?.UpdateAction();
        }
    }
Пример #4
0
 private void W_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
 {
     StateStack.Add(new GameState(g, GameApp));
     StateStack.Remove(this);
 }
Пример #5
0
 private void BtnQuitGame_Pressed(object sender, EventArgs e)
 {
     StateStack.Remove(this);
 }
Пример #6
0
 public void ReinsertState(GameState state)
 {
     StateStack.Remove(state);
     PushState(state);
 }
Пример #7
0
 private void Dead()
 {
     StateStack.Remove(this);
     StateStack.Add(new DeadState(G));
 }
Пример #8
0
 private void BtnTitle_Pressed(object sender, System.EventArgs e)
 {
     StateStack.Remove(this);
     StateStack.Add(new TitleState());
 }