Exemplo n.º 1
0
 private void ChangeAllChildNodesSelection(TreeNode node, bool isChecked)
 {
     foreach (TreeNode childNode in node.Nodes)
     {
         OpeningMove move = (OpeningMove)childNode.Tag;
         childNode.Checked = isChecked;
         move.Selected     = isChecked;
         if (childNode.Nodes.Count > 0)
         {
             ChangeAllChildNodesSelection(childNode, isChecked);
         }
     }
 }
Exemplo n.º 2
0
        private OpeningMove AddMove(ChessMove move)
        {
            try
            {
                if (TrvRepertoires.SelectedNode != null)
                {
                    if (TrvRepertoires.SelectedNode.Tag.GetType() == typeof(OpeningMove))
                    {
                        var moveColor   = chessboard1.Turn == ChessColor.White ? ChessColor.Black : ChessColor.White;
                        var currentMove = (OpeningMove)TrvRepertoires.SelectedNode.Tag;
                        var moveIndex   = currentMove.MoveIndex + (moveColor == ChessColor.Black ? 0 : 1);
                        var newMove     = new OpeningMove(new OpeningHalfMove(move), moveColor, moveIndex, chessboard1.GetFEN())
                        {
                            Name = currentMove.Name,
                            ECO  = currentMove.ECO
                        };
                        var newNode = new TreeNode(newMove.ToString())
                        {
                            Tag = newMove
                        };
                        TrvRepertoires.SelectedNode.Nodes.Add(newNode);
                        TrvRepertoires.SelectedNode = newNode;
                        currentMove.Children.Add(newMove);
                        chessOpeningInfo1.Enabled = true;

                        return(newMove);
                    }
                    else if (TrvRepertoires.SelectedNode.Tag.GetType() == typeof(OpeningRepertoire))
                    {
                        var moveColor  = chessboard1.Turn == ChessColor.White ? ChessColor.Black : ChessColor.White;
                        var newOpening = new OpeningMove(new OpeningHalfMove(move), moveColor, 1, chessboard1.GetFEN());
                        var newNode    = new TreeNode(newOpening.ToString())
                        {
                            Tag = newOpening
                        };
                        TrvRepertoires.SelectedNode.Nodes.Add(newNode);
                        TrvRepertoires.SelectedNode = newNode;
                        this.SelectedRepertoire.Moves.Add(newOpening);
                        chessOpeningInfo1.Enabled = true;
                        ShowOpeningInfo(newOpening);
                    }
                }
            }
            catch (Exception ex)
            {
                chessboard1.UndoMove();
                ShowError(ex);
            }
            return(null);
        }
Exemplo n.º 3
0
 private void ShowOpeningInfo(OpeningMove opening)
 {
     try
     {
         chessOpeningInfo1.OpeningName    = opening.Name;
         chessOpeningInfo1.Eco            = opening.ECO;
         chessOpeningInfo1.OpeningMove    = opening.Move.ToSAN;
         chessOpeningInfo1.MoveAnnotation = opening.MoveAnnotation;
         chessOpeningInfo1.Comment        = opening.Comment;
         chessOpeningInfo1.SelectName();
         chessOpeningInfo1.GameCount    = opening.MoveStat.GameCount;
         chessOpeningInfo1.WhitePercent = opening.MoveStat.WhiteStat;
         chessOpeningInfo1.NullPercent  = opening.MoveStat.NullStat;
     }
     catch (Exception ex)
     {
         ShowError(ex);
     }
 }
Exemplo n.º 4
0
 private TreeNode SearchExistingNode(ChessMove move)
 {
     try
     {
         if (TrvRepertoires.SelectedNode != null)
         {
             foreach (TreeNode childNode in TrvRepertoires.SelectedNode.Nodes)
             {
                 OpeningMove childMove = (OpeningMove)childNode.Tag;
                 if (childMove.Move == new OpeningHalfMove(move))
                 {
                     return(childNode);
                 }
             }
         }
     }
     catch (Exception ex)
     {
         chessboard1.UndoMove();
         ShowError(ex);
     }
     return(null);
 }
Exemplo n.º 5
0
        private void ContexMenuItemClicked(ToolStripItem clickedItem)
        {
            try
            {
                switch (clickedItem.Name)
                {
                case _ctxMnuLoadNewBook:
                    break;

                case _ctxMnuRename:
                    CtxMnuRepertoire.Hide();
                    var newNameDlg = new FrmRenameBook(this.Book.Name);
                    if (newNameDlg.ShowDialog() == DialogResult.OK)
                    {
                        this.Book.Name = newNameDlg.NewName;
                        TrvRepertoires.Nodes[0].Text = newNameDlg.NewName;
                    }
                    break;

                case _selectAllChildren:
                    _updatingSelection = true;
                    ChangeAllChildNodesSelection(TrvRepertoires.SelectedNode, !TrvRepertoires.SelectedNode.Checked);
                    TrvRepertoires.SelectedNode.Checked = !TrvRepertoires.SelectedNode.Checked;
                    TrvRepertoires.SelectedNode.ExpandAll();
                    _updatingSelection = false;
                    break;

                case _expandAllChildren:
                    if (TrvRepertoires.SelectedNode.IsExpanded)
                    {
                        TrvRepertoires.SelectedNode.Collapse();
                    }
                    else
                    {
                        TrvRepertoires.SelectedNode.ExpandAll();
                    }
                    break;

                case _ctxMnuDelete:
                    CtxMnuRepertoire.Hide();
                    if (MessageBox.Show(Translate("Msg_SureToDelete"),
                                        Translate("Msg_Confirmation"),
                                        MessageBoxButtons.YesNo,
                                        MessageBoxIcon.Question,
                                        MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                    {
                        try
                        {
                            TreeNode    selectedNode = TrvRepertoires.SelectedNode;
                            TreeNode    parentNode   = selectedNode.Parent;
                            OpeningMove parentMove   = (OpeningMove)parentNode.Tag;
                            OpeningMove selectedMove = (OpeningMove)selectedNode.Tag;

                            parentMove.Children.Remove(selectedMove);
                            parentNode.Nodes.Remove(selectedNode);
                            NodeSelected(parentNode);
                        }
                        catch (Exception ex)
                        {
                            ShowError(ex);
                        }
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                ShowError(ex);
            }
        }
Exemplo n.º 6
0
        public List<OpeningMove> FindMoves()
        {
            var output = new Dictionary<string, OpeningMove>();

            for(int i = 0; i < Book.Length; i++)
            {
                var line = Book[i];
                string nextMove = line[MovesMade + 1];
                int from = Notation.TextToTile(nextMove.Substring(0, 2));
                int to = Notation.TextToTile(nextMove.Substring(2, 2));

                OpeningMove move = null;

                if (output.ContainsKey(nextMove))
                {
                    move = output[nextMove];
                }
                else
                {
                    move = new OpeningMove();
                    move.From = from;
                    move.To = to;
                    output[nextMove] = move;
                }

                move.SampleCount++;

                if (line[0] == "D")
                    move.Draws++;
                else if (line[0] == "B")
                    move.BlackWins++;
                else if (line[0] == "W")
                    move.WhiteWins++;
            }

            return output.Select(x => x.Value).ToList();
        }