コード例 #1
0
        /// <summary>
        /// Uses skill on specific target.
        /// </summary>
        /// <param name="target">The target.</param>
        /// <param name="owner">The skill owner (caster).</param>
        /// <exception cref="ArgumentException">target</exception>
        public override void UseSkill(ITarget target, ISkilled owner)
        {
            var areaTarget = target as AreaTarget ?? throw new ArgumentException(nameof(target));

            data.CreateMeteorShower(owner, TargetsProvider, areaTarget, Level, ObjectsPool);
            StartRecharging();
        }
コード例 #2
0
        /// <summary>
        /// Creates the meteor shower - helper-object that spawns meteorites in a given area and deals damage to enemies.
        /// </summary>
        /// <param name="owner">The skill owner (caster).</param>
        /// <param name="targetsProvider">The targets provider.</param>
        /// <param name="target">The target.</param>
        /// <param name="skillLevel">The skill level.</param>
        /// <param name="objectsPool">The objects pool.</param>
        /// <exception cref="ArgumentNullException">
        /// owner
        /// or
        /// targetsProvider
        /// or
        /// target
        /// or
        /// objectsPool
        /// </exception>
        public void CreateMeteorShower(ISkilled owner, ITargetsProvider targetsProvider, AreaTarget target, int skillLevel,
                                       IObjectsPool objectsPool)
        {
            if (owner == null)
            {
                throw new ArgumentNullException(nameof(owner));
            }

            if (targetsProvider == null)
            {
                throw new ArgumentNullException(nameof(targetsProvider));
            }

            if (target == null)
            {
                throw new ArgumentNullException(nameof(target));
            }

            if (objectsPool == null)
            {
                throw new ArgumentNullException(nameof(objectsPool));
            }

            var parameters = GetParameters(skillLevel);
            var meteor     = objectsPool.GetOrCreate(parameters.MeteorShowerPrefab);

            meteor.Setup(target, parameters.Damage, targetsProvider, owner);
        }
コード例 #3
0
ファイル: DpsMeter.cs プロジェクト: Kalavarda/Unity
 public DamageInfo([NotNull] ISkilled from, [NotNull] IHealth to, [NotNull] ISkill skill, float damage)
 {
     From   = @from ?? throw new ArgumentNullException(nameof(@from));
     To     = to ?? throw new ArgumentNullException(nameof(to));
     Skill  = skill ?? throw new ArgumentNullException(nameof(skill));
     Damage = damage;
 }
コード例 #4
0
ファイル: HealthRecovery.cs プロジェクト: Kalavarda/Unity
 public HealthRecovery([NotNull] ISkilled source, [NotNull] IHealth target, [NotNull] ISkill skill, DateTime endTime, float health)
 {
     _source = source ?? throw new ArgumentNullException(nameof(source));
     _target = target ?? throw new ArgumentNullException(nameof(target));
     _skill  = skill ?? throw new ArgumentNullException(nameof(skill));
     _health = health;
     EndTime = endTime;
 }
コード例 #5
0
 public Bleeding([NotNull] ISkilled source, [NotNull] IHealth target, [NotNull] ISkill skill, DateTime endTime, float damage)
 {
     _source = source ?? throw new ArgumentNullException(nameof(source));
     _target = target ?? throw new ArgumentNullException(nameof(target));
     _skill  = skill ?? throw new ArgumentNullException(nameof(skill));
     _damage = damage;
     EndTime = endTime;
 }
コード例 #6
0
            /// <summary>
            /// Initializes a new instance of the <see cref="SelectTargetForSkillState"/> class.
            /// </summary>
            /// <param name="selector">The selector.</param>
            /// <param name="args">The arguments.</param>
            /// <exception cref="ArgumentNullException">args</exception>
            /// <exception cref="NullReferenceException">
            /// SkillOwner
            /// or
            /// Skill
            /// </exception>
            public SelectTargetForSkillState(MouseSelector selector, SkillTargetArgsSelecting args) : base(selector)
            {
                if (args == null)
                {
                    throw new ArgumentNullException(nameof(args));
                }

                skillOwner       = args.SkillOwner ?? throw new NullReferenceException(nameof(args.SkillOwner));
                skill            = args.Skill ?? throw new NullReferenceException(nameof(args.Skill));
                accessoryObjects = new List <IPoolableObject>();

                var targetingMode = skill.GetTargetingMode();

                targetingMode.Accept(this);
            }
コード例 #7
0
    private static ISkill GetSkill(ISkilled skilled, KeyCode key)
    {
        var skills = skilled.Skills.Where(sk => !(sk is UseThing));

        switch (key)
        {
        case KeyCode.Alpha1:
            return(skills.Skip(0).FirstOrDefault());

        case KeyCode.Alpha2:
            return(skills.Skip(1).FirstOrDefault());

        default:
            return(null);
        }
    }
