private static TicTacToeState RootReducer(TicTacToeState state, IAction action)
 {
     Debug.Log($"<b>Action dispatched:</b>\n\t{action}");
     return(action switch
     {
         TileClickedAction tileClicked => TileClickedReducer.Reduce(state, tileClicked),
         _ => state
     });
示例#2
0
        public static TicTacToeState Reduce(TicTacToeState state, TileClickedAction action)
        {
            var newBoard   = NextBoard(state.Board, state.CurrentPlayer, action.Location);
            var winner     = DetermineWinner(newBoard);
            var gameOver   = winner != WinState.None;
            var nextPlayer = NextPlayer(state.CurrentPlayer, gameOver);

            return(state with {
                Board = newBoard, CurrentPlayer = nextPlayer, Winner = winner
            });
        }