Esempio n. 1
0
 public void DealDamage(IDamageReceiver damageReceiver, DamagesParameters damagesParameters)
 {
     if (damageReceiver.GetDamageTag != attackTag || damageReceiver.GetDamageTag == AttackTag.Enemies || damageReceiver.GetDamageTag == AttackTag.Environment)
     {
         damageReceiver.ReceiveDamage(this, damagesParameters, null);
     }
 }
Esempio n. 2
0
    public void SetUpGameGoal()
    {
        targetsToDestroyReceivers = new List <IDamageReceiver>();

        foreach (GameObject targetObject in targetsToDestroy)
        {
            if (targetObject != null)
            {
                IDamageReceiver damageReceiver = targetObject.GetComponent <IDamageReceiver>();
                if (damageReceiver != null)
                {
                    targetsToDestroyReceivers.Add(damageReceiver);
                    damageReceiver.OnDeath += new OnLifeEvent(RemoveTargetToDestroy);
                }
            }
        }

        foreach (TargetZone targetZone in zonesToGoTo)
        {
            targetZone.OnPlayerEnter += RemoveZoneToGoTo;
            targetZone.StartZone();
        }

        foreach (FleeingEnemyShip ship in shipsToCatch)
        {
            ship.OnFleeingEnemyCatched = RemoveCatchedShip;
        }
    }
Esempio n. 3
0
        /// <summary>
        /// Called when the projectile collides with something.
        /// </summary>
        /// <param name="collision">Collision info</param>
        protected void OnCollisionEnter(Collision collision)
        {
            if (!Destroyed)
            {
                //ApplyDamage();
                IDamageReceiver dmgRec = collision.transform.GetComponent <IDamageReceiver>();
                if (dmgRec != null)
                {
                    dmgRec.TakeDamage(damage);
                }

                // Stops the projectile
                Rigidbody.velocity = Vector3.zero;

                // Passes collision information to the weapon
                PassCollisionInfoToWeapon(this);

                // Creates a hit mark at the point of impact
                //if (!hitMarkCreated)
                //{
                //    CreateHitMark(collision);
                //    hitMarkCreated = true;
                //}

                DestroyObject();
            }
        }
    private void OnTriggerEnter(Collider other)
    {
        IDamageReceiver damageReceiver = other.GetComponent <IDamageReceiver>();

        if (damageReceiver != null)
        {
            if (damageReceiver == relatedProjectile.GetSourceDamageReceiver)
            {
                return;
            }

            if (GetDamageTag == AttackTag.Environment || GetDamageTag == AttackTag.Enemies || GetDamageTag != damageReceiver.GetDamageTag)
            {
                DealDamage(damageReceiver, relatedProjectile.GetDamagesParameters);
            }
        }

        if (relatedProjectile.PersistantAndPlaced)
        {
            IDamageSource damageSource = other.GetComponent <IDamageSource>();
            if (damageSource != null && damageReceiver == null)
            {
                relatedProjectile.ExplodeOnContact();
            }
        }

        if (other.GetComponent <Obstacle>() != null)
        {
            relatedProjectile.ExplodeOnContact();
        }
    }
Esempio n. 5
0
    void OnTriggerEnter2D(Collider2D collider)
    {
        IDamageReceiver damageReceiver = collider.GetComponent <IDamageReceiver>();

        damageReceiver?.TakeHit(damage);
        Destroy(gameObject);
    }
    public void DealDamage(IDamageReceiver damageReceiver, DamagesParameters damagesParameters)
    {
        damageReceiver.ReceiveDamage(this, damagesParameters, relatedProjectile.GetProjectileSpecialParameters);

        if (relatedProjectile.GetProjectileSpecialParameters.GetPiercingParameters.GetNumberOfPiercing > 0)
        {
            relatedProjectile.GetProjectileSpecialParameters.GetPiercingParameters.DecreamentPiercing();

            FeedbackObject woodProjection = GameManager.gameManager.PoolManager.GetFeedbackObject(FeedbackObjectPoolTag.WoodDestruction, PoolInteractionType.GetFromPool);
            if (woodProjection != null)
            {
                woodProjection.transform.position = transform.position;
                woodProjection.StartFeedback(2, 0.2f, specialSound);
            }
        }
        else if (relatedProjectile.GetProjectileSpecialParameters.GetSkeweringParameters.Skewering)
        {
            FeedbackObject woodProjection = GameManager.gameManager.PoolManager.GetFeedbackObject(FeedbackObjectPoolTag.WoodDestruction, PoolInteractionType.GetFromPool);
            if (woodProjection != null)
            {
                woodProjection.transform.position = transform.position;
                woodProjection.StartFeedback(2, 0.2f, specialSound);
            }
        }
        else
        {
            relatedProjectile.ExplodeOnContact();
        }
    }
