/// <summary> /// hit or damaged by a damager /// </summary> /// <param name="src"></param> public virtual bool ReceiveDamage(Damager src) { if (!invincible) { //check if damage is less than 0 if (src.damage < 0) { print("damage shouldn't be less than 0!"); } beforeDamaged?.Invoke(this, src); //update current health m_current_health = Mathf.Clamp(m_current_health - src.damage, 0, m_current_health); //call back to OnDamaged method, deal with damaged event onDamaged?.Invoke(this, src); //died if (m_current_health == 0) { died?.Invoke(this, src); } else {//not die //set invincible time SetInvincible(invincible_time); //call back after damaged listener afterDamaged?.Invoke(this, src); } //receive damage success return(true); } else { //receive damage failed, because of invincible time return(false); } }
/// <summary> /// trigger when take on equipment /// </summary> public virtual void OnEquip(IEquipmentGear gear) { gameObject.SetActive(true); damager = GetComponent <Damager>(); if (damager != null) { damager.src = gear; } this.gear = gear; onEquip.Invoke(this); }
public void ShowDamageText(IDamageable dst, Damager src) { ShowText("" + src.damage); }
public void UpdateHpBar(IDamageable me, Damager src) { HP_bar.SetBarPercentage(me.GetCurrentHP() / (float)me.GetMaxHP()); }
public void OnHit(IDamageable self, Damager src) { anim.Damaged(); }
public void OnDie(IDamageable self, Damager src) { anim.Die(); }