public byte GetInstanceNumber(Piece piece, SquareFlag square) { if (piece.Colour == Colour.White) { if (piece.Type == PieceType.Pawn) { return(WhitePawns.GetInstanceNumber(square)); } if (piece.Type == PieceType.Rook) { return(WhiteRooks.GetInstanceNumber(square)); } if (piece.Type == PieceType.Knight) { return(WhiteKnights.GetInstanceNumber(square)); } if (piece.Type == PieceType.Bishop) { return(WhiteBishops.GetInstanceNumber(square)); } if (piece.Type == PieceType.Queen) { return(WhiteQueens.GetInstanceNumber(square)); } if (piece.Type == PieceType.King) { return(WhiteKing.GetInstanceNumber(square)); } } else { if (piece.Type == PieceType.Pawn) { return(BlackPawns.GetInstanceNumber(square)); } if (piece.Type == PieceType.Rook) { return(BlackRooks.GetInstanceNumber(square)); } if (piece.Type == PieceType.Knight) { return(BlackKnights.GetInstanceNumber(square)); } if (piece.Type == PieceType.Bishop) { return(BlackBishops.GetInstanceNumber(square)); } if (piece.Type == PieceType.Queen) { return(BlackQueens.GetInstanceNumber(square)); } if (piece.Type == PieceType.King) { return(BlackKing.GetInstanceNumber(square)); } } return(0); }
public void UnapplyMove(Move move) { Square pawn = Squares[move.To.X, move.To.Y]; Color pawnColor = pawn.Color; #if DEBUG if (pawnColor == Color.None) { Console.WriteLine("Invalid move"); return; } #endif if (move.IsEpCapture) { Square to = move.To; int toX = to.X; int toY = to.Y; if (pawnColor == Color.Black) { Square tPawn = Squares[toX, toY + 1]; tPawn.Color = Color.White; WhitePawns.Add(tPawn); BlackPawns.Remove(pawn); pawn.Color = Color.None; } else { Square tPawn = Squares[toX, toY - 1]; tPawn.Color = Color.Black; BlackPawns.Add(tPawn); WhitePawns.Remove(pawn); pawn.Color = Color.None; } } else if (move.IsCapture) { if (pawnColor == Color.White) { pawn.Color = Color.Black; BlackPawns.Add(pawn); WhitePawns.Remove(pawn); } else { pawn.Color = Color.White; WhitePawns.Add(pawn); BlackPawns.Remove(pawn); } } else { RemovePawn(pawn); pawn.Color = Color.None; } Square from = move.From; from.Color = pawnColor; AddPawn(from); }
public void AddPawn(Square pawn) { if (pawn.Color == Color.White) { WhitePawns.Add(pawn); } else { BlackPawns.Add(pawn); } }
private void RemovePawn(Square pawn) { if (pawn.Color == Color.White) { WhitePawns.Remove(pawn); } else { BlackPawns.Remove(pawn); } }