Esempio n. 7
0
    private void OnHitPlayer()
    {
        IDamageReceiver playerDamage = m_player.GetComponent <IDamageReceiver>();

        playerDamage.ReceiveDamage(m_damage);
        Destroy(gameObject);
    }
        public void InflictDamage(IDamageReceiver receiver)
        {
            float damage = GetDamage();

            receiver.ReceiveDamage(damage);
            eventOnDamageInflicted?.Invoke(damage);
        }
Esempio n. 9
0
 public void DealDamage(IDamageReceiver receiver)
 {
     if (receiver != null)
     {
         receiver.ReceiveDamage(int.MaxValue);
     }
 }
Esempio n. 10
0
        protected void OnTriggerEnter2D(Collider2D other)
        {
            IDamageReceiver damageReceiver = other.GetComponent <IDamageReceiver>();

            if (damageReceiver != null)
            {
                //Debug.Log("Hit a damage receiver.");
                // Check if the other GameObject is a PlayerSpaceship.
                if (other.gameObject.GetComponent <PlayerSpaceship>() != null)
                {
                    // If it is, check if it is immortal.
                    if (!other.gameObject.GetComponent <PlayerSpaceship>()._isImmortal)
                    {
                        damageReceiver.TakeDamage(GetDamage());
                    }
                }
                else
                {
                    damageReceiver.TakeDamage(GetDamage());
                }
            }
            if (!_weapon.DisposeProjectile(this))
            {
                Debug.LogError("Couldn't dispose projectile.");
                Destroy(gameObject);
            }
        }
        public void OnPlayerEnter(IDamageReceiver damageReceiver)
        {
            currentState = EnemyState.Wait;

            fixedTime = Time.unscaledTime + timeStop;

            damageReceiver.AddDamage(0);
        }
Esempio n. 12
0
 public void SetUp()
 {
     activeOutMapZones = new List <OutMapZone>();
     //playerLifeManager = GameManager.gameManager.Player.LfManager;
     playerReceiver             = GameManager.gameManager.Player.GetShipDamageReceiver;
     vignetteCurve.preWrapMode  = WrapMode.PingPong;
     vignetteCurve.postWrapMode = WrapMode.PingPong;
 }
Esempio n. 13
0
    private void SendDamage(Collider other)
    {
        IDamageReceiver receiver = other.transform.GetComponent <IDamageReceiver>();

        if (receiver != null)
        {
            receiver.TakeDamage(10);
        }
    }
Esempio n. 14
0
 public void DealDamage(IDamageReceiver receiver)
 {
     if (receiver != null)
     {
         int damage = Damage + Random.Range(-10, 20);
         Debug.Log(damage + " урона нанесено");
         receiver.ReceiveDamage(damage);
     }
 }
    public void TakeDamage(float damage)
    {
        IDamageReceiver d = Behaviour as IDamageReceiver;

        if (d == null)
        {
            throw new Exception("Behaviour does not implement 'IDamageReceiver'.");
        }
        d.Damage(damage);
    }
Esempio n. 16
0
        public HealthModifier(IDamageReceiver _receiver, TankType _damageType)
        {
            if (_receiver == null)
            {
                return;
            }
            var damagePoint = TableService.Instance.GetDamagePoint(_damageType);

            _receiver.TakeDamage(damagePoint);
        }
        protected void OnTriggerEnter2D(Collider2D other)
        {
            IDamageReceiver damageReceiver = other.GetComponent <IDamageReceiver>();

            if (damageReceiver != null)
            {
                damageReceiver.TakeHealth(_healAmount);
            }

            Destroy(gameObject);
        }
Esempio n. 18
0
 protected virtual void OnHit(GameObject hitObj, Vector3 hitPosition)
 {
     if (hitObj != null)
     {
         //Debug.Log("Hit " + hitObj.name);
         IDamageReceiver dmgRec = hitObj.transform.GetComponent <IDamageReceiver>();
         if (dmgRec != null)
         {
             dmgRec.TakeDamage(GetDamage());
         }
     }
 }
Esempio n. 19
0
    private void OnTriggerEnter2D(Collider2D other)
    {
        IDamageReceiver receiver = other.GetComponent <IDamageReceiver>();

        if (receiver != null)
        {
            if (receiver.OnDamage(hitTarget))
            {
                Destroy(gameObject);
            }
        }
    }
Esempio n. 20
0
 /// <summary>
 /// Deal damage
 /// </summary>
 /// <param name="receiver">Damage receiver</param>
 public void DealDamage(IDamageReceiver damageReceiver)
 {
     if (damageReceiver == null)
     {
         Debug.LogError("Damage receiver is null");
         return;
     }
     damageReceiver.Damage(Damage);
     if (DamageDealedEvent != null)
     {
         DamageDealedEvent(Damage);
     }
 }
