public override string ToString() { if (IsCastling) { if (ToSquare.File == File.G) { return("0-0"); } if (ToSquare.File == File.C) { return("0-0-0"); } throw new ApplicationException("Invalid form of castling"); } if (ScoreInfo.HasFlag(ScoreInfo.StaleMate)) { return("½-½"); //todo, text should be added after the move } var cap = Capture != null ? "x" : ""; var checkormate = ScoreInfo.HasFlag(ScoreInfo.Mate) ? "#" : IsCheck ? "+" : ""; var piece = !(Piece is Pawn) ? Piece.Char.ToString() : ""; if (Piece is Pawn && Capture != null) { piece = FromSquare.File.ToString().ToLower(); } return($"{piece}{cap}{ToSquare}{checkormate}"); }