Ejemplo n.º 1
0
        private void UpdateHealth()
        {
            var health      = StatHelpers.CalculateStat(m_actor, StatId.Current_Health);
            var totalHealth = StatHelpers.CalculateStat(m_actor, StatId.Total_Health);
            var perc        = (health / totalHealth);

            m_contentImage.fillAmount = perc;
        }
        protected override void Execute(List <GameEntity> entities)
        {
            foreach (var e in entities)
            {
                var currentHp = StatHelpers.CalculateStat(e, StatId.Current_Health);

                if (currentHp <= 0)
                {
                    if (e.hasAnimationDirector)
                    {
                        var clip = e.animationDirector.director.CreateAnimationClip("miner_grunt_death_regular",
                                                                                    new List <AnimationEvent>());
                        e.animationDirector.director.AddAnimation("miner_grunt_death_regular", clip);
                        e.animationDirector.director.PlayAnim("miner_grunt_death_regular", true, false);
                    }

                    e.isDead = true;
                }
            }
        }
Ejemplo n.º 3
0
        protected override void Execute(List <GameEntity> entities)
        {
            //Organised systems better to avoid having to do this
            foreach (var e in m_takeDamageComplete.GetEntities())
            {
                e.isTakeDamageComplete = false;
            }


            foreach (var e in entities)
            {
                var attacks     = e.takeDamage.attacks;
                var totalDamage = 0f;

                foreach (var atk in attacks)
                {
                    totalDamage += atk.Value;
                }


                if (e.hasStatDirector == false)
                {
                    Debug.LogWarning("Can't take damage without Stat Director!");
                }

                StatHelpers.DecreaseStatValue(e, StatId.Current_Health, totalDamage);
                e.RemoveTakeDamage();
                e.isTakeDamageComplete = true;

                ShakeHelpers.AddShake(e, new Vector2(.05f, .05f), .25f);


                foreach (var atk in attacks)
                {
                    foreach (var listener in m_damageListeners.GetEntities())
                    {
                        listener.listener_EntityDamaged.listener.OnEntityDamaged(e.id.value, atk.Key, totalDamage);
                    }
                }
            }
        }
Ejemplo n.º 4
0
        /*----------------------------------------------------------------------------------------------------------------------
        *  Assuming the prefab is setup correctly with the environment collider being solid and the ship collider being a trigger,
        *       this will trigger when the ship collider starts to collide with something.
        *  ----------------------------------------------------------------------------------------------------------------------*/
        public override void OnTriggerEnter(Collider other)
        {
            base.OnTriggerEnter(other);

            // don't do anything against the object that owns the projectile or trigger behaviours
            if (other.gameObject == Origin || other.GetComponent <NgTriggerBehaviour>())
            {
                return;
            }

            // destroy Mines
            if (other.CompareTag("Explosive"))
            {
                DestroyExplosive(other.GetComponent <Explosive>());
                StatHelpers.MinesweeperStatAndAchievementHandler(Owner);
            }

            // do nothing if the rocket doesn't collide with a track or ship
            int layer = other.gameObject.layer;

            if (layer != LayerIDs.Ship)
            {
                return;
            }

            // get the other ship from the hit objects root transform
            Transform shipT   = other.gameObject.transform.root;
            ShipRefs  hitRef  = shipT.GetComponent <ShipRefs>();
            bool      hitShip = ShipImpact(hitRef);

            // if we can increase the score from the impact (team race), increase the ships score
            if (hitShip && Owner && Owner.CanIncreaseScoreFrom(hitRef))
            {
                Owner.IncreaseScore(WeaponConstants.EliminatorSettings.Mines);
            }

            // finally destroy the grenade
            DestroyProjectile(shipT);
        }
Ejemplo n.º 5
0
        public void Execute()
        {
            foreach (var e in m_mover.GetEntities())
            {
                var position       = e.position.value;
                var targetPosition = e.move.value;

                var diff = targetPosition - position;
                var dist = diff.magnitude;

                var arriveDistance = e.arriveDistance.value;

                var velocity = Vector2.zero;

                if (e.hasVelocity)
                {
                    velocity = e.velocity.value;
                }

                var speed       = StatHelpers.CalculateStat(e, StatId.Movement_Speed);
                var targetSpeed = Vector2.zero;
                var force       = 1f;

                var isSlowingDown = dist < arriveDistance;
                var stopMoving    = false;

                if (isSlowingDown)
                {
                    targetSpeed = diff * speed * (diff.magnitude / arriveDistance);

                    stopMoving = dist <= 0.25;

                    if (e.hasDeceleration)
                    {
                        force = e.deceleration.value;
                    }
                }
                else
                {
                    targetSpeed = diff.normalized * speed;
                    if (e.hasAcceleration)
                    {
                        force = e.acceleration.value;
                    }
                }


                var steering = targetSpeed - velocity;
//                steering *= force;

                if (e.hasSteering)
                {
                    steering += e.steering.value;
                }

                if (stopMoving)
                {
                    e.RemoveMove();
                    e.isMoveComplete = true;
                    steering         = Vector2.zero - velocity;
                }

                e.ReplaceSteering(steering);
            }
        }