コード例 #1
0
        /// <summary>
        /// Configures this instance.
        /// </summary>
        /// <param name="area">The area.</param>
        /// <param name="damage">The damage.</param>
        /// <param name="targets">The targets.</param>
        /// <param name="owner">The owner.</param>
        /// <exception cref="ArgumentOutOfRangeException">damage - Must be greater than 0.</exception>
        /// <exception cref="ArgumentNullException">
        /// targets
        /// or
        /// owner
        /// </exception>
        public void Setup(AreaTarget area, float damage, ITargetsProvider targets, ITeamMember owner)
        {
            if (area == null)
            {
                DestroyAsPoolableObject();
                return;
            }

            if (damage <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(damage), "Must be greater than 0.");
            }

            this.area    = area;
            this.damage  = damage;
            this.targets = targets ?? throw new ArgumentNullException(nameof(targets));
            this.owner   = owner ?? throw new ArgumentNullException(nameof(owner));

            meteorPaticles.transform.position = new Vector3(area.Position.x, DEFAULT_Y_POSITION, area.Position.z);
            meteorPaticles.transform.rotation = Quaternion.Euler(DEFAULT_ROTATION);

            var shape = meteorPaticles.shape;

            shape.angle  = 0;
            shape.radius = area.Radius;

            StartCoroutine(DealingDamage());
        }
コード例 #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
ファイル: Unit.cs プロジェクト: Siuniaev/RTS-Survival-Game
 /// <summary>
 /// Sets the targets provider.
 /// </summary>
 /// <param name="provider">The provider.</param>
 public void SetTargetsProvider(ITargetsProvider provider) => targets = provider;