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); } }
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); } }