Ejemplo n.º 1
0
            public void Acquire()
            {
                Debug.Assert(status == ESkillStatus.Learnable);
                status = ESkillStatus.Acquired;

                // All contradictory skills are now unlearnable
                foreach (SkillNode n in antireqs)
                {
                    n.PropagateUnlearnable();
                }

                // All dependents are one skill closer to being learnable
                foreach (SkillNode n in dependents)
                {
                    if (n.status == ESkillStatus.Unlearnable)
                    {
                        continue;
                    }
                    n.remainingPrereqs--;
                    // When all prereqs are met the skill is learnable
                    if (n.remainingPrereqs == 0)
                    {
                        GuiOutput.Log(String.Format("{0} is learnable now!", n.type));
                        n.status = ESkillStatus.Learnable;
                    }
                }
            }
Ejemplo n.º 2
0
            private int remainingPrereqs;        // Count of unlearnt

            public SkillNode(EAbility skillType)
            {
                type             = skillType;
                status           = ESkillStatus.Learnable;
                prereqs          = new List <SkillNode>();
                antireqs         = new List <SkillNode>();
                dependents       = new List <SkillNode>();
                remainingPrereqs = 0;
            }
Ejemplo n.º 3
0
            private void PropagateUnlearnable()
            {
                Debug.Assert(status != ESkillStatus.Acquired);
                if (status == ESkillStatus.Unlearnable)
                {
                    return;
                }
                status = ESkillStatus.Unlearnable;
                GuiOutput.Log(String.Format("{0} is unlearnable now!", type));

                // All skills that depend on this skill are now unlearnable
                foreach (SkillNode n in dependents)
                {
                    n.PropagateUnlearnable();
                }
            }
Ejemplo n.º 4
0
 public void AddPrereq(SkillNode prereq)
 {
     prereqs.Add(prereq);
     remainingPrereqs++;
     status = ESkillStatus.MissingPrereq;
 }