public void UndoMove(Position origin, Position destiny, ChessPiece capturedPiece) { ChessPiece cp = Chessboard.RemoveChessPiece(destiny); cp.DecrementQuantityMovements(); if (capturedPiece != null) { Chessboard.ChessPiecePosition(capturedPiece, destiny); RemovedChessPieces.Remove(capturedPiece); } Chessboard.ChessPiecePosition(cp, origin); // #SpecialMove Small Castle if (cp is King && destiny.Column == origin.Column + 2) { Position originR = new Position(origin.Row, origin.Column + 3); Position destinyR = new Position(origin.Row, origin.Column + 1); ChessPiece r = Chessboard.RemoveChessPiece(destinyR); r.DecrementQuantityMovements(); Chessboard.ChessPiecePosition(r, originR); } // #SpecialMove Big Castle if (cp is King && destiny.Column == origin.Column - 2) { Position originR = new Position(origin.Row, origin.Column - 4); Position destinyR = new Position(origin.Row, origin.Column - 1); ChessPiece r = Chessboard.RemoveChessPiece(destinyR); r.DecrementQuantityMovements(); Chessboard.ChessPiecePosition(r, originR); } // #SpecialMove En Passant if (cp is Pawn) { if (origin.Column != destiny.Column && capturedPiece == VulnerableEnPassant) { ChessPiece pawn = Chessboard.RemoveChessPiece(destiny); Position posP; if (cp.Color == Color.White) { posP = new Position(3, destiny.Column); } else { posP = new Position(4, destiny.Column); } Chessboard.ChessPiecePosition(pawn, posP); } } }
public void NewChessPiecePosition(char column, int row, ChessPiece chessPiece) { Chessboard.ChessPiecePosition(chessPiece, new ChessPosition(column, row).ToPosition()); ChessPieces.Add(chessPiece); }