public DefaultMoveExecutor(string board, string newMove, Turn turn, GameState gameState, string whiteKingPosition, string blackKingPosition, string lastMove, bool whiteCanCastleKingSide, bool whiteCanCastleQueenSide, bool blackCanCastleKingSide, bool blackCanCastleQueenSide) { FieldPosition whiteKing = FieldPosition.ParsePosition(whiteKingPosition); FieldPosition blackKing = FieldPosition.ParsePosition(blackKingPosition); this.oldState = new BoardModel(GetBoard(board), turn, gameState, whiteKing, blackKing, whiteCanCastleKingSide, whiteCanCastleQueenSide, blackCanCastleKingSide, blackCanCastleQueenSide); this.newState = new BoardModel(GetBoard(board), turn, gameState, whiteKing, blackKing, whiteCanCastleKingSide, whiteCanCastleQueenSide, blackCanCastleKingSide, blackCanCastleQueenSide); // Parse new move string[] splt = newMove.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); this.source = FieldPosition.ParsePosition(splt[0]); this.dest = FieldPosition.ParsePosition(splt[1]); if (lastMove != null) { // Parse last move splt = lastMove.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); this.lastMoveSource = FieldPosition.ParsePosition(splt[0]); this.lastMoveDest = FieldPosition.ParsePosition(splt[1]); } this.sourcePiece = this.newState.Board[source.Row, source.Col]; }
private void RollbackChanges() { this.newState = this.oldState; }