private void DoDamagePopFX(DamageSourceInfo info)
 {
     if (info.popString != null && Time.time > lastPopTime + minDamagePopInterval)
     {
         PopFXManager.Instance.SpawnFX(PopFXManager.Instance.sprite_Building, info.popString, base.gameObject.transform, 1.5f, false);
         lastPopTime = Time.time;
     }
 }
 private void DoTakeDamageFX(DamageSourceInfo info)
 {
     if (info.takeDamageEffect != 0)
     {
         BuildingDef def   = GetComponent <BuildingComplete>().Def;
         int         cell  = Grid.PosToCell(this);
         int         cell2 = Grid.OffsetCell(cell, 0, def.HeightInCells - 1);
         Game.Instance.SpawnFX(info.takeDamageEffect, cell2, 0f);
     }
 }
 private void OnDoBuildingDamage(object data)
 {
     if (!invincible)
     {
         damageSourceInfo = (DamageSourceInfo)data;
         DoDamage(damageSourceInfo.damage);
         DoDamagePopFX(damageSourceInfo);
         DoTakeDamageFX(damageSourceInfo);
     }
 }
示例#4
0
        public override void applyDamage(ref _Bullet3.DamageSourceUnit ds, float takeTime, float recoveryTime)
        {
            var vaildDamage = ds.damage * (1.0f - ds.moveStoppingRate);

            var recoverableRate = 1.0f - ds.heavyRate;


            dsi = new DamageSourceInfo(ref ds);


            if (!outer.isDestroyed)
            {
                var hardDamage = vaildDamage;                // Debug.Log(hardDamage);

                outer.applyDamage(hardDamage, takeTime, recoverableRate, recoveryTime);
            }
            else                                                     // if( !inner.isDestroyed )
            {
                var softDamage = vaildDamage * ds.fragmentationRate; // Debug.Log( softDamage );

                inner.applyDamage(softDamage, takeTime, recoverableRate, recoveryTime);
            }
        }