public string Generator() { StringBuilder sb = new StringBuilder(7); if (this.Actions.Contains(Enums.Action.KingSideCastling)) { sb.Append("O-O"); } else if (this.Actions.Contains(Enums.Action.QueenSideCastling)) { sb.Append("O-O-O"); } else { sb.Append(this.TargetPosition.ToString()); if (this.Actions.Contains(Enums.Action.PromoteToQueen)) { sb.Append("=Q"); } else if (this.Actions.Contains(Enums.Action.PromoteToKnight)) { sb.Append("=N"); } else if (this.Actions.Contains(Enums.Action.PromoteToBishop)) { sb.Append("=B"); } else if (this.Actions.Contains(Enums.Action.PromoteToRook)) { sb.Append("=R"); } if (this.Actions.Contains(Enums.Action.Capture) || this.Actions.Contains(Enums.Action.EnPassant)) { sb.Insert(0, 'x'); } if (!this.SourceChar.Equals('?')) { sb.Insert(0, this.SourceChar); } sb.Insert(0, Enums.FromPieceTypeToStep(this.PieceType)); } if (this.Actions.Contains(Enums.Action.Check)) { sb.Append('+'); } if (this.GameSide == Enums.GameSide.White) { sb.Insert(0, ' ').Insert(0, '.').Insert(0, this.Number.ToString()); } return(sb.ToString()); }