Esempio n. 21
0
        /// <summary> Applies damage to an object that can receive it. </summary>
        public static int ApplyDamage(IDamageReceiver receiver, int damageAmount)
        {
            int newHealthAmount = Math.Max(0, receiver.Health - damageAmount);
            int damageDone      = receiver.Health - newHealthAmount;

            receiver.Health = newHealthAmount;
            if (receiver.Health <= 0)
            {
                receiver.OnHealthDepleted();
            }

            return(damageDone);
        }
Esempio n. 22
0
        public void RpcLaunch(Vector3 direction, GameObject shooter)
        {
            //TODO: Add particle effects.
            _flyTimer = flyTime;
            self      = shooter.GetComponent <IDamageReceiver>();
            GetComponent <SphereCollider>().enabled = true;
            Rigidbody.AddForce(direction.normalized * _shootingForce, ForceMode.Impulse);

            if (isServer)
            {
                _initialized = true;
            }
        }
Esempio n. 23
0
 /// <summary>
 /// Heal a damage receiver
 /// </summary>
 /// <param name="damageReceiver">Damage receiver</param>
 public void Heal(IDamageReceiver damageReceiver)
 {
     if (damageReceiver == null)
     {
         Debug.LogError("Damage receiver is null");
         return;
     }
     damageReceiver.Heal(AmountOfHealing);
     if (HealingDealedEvent == null)
     {
         HealingDealedEvent(AmountOfHealing);
     }
 }
Esempio n. 24
0
    public void CheckForEnemyPhase(IDamageReceiver damageReceiver)
    {
        if (nextPhaseIndex >= enemyPhaseParameters.Count)
        {
            return;
        }

        float currentLifePercent = lifeManager.GetCurrentLifePercentage;

        if (currentLifePercent <= enemyPhaseParameters[nextPhaseIndex].GetLifePercentToAsign)
        {
            AssignNextPhase();
        }
    }
Esempio n. 25
0
        protected void OnTriggerEnter2D(Collider2D other)
        {
            IDamageReceiver damageReceiver = other.GetComponent <IDamageReceiver>();

            if (damageReceiver != null)
            {
                damageReceiver.TakeDamage(GetDamage());
            }
            if (_Weapon.DisposePrjectile(this) == false)
            {
                Destroy(this.gameObject);
                Debug.LogError("Error in disposing projectile");
            }
        }
Esempio n. 26
0
 private void ChkPossibilities(ref IDamageReceiver[] possibleReceivers)
 {
     foreach (var receiver in possibleReceivers)
     {
         if (receiver == this)
         {
             // This receiver does not count as it's only a form of a proxy.
             continue;
         }
         else
         {
             _damageReceiver = receiver;
         }
     }
 }
Esempio n. 27
0
        private void ApplyDamage()
        {
            List <IDamageReceiver> alreadyDamaged = new List <IDamageReceiver>();

            Collider[] damageReceivers = Physics.OverlapSphere(transform.position, explosionRadius, _hitMask);
            for (int i = 0; i < damageReceivers.Length; i++)
            {
                IDamageReceiver damageReceiver = damageReceivers[i].GetComponentInParent <IDamageReceiver>();
                if (damageReceiver != null && !alreadyDamaged.Contains(damageReceiver))
                {
                    alreadyDamaged.Add(damageReceiver);
                    damageReceiver.TakeDamage(_damage);
                }
            }
        }
        protected void OnTriggerEnter2D(Collider2D other)
        {
            IDamageReceiver damageReceiver = other.GetComponent <IDamageReceiver>();

            if (damageReceiver != null)
            {
                damageReceiver.TakeDamage(GetDamage());
            }

            if (!_weapon.DisposeProjectile(this))
            {
                Debug.LogError("Could not return the projectile back to the pool!");
                Destroy(gameObject);
            }
        }
Esempio n. 29
0
    private void OnTriggerEnter2D(Collider2D collider)
    {
        if (collider.gameObject != m_firer)
        {
            IDamageReceiver damageReceiver = collider.gameObject.GetComponent <IDamageReceiver>();
            if (damageReceiver != null)
            {
                if (!m_enemyBullet || collider.gameObject == GameMaster.GetPlayer())
                {
                    damageReceiver.ReceiveDamage(m_damage);
                }

                Destroy(gameObject);
            }
        }
    }
Esempio n. 30
0
        public virtual void ProcessAttack(AttackData attackData)
        {
            IDamageReceiver damageReceiver = attackData.target as IDamageReceiver;

            if (damageReceiver != null)
            {
                damageReceiver.OnDamage(attackData);
            }
            else
            {
                if (attackData.target.HasMethod(attackData.method))
                {
                    attackData.target.Call(attackData.method, attackData);
                }
            }
        }