示例#1
0
        public PlayerFsm(Game game, DungeonTiles.Player player)
        {
            Game   = game;
            Player = player;

            IdlePlayerState = new PlayerState(this);

            // Let the game know the players state changed.
            OnNewState.AddListener((state) =>
            {
                GameEvents.OnPlayerStateChange.Invoke(player, (PlayerState)state);
            });

            GameEvents.OnNewTurnPhase.AddListener((newPlayer, turnPhase) =>
            {
                // Check if this is the player we're managing.
                if (newPlayer != player)
                {
                    SetState(IdlePlayerState);
                    return;
                }

                if (turnPhase == TurnPhase.Hero)
                {
                    SetState(new HeroPhaseState(this));
                }
                else
                {
                    SetState(IdlePlayerState);
                }
            });
        }
示例#2
0
        private void UpdateState(TimerState newState)
        {
            if (LastState == newState)
            {
                return;
            }

            LastState = newState;

            if (newState != TimerState.SavingEnabled)
            {
                CurrentTime = 0;
            }

            if (newState == TimerState.WaitingForProject)
            {
                NotifiedIfProjectNeverSaved = false;
            }

            OnNewState?.Invoke(this, newState);
        }
 public void UpdateState(State newState)
 {
     OnBeforeNewState?.Invoke();
     CurrentState = newState;
     OnNewState?.Invoke(newState);
 }