예제 #1
0
        public void AddToPlan(object tp, int value, int cost)
        {
            PlanningEntry entry = Entries.FirstOrDefault(e => e.TrainPoint == tp);

            if (entry != null)
            {
                Entries.Remove(entry);
            }

            Entries.Add(new PlanningEntry(tp, value, cost));

            if (tp is MagicalAbility ability && ability <= MagicalAbility.WrestlingMastery)
            {
                TrainingPoint trainingPoint = PetTrainingHelper.GetTrainingPoint(ability);

                foreach (PlanningEntry en in Entries)
                {
                    if (trainingPoint.Requirements != null && trainingPoint.Requirements.Length > 0)
                    {
                        foreach (TrainingPointRequirement req in trainingPoint.Requirements)
                        {
                            if (req != null)
                            {
                                if (req.Requirement is WeaponAbility && en.TrainPoint is WeaponAbility || req.Requirement is SpecialAbility && en.TrainPoint is SpecialAbility || req.Requirement is AreaEffect && en.TrainPoint is AreaEffect)
                                {
                                    en.Value = 0;
                                    en.Cost  = 0;
                                }
                            }
                        }
                    }
                }
            }
        }
예제 #2
0
        public void AddToPlan(object tp, int value, int cost)
        {
            PlanningEntry entry = null;

            for (var index = 0; index < Entries.Count; index++)
            {
                var e = Entries[index];

                if (e.TrainPoint == tp)
                {
                    entry = e;
                    break;
                }
            }

            if (entry != null)
            {
                Entries.Remove(entry);
            }

            Entries.Add(new PlanningEntry(tp, value, cost));

            if (tp is MagicalAbility ability && ability <= MagicalAbility.WrestlingMastery)
            {
                TrainingPoint trainingPoint = PetTrainingHelper.GetTrainingPoint(ability);

                for (var index = 0; index < Entries.Count; index++)
                {
                    PlanningEntry en = Entries[index];

                    if (trainingPoint.Requirements != null && trainingPoint.Requirements.Length > 0)
                    {
                        for (var i = 0; i < trainingPoint.Requirements.Length; i++)
                        {
                            TrainingPointRequirement req = trainingPoint.Requirements[i];

                            if (req != null && (req.Requirement is WeaponAbility && en.TrainPoint is WeaponAbility ||
                                                req.Requirement is SpecialAbility && en.TrainPoint is SpecialAbility ||
                                                req.Requirement is AreaEffect && en.TrainPoint is AreaEffect))
                            {
                                en.Value = 0;
                                en.Cost  = 0;
                            }
                        }
                    }
                }
            }
        }
예제 #3
0
        public virtual void Serialize(GenericWriter writer)
        {
            writer.Write(0);

            writer.Write(Entries.Count);

            for (int i = 0; i < Entries.Count; i++)
            {
                PlanningEntry entry = Entries[i];
                object        o     = entry.TrainPoint;

                if (o is MagicalAbility ability)
                {
                    writer.Write(1);
                    writer.Write((int)ability);
                    writer.Write(entry.Value);
                    writer.Write(entry.Cost);
                }
                else if (o is SpecialAbility specialAbility)
                {
                    writer.Write(2);
                    writer.Write(Array.IndexOf(SpecialAbility.Abilities, specialAbility));
                    writer.Write(entry.Value);
                    writer.Write(entry.Cost);
                }
                else if (o is AreaEffect effect)
                {
                    writer.Write(3);
                    writer.Write(Array.IndexOf(AreaEffect.Effects, effect));
                    writer.Write(entry.Value);
                    writer.Write(entry.Cost);
                }
                else if (o is WeaponAbility weaponAbility)
                {
                    writer.Write(4);
                    writer.Write(Array.IndexOf(WeaponAbility.Abilities, weaponAbility));
                    writer.Write(entry.Value);
                    writer.Write(entry.Cost);
                }
                else if (o is PetStat stat)
                {
                    writer.Write(5);
                    writer.Write((int)stat);
                    writer.Write(entry.Value);
                    writer.Write(entry.Cost);
                }
                else if (o is ResistanceType resistType)
                {
                    writer.Write(6);
                    writer.Write((int)resistType);
                    writer.Write(entry.Value);
                    writer.Write(entry.Cost);
                }
                else if (o is SkillName skillName)
                {
                    writer.Write(7);
                    writer.Write((int)skillName);
                    writer.Write(entry.Value);
                    writer.Write(entry.Cost);
                }
                else
                {
                    writer.Write(0);
                }
            }
        }