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); } } } } }
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); }