public static Game CreateGame(this PgnEditor pgnEditor, PgnGameSyntax gameSyntax) { var game = new Game(); foreach (PgnPlySyntax ply in gameSyntax.PlyList.Plies) { // For now, invalidate the remainder of the game if seeing a null or unrecognized move. if (ply.Move == null) { break; } PgnMoveSyntax moveSyntax = ply.Move.PlyContentNode.ContentNode; if (moveSyntax.IsUnrecognizedMove) { break; } var sideToMove = game.SideToMove; MoveInfo moveInfo = GetMoveInfo(game, pgnEditor.GetTextRange(moveSyntax.AbsoluteStart, moveSyntax.Length), sideToMove); game.TryMakeMove(ref moveInfo, true); // Also invalidate on illegal move. if (sideToMove == game.SideToMove) { break; } } return(game); }
public override Style VisitMoveSyntax(PgnMoveSyntax node, PgnEditor pgnEditor) => pgnEditor.Styles[node.IsUnrecognizedMove ? errorSymbolStyleIndex : moveTextStyleIndex];
public virtual void VisitMoveSyntax(PgnMoveSyntax node) => DefaultVisit(node);
public override IGreenPgnSymbol VisitMoveSyntax(PgnMoveSyntax node) => node.Green;