示例#1
0
        public override void Tick()
        {
            if (!NextState.Equals(FreeSOMazeStates.Invalid))
            {
                var state = NextState;
                NextState = FreeSOMazeStates.Invalid;
                GotoState(state);
            }
            switch (GameState)
            {
            case FreeSOMazeStates.LoadingMaze:
            {
                if (++Tock > 30)
                {
                    Tock = 0;
                    if (++MazeTimeRemaining >= GLOBAL_COOLDOWN)
                    {
                        EnqueueGotoState(FreeSOMazeStates.NavigatingMaze);
                    }
                }
                break;
            }

            case FreeSOMazeStates.NavigatingMaze:
            {
                if (++Tock > 30)
                {
                    Tock = 0;
                    BroadcastSharedEvent("FreeSOMaze_time", BitConverter.GetBytes(--MazeTimeRemaining));
                    if (MazeTimeRemaining <= 0)
                    {
                        DoTimeExpired();
                    }
                    else
                    {
                        if (CharismaPlayer != null)
                        {
                            CharismaPlayer.Cooldown++;
                        }
                        if (LogicPlayer != null)
                        {
                            LogicPlayer.Cooldown++;
                        }
                    }
                }
                break;
            }

            case FreeSOMazeStates.Gameover:
            {
                if (++Tock > 30)
                {
                    Tock = 0;

                    if (++MazeTimeRemaining >= GLOBAL_COOLDOWN * 2)
                    {
                        EnqueueGotoState(FreeSOMazeStates.Lobby);
                    }
                    else
                    {
                        if (LogicPlayer != null && ++LogicPlayer.Cooldown >= GLOBAL_COOLDOWN)
                        {
                            LogicPlayer.ProcessPayout();
                        }
                        if (CharismaPlayer != null && ++CharismaPlayer.Cooldown >= GLOBAL_COOLDOWN)
                        {
                            CharismaPlayer.ProcessPayout();
                        }
                    }
                }
                break;
            }
            }
            base.Tick();
        }