Exemple #1
0
            private static TreeNode[] GetTreeArray(InteractionChoice c)
            {
                TreeNode[] nodes = new TreeNode[c.paths.Count];
                int        count = 0;

                foreach (InteractionPath ic in c.paths)
                {
                    List <TreeNode> subNodes = new List <TreeNode>();
                    foreach (InteractionBase b in ic.items)
                    {
                        if (b is InteractionChoice ch)
                        {
                            TreeNode tn = new TreeNode(ch.ToString(), GetTreeArray(ch));
                            subNodes.Add(tn);
                            nodeBase.Add(tn, ch);
                        }
                        else
                        {
                            TreeNode tn = new TreeNode(b.ToString());
                            subNodes.Add(tn);
                            nodeBase.Add(tn, b);
                        }
                    }
                    TreeNode choi = new TreeNode(ic.ToString(), subNodes.ToArray());
                    nodes[count++] = choi;
                    nodeBase.Add(choi, ic);
                }
                return(nodes);
            }
Exemple #2
0
            public static void ShiftNode(int dir)
            {
                if (displayTree.SelectedNode == null)
                {
                    return;
                }

                if (displayTree.SelectedNode.Parent == null)
                {
                    //If on root
                    int ind = interactedObject.InterItems.IndexOf(nodeBase[displayTree.SelectedNode]);
                    if (ind - dir < 0 || ind - dir >= interactedObject.InterItems.Count)
                    {
                        displayTree.Focus();
                        return;
                    }
                    interactedObject.InterItems.RemoveAt(ind);
                    interactedObject.InterItems.Insert(ind - dir, nodeBase[displayTree.SelectedNode]);
                    TreeNode n    = displayTree.SelectedNode;
                    int      ind2 = displayTree.Nodes.IndexOf(displayTree.SelectedNode);
                    displayTree.Nodes.Remove(n);
                    displayTree.Nodes.Insert(ind2 - dir, n);
                    displayTree.SelectedNode = n;
                    displayTree.Focus();
                }
                else
                //If inside a path
                if (nodeBase[displayTree.SelectedNode.Parent].GetType() == typeof(InteractionPath))
                {
                    InteractionPath pathPar = ((InteractionPath)nodeBase[displayTree.SelectedNode.Parent]);
                    int             ind     = pathPar.items.IndexOf(nodeBase[displayTree.SelectedNode]);
                    if (ind - dir < 0 || ind - dir >= pathPar.items.Count)
                    {
                        displayTree.Focus();
                        return;
                    }
                    pathPar.items.RemoveAt(ind);
                    pathPar.items.Insert(ind - dir, nodeBase[displayTree.SelectedNode]);
                    TreeNode n    = displayTree.SelectedNode;
                    int      ind2 = displayTree.SelectedNode.Parent.Nodes.IndexOf(displayTree.SelectedNode);
                    displayTree.SelectedNode.Parent.Nodes.Remove(n);
                    displayTree.SelectedNode.Parent.Nodes.Insert(ind2 - dir, n);
                    displayTree.SelectedNode = n;
                    displayTree.Focus();
                }
                else
                //If the node is a path
                if (nodeBase[displayTree.SelectedNode].GetType() == typeof(InteractionPath))
                {
                    InteractionChoice c = (InteractionChoice)nodeBase[displayTree.SelectedNode.Parent];
                    int ind             = c.paths.IndexOf((InteractionPath)nodeBase[displayTree.SelectedNode]);
                    if (ind - dir < 0 || ind - dir >= c.paths.Count)
                    {
                        displayTree.Focus();
                        return;
                    }
                    c.paths.RemoveAt(ind);
                    c.paths.Insert(ind - dir, (InteractionPath)nodeBase[displayTree.SelectedNode]);
                    TreeNode n    = displayTree.SelectedNode;
                    int      ind2 = displayTree.SelectedNode.Parent.Nodes.IndexOf(displayTree.SelectedNode);
                    displayTree.SelectedNode.Parent.Nodes.Remove(n);
                    displayTree.SelectedNode.Parent.Nodes.Insert(ind2 - dir, n);
                    displayTree.SelectedNode = n;
                    displayTree.Focus();
                }
                SetupInteractionData();
            }
Exemple #3
0
            //Creates a new object from type given and adds it to the tree
            public static void SetupNewData(Type nt)
            {
                InteractionBase news = new InteractionDialogue("");

                if (nt == typeof(InteractionQuests))
                {
                    news = new InteractionQuests(new List <InteractionPath>()
                    {
                    });
                }
                else if (nt.Equals(typeof(InteractionDialogue)))
                {
                    news = new InteractionDialogue("");
                }
                else if (nt.Equals(typeof(InteractionChoice)))
                {
                    news = new InteractionChoice(new List <InteractionPath>()
                    {
                    });
                }
                else if (nt.Equals(typeof(InteractionPath)))
                {
                    news = new InteractionPath();
                }
                TreeNode nod = new TreeNode(news.ToString());

                if (displayTree.SelectedNode != null)
                {
                    if (nodeBase[displayTree.SelectedNode].GetType() == typeof(InteractionPath))
                    {
                        //If the node is a path, then add the item to that path
                        ((InteractionChoice)nodeBase[displayTree.SelectedNode.Parent]).AddBase(displayTree.SelectedNode.Text, news);
                        displayTree.SelectedNode.Nodes.Add(nod);
                        displayTree.SelectedNode.Expand();
                        nodeBase.Add(nod, news);
                    }
                    else if (nodeBase[displayTree.SelectedNode].GetType() == typeof(InteractionChoice))
                    {
                        ((InteractionChoice)nodeBase[displayTree.SelectedNode]).AddChoice(pars[0].Text);
                        nod.Text = pars[0].Text;
                        displayTree.SelectedNode.Nodes.Add(nod);
                        displayTree.SelectedNode.Expand();
                        nodeBase.Add(nod, news);
                        pars = null;
                    }
                    else if (nodeBase[displayTree.SelectedNode].GetType() == typeof(InteractionQuests))
                    {
                        ((InteractionQuests)nodeBase[displayTree.SelectedNode]).AddChoice(pars[0].Text);
                        ((InteractionQuests)nodeBase[displayTree.SelectedNode]).questTags.Add("");
                        nod.Text = pars[0].Text;
                        displayTree.SelectedNode.Nodes.Add(nod);
                        displayTree.SelectedNode.Expand();
                        nodeBase.Add(nod, news);
                        pars = null;
                    }
                }
                else
                {
                    //if nothing selected, then the primary level
                    interactedObject.InterItems.Add(news);
                    nodeBase.Add(nod, news);
                    displayTree.Nodes.Add(nod);
                }
            }