Ejemplo n.º 1
0
        /// <summary>
        /// Undo the movement itself that would put in check
        /// </summary>
        /// <param name="piece">Current piece</param>
        /// <param name="capturedPiece">Captured piece</param>
        /// <param name="origin">Origin of current piece</param>
        private void UndoMovement(Position origin, Position target, Piece captured)
        {
            Piece piece = Board.RemovePiece(target);

            piece.DecrementMovements();
            StringBuilder text      = new StringBuilder();
            Position      originAux = null;

            if (captured != null)
            {
                text.AppendLine("Undo captured");
                text.AppendLine(string.Concat("Captured Piece: ", captured.GetType()));
                text.AppendLine(string.Concat("Color: ", captured.Color.ToString()));
                if (captured != EnableEnPassant)
                {
                    Board.PutPiece(captured, target);
                    text.AppendLine(string.Concat("Origin ChessPosition: ", origin.ToChessPosition().ToString(), " Origin CanvasPosition(Column, Row): ", origin.Column, ", ", origin.Row));
                    CapturedPieces.Remove(captured);
                }
                else
                {
                    originAux = new Position(origin.Row, target.Column);
                    Board.PutPiece(captured, originAux);
                    CapturedPieces.Remove(captured);
                    text.AppendLine(string.Concat("Origin ChessPosition: ", originAux.ToChessPosition().ToString(), " Origin CanvasPosition(Column, Row): ", originAux.Column, ", ", originAux.Row));
                }

                text.AppendLine(string.Concat("Turn: ", TotalMoves));
                text.AppendLine(string.Concat("Date: ", DateTime.Now.ToShortDateString(), " Time: ", DateTime.Now.ToShortTimeString()));
                text.AppendLine();
            }

            Board.PutPiece(piece, origin);

            text.AppendLine(string.Concat("Undo Piece: ", captured.GetType()));
            text.AppendLine(string.Concat("Color: ", captured.Color.ToString()));
            text.AppendLine(string.Concat("Origin ChessPosition: ", origin.ToChessPosition().ToString(), " Origin CanvasPosition(Column, Row): ", origin.Column, ", ", origin.Row));
            text.AppendLine(string.Concat("Turn: ", TotalMoves));
            text.AppendLine(string.Concat("Date: ", DateTime.Now.ToShortDateString(), " Time: ", DateTime.Now.ToShortTimeString()));

            WriteLog.ChecksLogs(text);
        }