示例#1
0
 public void EnterVariation(IPgnReader iParser)
 {
     _states.Push(_lastNumber);
     if (_tmpStep != null)
     {
         _tmpStep.Parent = (IChessItem)_tmpStepTree;
         _tmpStepTree    = _tmpStep;
         if (_tmpStepTree.Items == null)
         {
             _tmpStepTree.Items = new Variation();
         }
         //_tmpStepTree.Items.Add(_tmpStep);
         _tmpStep = null;
     }
     else
     {
         IStepTree tmpTree = null;
         int       i       = 1;
         while (!(_tmpStepTree.Items[_tmpStepTree.Items.Count - i] is IStepTree))
         {
             i++;
         }
         tmpTree        = (IStepTree)_tmpStepTree.Items[_tmpStepTree.Items.Count - i];
         tmpTree.Parent = (IChessItem)_tmpStepTree;
         _tmpStepTree   = tmpTree;
     }
     if (_tmpStepTree.Items == null)
     {
         _tmpStepTree.Items = new Steps();
     }
 }
示例#2
0
 public void ExitVariation(IPgnReader iParser)
 {
     if (iParser.State != Enums.PGNReaderState.Number)
     {
         StepParsed(iParser);
     }
     _tmpStepTree = (IStepTree)_tmpStepTree.Parent;
     _lastNumber  = (string)_states.Pop();
 }
示例#3
0
 private void MarkNode(IStepTree tree, TreeNode node, StringBuilder text)
 {
     foreach (IChessItem item in tree.Items)
     {
         TreeNode subnode = new TreeNode();
         if (item is Step)
         {
             Step step = (Step)item;
             if (step.GameSide == Enums.GameSide.White)
             {
                 text = new StringBuilder();
                 text.Append(item.ItemType).Append(": ").Append(step.Generator());
             }
             if (step.GameSide == Enums.GameSide.Black)
             {
                 text.Append(' ').Append(step.Generator());
                 subnode.Text = text.ToString();
                 node.Nodes.Add(subnode);
             }
             if (item is IStepTree)
             {
                 IStepTree subtree = (IStepTree)item;
                 if (subtree.HasChildren)
                 {
                     MarkNode(subtree, subnode, new StringBuilder());
                 }
             }
         }
         else
         {
             text = new StringBuilder();
             text.Append(item.ItemType).Append(": ").Append(item.Value);
             subnode.Text = text.ToString();
             node.Nodes.Add(subnode);
         }
     }
 }
示例#4
0
 public void NewGame(IPgnReader iParser)
 {
     _states      = new Stack();
     _tmpStepTree = new Record();
     _ChessRecords.Add((Record)_tmpStepTree);
 }