コード例 #8
0
        /// <summary>
        /// Launches the ice bolt at the given target (magic arrow with freeze effect).
        /// </summary>
        /// <param name="owner">The skill owner (caster).</param>
        /// <param name="target">The target.</param>
        /// <param name="skillLevel">The skill level.</param>
        /// <param name="objectsPool">The objects pool.</param>
        /// <exception cref="ArgumentNullException">
        /// owner
        /// or
        /// target
        /// or
        /// objectsPool
        /// </exception>
        public void LaunchIceBolt(ISkilled owner, ITarget target, int skillLevel, IObjectsPool objectsPool)
        {
            if (owner == null)
            {
                throw new ArgumentNullException(nameof(owner));
            }

            if (target == null)
            {
                throw new ArgumentNullException(nameof(target));
            }

            if (objectsPool == null)
            {
                throw new ArgumentNullException(nameof(objectsPool));
            }

            var parameters = GetParameters(skillLevel);
            var arrow      = objectsPool.GetOrCreate(parameters.ArrowPrefab, owner.transform.position, owner.transform.rotation);
            var effect     = parameters.EffectFreeze.CreateEffect(owner, objectsPool);

            arrow.MagicArrowSetup(target, owner, parameters.ArrowSpeed, effect);
        }
コード例 #9
0
 public UseThing([NotNull] ISkilled source)
 {
     _source = source ?? throw new ArgumentNullException(nameof(source));
 }
コード例 #10
0
ファイル: SimplePunch.cs プロジェクト: Kalavarda/Unity
 public SimplePunch([NotNull] ISkilled source, [NotNull] IWeapon weapon)
 {
     _source = source ?? throw new ArgumentNullException(nameof(source));
     _weapon = weapon ?? throw new ArgumentNullException(nameof(weapon));
 }
コード例 #11
0
 /// <summary>
 /// Checks the skill target for correctness.
 /// </summary>
 /// <param name="target">The target.</param>
 /// <param name="owner">The skill owner (caster).</param>
 /// <returns>
 ///   <c>true</c> if the target is correct; otherwise, <c>false</c>.
 /// </returns>
 public bool IsTargetCorrect(ITarget target, ISkilled owner)
 {
     return(data.VerifyTarget(target, owner));
 }
コード例 #12
0
ファイル: Scratch.cs プロジェクト: Kalavarda/Unity
 public Scratch([NotNull] ISkilled source)
 {
     _source = source ?? throw new ArgumentNullException(nameof(source));
 }
コード例 #13
0
 /// <summary>
 /// Checks the skill target for correctness.
 /// </summary>
 /// <param name="target">The target.</param>
 /// <param name="skilled">The skill owner (caster).</param>
 /// <returns>
 ///   <c>true</c> if the target is correct; otherwise, <c>false</c>.
 /// </returns>
 public abstract bool VerifyTarget(ITarget target, ISkilled skilled);
コード例 #14
0
 /// <summary>
 /// Checks the skill target for correctness.
 /// </summary>
 /// <param name="target">The target.</param>
 /// <param name="skilled">The skill owner (caster).</param>
 /// <returns>
 ///   <c>true</c> if the target is correct; otherwise, <c>false</c>.
 /// </returns>
 public override bool VerifyTarget(ITarget target, ISkilled skilled)
 {
     return(target is AreaTarget);
 }
コード例 #15
0
 /// <summary>
 /// Checks the skill target for correctness.
 /// </summary>
 /// <param name="target">The target.</param>
 /// <param name="skilled">The skill owner (caster).</param>
 /// <returns>
 ///   <c>true</c> if the target is correct; otherwise, <c>false</c>.
 /// </returns>
 public override bool VerifyTarget(ITarget target, ISkilled skilled)
 {
     return(target != null && skilled != null && target is ITargetAttackable attackable &&
            attackable.IsAlive && attackable.CanBeAttackedBy(skilled));
 }
コード例 #16
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TargetHandleStrategyUseSkill"/> class.
 /// </summary>
 /// <param name="unit">The unit.</param>
 /// <param name="skill">The skill.</param>
 /// <exception cref="ArgumentNullException">skill</exception>
 /// <exception cref="ArgumentException">unit</exception>
 public TargetHandleStrategyUseSkill(Unit unit, ISkill skill) : base(unit)
 {
     this.skill = skill ?? throw new ArgumentNullException(nameof(skill));
     skilled    = unit as ISkilled ?? throw new ArgumentException(nameof(unit), $"{nameof(unit)} must be {nameof(ISkilled)}.");
 }
コード例 #17
0
 /// <summary>
 /// Uses skill on specific target.
 /// </summary>
 /// <param name="target">The target.</param>
 /// <param name="owner">The skill owner (caster).</param>
 public abstract void UseSkill(ITarget target, ISkilled owner);
コード例 #18
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SkillTargetArgsSelecting"/> class.
 /// </summary>
 /// <param name="skillOwner">The skill owner.</param>
 /// <param name="skill">The skill.</param>
 /// <param name="indexButton">The skill button index.</param>
 /// <exception cref="ArgumentNullException">
 /// skillOwner
 /// or
 /// skill
 /// </exception>
 public SkillTargetArgsSelecting(ISkilled skillOwner, ISkill skill, int indexButton) : base(false)
 {
     SkillOwner  = skillOwner ?? throw new ArgumentNullException(nameof(skillOwner));
     Skill       = skill ?? throw new ArgumentNullException(nameof(skill));
     IndexButton = indexButton;
 }
コード例 #19
0
 /// <summary>
 /// Uses skill on specific target.
 /// </summary>
 /// <param name="target">The target.</param>
 /// <param name="owner">The skill owner (caster).</param>
 public override void UseSkill(ITarget target, ISkilled owner)
 {
     data.LaunchIceBolt(owner, target, Level, ObjectsPool);
     StartRecharging();
 }