public ChessWebApiResult( ChessGame game, Colours toMove, string message, params LocatedItem <ChessPieceEntity>[] items ) { Game = game; Board = ChessGameConvert.Serialise(game); BoardText = new ChessBoardBuilder().FromChessGame(game).ToTextBoard(); Moves = items.SelectMany(i => i.Paths.FlattenMoves()); AvailableMoves = ToMoveList(items); WhoseTurn = toMove.ToString(); Message = message; }
public Task <ChessWebApiResult> PlayMoveAsync(string board, string move) { return(Task.Run(() => { var game = ChessGameConvert.Deserialise(board); var msg = game.Move(move); var items = game.BoardState.GetItems((int)game.CurrentPlayer).ToArray(); var result = new ChessWebApiResult { Board = ChessGameConvert.Serialise(game), BoardText = new ChessBoardBuilder().FromChessGame(game).ToTextBoard(), AvailableMoves = ToMoveList(game, items), WhoseTurn = game.CurrentPlayer.ToString(), Message = msg }; return result; })); }
public void Should_serialise_and_deserialise_to_68char_format() { var chessGame = ChessFactory.NewChessGame(); var actualNewBoard = ChessGameConvert.Serialise(chessGame); var expectedNewBoard = "rnbqkbnrpppppppp................................PPPPPPPPRNBQKBNR" // The board + "W" // Whose turn + "0000"; // White Queen/King Black Queen/King castle availability Assert.That(actualNewBoard, Is.EqualTo(expectedNewBoard)); var actualGame = ChessGameConvert.Deserialise(actualNewBoard); var actualGameAsString = new ChessBoardBuilder().FromChessGame(actualGame).ToTextBoard(); var expectedGameAsString = new ChessBoardBuilder().FromChessGame(chessGame).ToTextBoard(); Assert.That(actualGameAsString, Is.EqualTo(expectedGameAsString)); Console.WriteLine(actualGameAsString); }