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