public void AddSkill(Skill skill) { if (tree == null) { tree = new Skill[1]; tree[0] = skill; } else { Skill[] newTree = new Skill[tree.Length + 1]; for (int i = 0; i < newTree.Length; i++) { if (i < tree.Length) { newTree[i] = tree[i]; } else { newTree[i] = skill; } } tree = newTree; } OnSkillTreeModified?.Invoke(this); }
public void AddRequirementToSkill(string req, string skill) { int reqIndex = FindIndexOfSkillByNameInSkillArray(req); int skillIndex = FindIndexOfSkillByNameInSkillArray(skill); int[] currentReqs = tree[skillIndex].RequiredSkills; if (currentReqs == null) { currentReqs = new int[1]; currentReqs[0] = reqIndex; tree[skillIndex].SetRequieredSkills(currentReqs); } else { int[] newReqs = new int[currentReqs.Length + 1]; for (int i = 0; i < newReqs.Length; i++) { if (i < currentReqs.Length) { if (currentReqs[i] == reqIndex) { return; } newReqs[i] = currentReqs[i]; } else { newReqs[i] = reqIndex; } } tree[skillIndex].SetRequieredSkills(newReqs); } DeleteInvalidRequirements(); OnSkillTreeModified?.Invoke(this); }
public void ResetTree(Skill[] tr) { tree = tr; OnSkillTreeModified?.Invoke(this); }