コード例 #1
0
        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);
        }
コード例 #2
0
 public override Style VisitMoveSyntax(PgnMoveSyntax node, PgnEditor pgnEditor)
 => pgnEditor.Styles[node.IsUnrecognizedMove ? errorSymbolStyleIndex : moveTextStyleIndex];
コード例 #3
0
 public virtual void VisitMoveSyntax(PgnMoveSyntax node) => DefaultVisit(node);
コード例 #4
0
ファイル: PgnTests.cs プロジェクト: PenguinF/sandra-three
 public override IGreenPgnSymbol VisitMoveSyntax(PgnMoveSyntax node) => node.Green;