Пример #1
0
            private ShQuestion _Question; //reference to question

            //constructor
            //declares with an empty list for Answers
            public ShGroup(ShQuestion ref_question, string new_text)
            {
                Text       = new_text;
                Correct    = true;
                GroupBonus = 0;

                _Question = ref_question;
                Answers   = new List <ShAnswer>(ref_question.Game.Players.Count);
            }
Пример #2
0
 //nicely delete a question
 public void NiceDeleteQuestion(ShQuestion que)
 {
     foreach (ShGroup grp in que.Groups)
     {
         foreach (ShAnswer ans in grp.Answers)
         {
             ans.Player.Answers.Remove(ans);
         }
         grp.Answers.Clear();
     }
     que.Groups.Clear();
     Questions.Remove(que);
 }
Пример #3
0
        //nicely add a question, giving each player a blank answer
        //and making one group
        public ShQuestion NiceAddQuestion(string qtxt)
        {
            ShQuestion newQ = new ShQuestion(this, qtxt);

            Questions.Add(newQ);
            if (Players.Count > 0)
            {
                ShGroup newG = new ShGroup(newQ, "(blank)");
                newQ.Groups.Add(newG);
                foreach (ShPlayer ply in Players)
                {
                    ShAnswer newA = new ShAnswer(newG, ply, "(blank)");
                    ply.Answers.Add(newA);
                    newG.Answers.Add(newA);
                }
            }
            return(newQ);
        }
Пример #4
0
        //Redraw all current groups/answers on the listview
        private void redrawTreeView()
        {
            treeView1.Nodes.Clear();

            //give instructions if no questions loaded
            if (sg == null || sg.Questions.Count == 0)
            {
                label_question.Text = "Click " + sheepToolStripMenuItem.Text + " > " +
                                      editQuestionsToolStripMenuItem.Text + " to begin.";
                return;
            }

            //make sure we're on a valid question
            if (cur_q_index > sg.Questions.Count - 1)
            {
                cur_q_index = sg.Questions.Count - 1;
            }

            if (cur_q_index < 0)
            {
                cur_q_index = 0;
            }

            ShQuestion curQuestion = sg.Questions[cur_q_index];

            //make sure the updown and label is right
            numericUpDown_question.Minimum = 1;
            numericUpDown_question.Maximum = sg.Questions.Count;
            label_question.Text            = curQuestion.Text;

            //give instructions if no players loaded
            if (sg.Players.Count == 0)
            {
                treeView1.Nodes.Add("Click " + sheepToolStripMenuItem.Text + " > " +
                                    addRemovePlayersToolStripMenuItem.Text + " to add entries.");
                return;
            }

            TreeNode curGroup;
            TreeNode curItem;

            //loop through each group
            //text will be added later so don't bother with it in this function
            foreach (ShGroup grp in curQuestion.Groups)
            {
                //add group to listview.
                //use tag to keep track of group
                curGroup     = new TreeNode("");
                curGroup.Tag = grp;
                treeView1.Nodes.Add(curGroup);

                //add each player's answer to listview.
                //use tag to keep track of answer
                foreach (ShAnswer ans in grp.Answers)
                {
                    curItem     = new TreeNode("");
                    curItem.Tag = ans;
                    curGroup.Nodes.Add(curItem);
                }
                //alternate colors each group
                //curGroup.Expand();
            }

            treeView1.TreeViewNodeSorter = new TreeNodeSorter();

            SetTextForAllTreenodes();
        }
Пример #5
0
        //main drag/drop function
        private void treeView1_DragDrop(object sender, DragEventArgs e)
        {
            //stop sorting while dragging
            treeView1.TreeViewNodeSorter = null;

            Point    cp       = treeView1.PointToClient(new Point(e.X, e.Y));
            TreeNode destNode = treeView1.GetNodeAt(cp);

            //don't continue if not a valid node
            if (!e.Data.GetDataPresent(typeof(TreeNode)))
            {
                return;
            }

            //   treeView1.BeginUpdate();

            TreeNode movingNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
            TreeNode prevParent, newParent;

            ShQuestion curQuestion = sg.Questions[cur_q_index];

            //different code depending on what type of thing we're dragging/dragging to

            if (movingNode.Tag.GetType() == typeof(ShAnswer) &&
                destNode.Tag.GetType() == typeof(ShAnswer))
            {
                //moving an answer to another answer
                ShAnswer ansToMove  = (ShAnswer)movingNode.Tag;
                ShAnswer destAnswer = (ShAnswer)destNode.Tag;
                ansToMove.ChangeGroup(destAnswer.Group);

                prevParent = movingNode.Parent;
                newParent  = destNode.Parent;
                prevParent.Nodes.Remove(movingNode);
                newParent.Nodes.Add(movingNode);
            }
            else if (movingNode.Tag.GetType() == typeof(ShAnswer) &&
                     destNode.Tag.GetType() == typeof(ShGroup))
            {
                //moving an answer to another group
                ShAnswer ansToMove = (ShAnswer)movingNode.Tag;
                ShGroup  destGroup = (ShGroup)destNode.Tag;
                ansToMove.ChangeGroup(destGroup);

                prevParent = movingNode.Parent;
                newParent  = destNode;
                prevParent.Nodes.Remove(movingNode);
                newParent.Nodes.Add(movingNode);
            }
            else if (movingNode.Tag.GetType() == typeof(ShGroup) &&
                     destNode.Tag.GetType() == typeof(ShAnswer))
            {
                //moving a group to an answer
                ShGroup  grpToMove  = (ShGroup)movingNode.Tag;
                ShAnswer destAnswer = (ShAnswer)destNode.Tag;
                grpToMove.MergeToGroup(destAnswer.Group);

                prevParent = movingNode;
                newParent  = destNode.Parent;

                List <TreeNode> ansNodes = new List <TreeNode>(prevParent.Nodes.Cast <TreeNode>());
                foreach (TreeNode nod in ansNodes)
                {
                    prevParent.Nodes.Remove(nod);
                    newParent.Nodes.Add(nod);
                }
            }
            else if (movingNode.Tag.GetType() == typeof(ShGroup) &&
                     destNode.Tag.GetType() == typeof(ShGroup))
            {
                //moving a group to a group
                ShGroup grpToMove = (ShGroup)movingNode.Tag;
                ShGroup destGroup = (ShGroup)destNode.Tag;
                grpToMove.MergeToGroup(destGroup);

                prevParent = movingNode;
                newParent  = destNode;

                List <TreeNode> ansNodes = new List <TreeNode>(prevParent.Nodes.Cast <TreeNode>());
                foreach (TreeNode nod in ansNodes)
                {
                    prevParent.Nodes.Remove(nod);
                    newParent.Nodes.Add(nod);
                }
            }
            else
            {
                treeView1.EndUpdate(); return;
            }

            //if prevParent is empty, delete it
            if (prevParent.Nodes.Count == 0)
            {
                prevParent.Remove();
            }

            SetTextForAllTreenodes();
            sheep_modified = true;

            treeView1.EndUpdate();
        }