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(); }