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