private void PerformMove(Move move, ChessPiece defender, ChessPiece piece) { if (FitsEnPassantCriteria(move, defender, piece)) { PerformEnPassant(move); } if (FitsCastleCriteria(move, piece)) { MoveRookForCastle(move); } if (defender != null) { if (piece.Team == Team.Dark) Game.DarkScore += defender.ScoreValue; if (piece.Team == Team.Light) Game.LightScore += defender.ScoreValue; } piece.Move(_board.Squares, move); IncrementMoveData(move); }