Пример #1
0
 /// <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);
     }
 }
Пример #2
0
 /// <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);
 }
Пример #3
0
 public void ShowDamageText(IDamageable dst, Damager src)
 {
     ShowText("" + src.damage);
 }
Пример #4
0
 public void UpdateHpBar(IDamageable me, Damager src)
 {
     HP_bar.SetBarPercentage(me.GetCurrentHP() / (float)me.GetMaxHP());
 }
Пример #5
0
 public void OnHit(IDamageable self, Damager src)
 {
     anim.Damaged();
 }
Пример #6
0
 public void OnDie(IDamageable self, Damager src)
 {
     anim.Die();
 }