/// <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(); }
/// <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); }
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; }
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; }
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; }
/// <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); }
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); } }
/// <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); }
public UseThing([NotNull] ISkilled source) { _source = source ?? throw new ArgumentNullException(nameof(source)); }
public SimplePunch([NotNull] ISkilled source, [NotNull] IWeapon weapon) { _source = source ?? throw new ArgumentNullException(nameof(source)); _weapon = weapon ?? throw new ArgumentNullException(nameof(weapon)); }
/// <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)); }
public Scratch([NotNull] ISkilled source) { _source = source ?? throw new ArgumentNullException(nameof(source)); }
/// <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);
/// <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); }
/// <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)); }
/// <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)}."); }
/// <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);
/// <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; }
/// <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(); }