Пример #1
0
        /// <summary>
        /// When a skill is casted this function is called.
        /// </summary>
        /// <param name="order">Order of the skill in the skill set.</param>
        /// <param name="characterSkill">Skill data</param>
        public void CastSkill(int order, CharacterSkill characterSkill)
        {
            ISkillStrategy skillStrategy = null;

            switch (characterSkill.Code)
            {
            case SkillCode.TripleShot:
                skillStrategy = new UpgradeToTripleShot();
                break;

            case SkillCode.DoubleShot:
                skillStrategy = new UpgradeToDoubleShot();
                break;

            case SkillCode.Haste:
                skillStrategy = new UpgradeAttackSpeed(new AdditionModifier(-1f, characterSkill.Name));
                break;

            case SkillCode.UberBolt:
                skillStrategy = new UpgradeProjectileSpeed(new MultiplicationModifier(0.5f, characterSkill.Name));
                break;

            case SkillCode.Clone:
                skillStrategy = new CloneTheCharacterRandomly();
                break;
            }
            Skill skill = new Skill(skillStrategy);

            skill.Perform();
            OnSkillCast?.Invoke(order, ++_skillsCastedSoFar);
        }
Пример #2
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="strategy">The strategy (skill logic) of the corresponding skill.</param>
 public Skill(ISkillStrategy strategy)
 {
     Strategy = strategy;
 }