예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
 public void ResetTree(Skill[] tr)
 {
     tree = tr;
     OnSkillTreeModified?.Invoke(this);
 }