Esempio n. 1
0
    public void ResolvePrereqs(ElectiveNode elec)
    {
        int columnID = 0;

        foreach (Prereq prereq in elec.course.course.prereqs)
        {
            foreach (Course p in prereq.equivalent)
            {
                if (!currentCourses.Contains(p))
                {
                    if (p.prereqs.Count > 0)
                    {
                        int colId = ResolvePrereqs(p);
                        if (colId + 1 > columnID)
                        {
                            columnID = colId + 1;
                        }

                        AddCourseNode(p, colId);
                    }
                    else
                    {
                        AddCourseNode(p, 0);
                    }
                }
            }
        }
    }
Esempio n. 2
0
    public void ProcessElectives(List <Elective> electives)
    {
        CourseChain chain = Instantiate(treeRow).AddComponent <CourseChain>();

        chain.transform.SetParent(content, false);
        chains.Add(chain);

        if (chain.GetComponent <HorizontalLayoutGroup>())
        {
            chain.GetComponent <HorizontalLayoutGroup>().spacing = 300;
        }
        else if (chain.GetComponent <VerticalLayoutGroup>())
        {
            chain.GetComponent <VerticalLayoutGroup>().spacing = 300;
        }

        foreach (Elective e in electives)
        {
            GameObject chainLink = Instantiate(treeColumn);
            chainLink.transform.SetParent(chain.transform, false);
            chain.chainLinks.Add(chainLink);

            if (chainLink.GetComponent <VerticalLayoutGroup>())
            {
                chainLink.GetComponent <VerticalLayoutGroup>().spacing = 50;
            }
            else if (chainLink.GetComponent <HorizontalLayoutGroup>())
            {
                chainLink.GetComponent <HorizontalLayoutGroup>().spacing = 50;
            }

            for (int i = 0; i < e.count; i++)
            {
                ElectiveNode eNode = Instantiate(electivePrefab);
                electiveNodes.Add(eNode);
                eNode.SetCriteria(e);

                //eNode.transform.SetParent(columns[0].transform, false);
                //columns[0].GetComponent<VerticalLayoutGroup>().spacing += eNode.rect.sizeDelta.y * 1.5f;

                eNode.transform.SetParent(chainLink.transform, false);
            }
        }
    }
    public void AddToDegreeTree()
    {
        ElectiveNode any  = null;
        ElectiveNode subj = null;
        ElectiveNode lv   = null;
        ElectiveNode both = null;

        foreach (ElectiveNode en in DegreeTree.instance.electiveNodes)
        {
            if (en.course == null)
            {
                if (en.elective.subject.Count == 1 && en.elective.level.Count == 1 &&
                    en.elective.subject[0] == course.course.subject && en.elective.level[0] == course.course.level)
                {
                    en.SetCourse(course.course);
                    return;
                }
                else if (both == null && en.elective.subject.Contains(course.course.subject) &&
                         en.elective.level.Contains(course.course.level))
                {
                    both = en;
                }
                else if (subj == null && en.elective.subject.Contains(course.course.subject) &&
                         !en.elective.level.Contains(course.course.level))
                {
                    subj = en;
                }
                else if (lv == null && !en.elective.subject.Contains(course.course.subject) &&
                         en.elective.level.Contains(course.course.level))
                {
                    lv = en;
                }
                else if (any == null && en.elective.subject[0] == Subject.Any && en.elective.level[0] == Level.Any)
                {
                    any = en;
                }
            }
        }

        if (both)
        {
            both.SetCourse(course.course);
        }
        else if (subj)
        {
            both.SetCourse(course.course);
        }
        else if (lv)
        {
            lv.SetCourse(course.course);
        }
        else if (any)
        {
            any.SetCourse(course.course);
        }
        else
        {
            Debug.Log("No elective nodes available to add course " + course.course.name + " to degree tree");

            MessageBox mb = MainPanel.instance.messageBox;

            mb.SetText("Elective Capacity Reached",
                       "Your program doesn't require any electives beyond what is currently in your degree tree." +
                       " Would you like to add " + course.course.name + " to your degree tree anyway?");

            mb.yesButton.onClick.RemoveAllListeners();
            mb.yesButton.onClick.AddListener(ForceAddCourse);

            mb.cancelButton.onClick.RemoveAllListeners();
            mb.cancelButton.onClick.AddListener(mb.HideBox);
            return;
        }

        addToDT.gameObject.SetActive(false);
        removeFromDT.gameObject.SetActive(true);
    }