예제 #1
0
    public PlayerFsm(PlayerTurn playerTurnState, PlayCard playCardState, EndedTurn endTurnState, Stands standState,
                     OtherPlayerTurn otherPlayerTurn)
    {
        playerTurnState.AddTransition(PlayerFSMTransitions.PlayCard, PlayerFSMStates.PlayCard);
        playerTurnState.AddTransition(PlayerFSMTransitions.EndTurn, PlayerFSMStates.EndTurn);
        playerTurnState.AddTransition(PlayerFSMTransitions.Stand, PlayerFSMStates.Stand);
        AddState(playerTurnState);

        playCardState.AddTransition(PlayerFSMTransitions.PlayerTurn, PlayerFSMStates.PlayerTurn);
        AddState(playCardState);

        endTurnState.AddTransition(PlayerFSMTransitions.PassControllToOtherPlayer, PlayerFSMStates.OtherPlayerTurn);
        endTurnState.AddTransition(PlayerFSMTransitions.PlayerTurn, PlayerFSMStates.PlayerTurn);
        AddState(endTurnState);

        standState.AddTransition(PlayerFSMTransitions.PassControllToOtherPlayer, PlayerFSMStates.OtherPlayerTurn);
        AddState(standState);

        otherPlayerTurn.AddTransition(PlayerFSMTransitions.PlayerTurn, PlayerFSMStates.PlayerTurn);
        otherPlayerTurn.AddTransition(PlayerFSMTransitions.Stand, PlayerFSMStates.Stand);
        AddState(otherPlayerTurn);
    }
예제 #2
0
 protected virtual void OnEndedTurn(StartOrEndTurnEventArgs e)
 {
     EndedTurn?.Invoke(this, e);
 }