// Visually updates which talents are unlocked by this character private void DisplayTalents(UITalent currentTalent, int subTreeIndex, int talentIndex, MenuTalentData talentData) { // Do something with currentTalent to add it to the page, color it differently if its selected, ect GameObject talentButton = GetTalentButton(subTreeIndex, talentIndex); talentButton.GetComponent <Button>().onClick.RemoveAllListeners(); talentButton.GetComponent <Button>().onClick.AddListener(ClickTalent); talentButton.AddComponent <TalentButtonData>(); // TODO for 'locking' talents behind their prerequisites talentButton.GetComponentInChildren <TextMeshProUGUI>().text = currentTalent.talent.name; talentButton.GetComponent <TalentButtonData>().talentData = talentData; if (currentTalent.selected) { talentButton.GetComponent <Outline>().effectColor = new Color32(169, 87, 202, 255); talentButton.GetComponent <TalentButtonData>().selected = true; coloredTalents.Add(talentButton); } else { talentButton.GetComponent <TalentButtonData>().selected = false; } }
// Adds talents to the respective sub trees private void PopulateSubTree(MenuSubTreeData subTree, int subTreeIndex) { switch (subTreeIndex) { case 0: GameObject.Find("Subtree1Name").GetComponent <TextMeshProUGUI>().text = subTree.name; break; case 1: GameObject.Find("Subtree2Name").GetComponent <TextMeshProUGUI>().text = subTree.name; break; case 2: GameObject.Find("Subtree3Name").GetComponent <TextMeshProUGUI>().text = subTree.name; break; } for (int i = 0; i < subTree.talents.Length; i++) // (MenuTalentData talent in subTree.talents) { { UITalent currentTalent = new UITalent { talent = subTree.talents[i] }; if (character.talents.Exists(x => x.name == subTree.talents[i].name)) { currentTalent.selected = true; selectedTreeTalents += 1; } else { currentTalent.selected = false; } DisplayTalents(currentTalent, subTreeIndex, i, subTree.talents[i]); } }