LegitTeddyBears

Health

Jun 3rd, 2017
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.58 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class Health : MonoBehaviour {
  6.     public int maxHealth = 100;
  7.     int m_curHealth;
  8.     MessageHandler m_messageHandler;
  9.  
  10.  
  11.     void Start ()
  12.     {
  13.         m_curHealth = maxHealth;
  14.         m_messageHandler = GetComponent<MessageHandler>();
  15.  
  16.         if(m_messageHandler)
  17.         {
  18.             m_messageHandler.RegisterDelegate(RecieveMessage);
  19.         }
  20.     }
  21.     void RecieveMessage(MessageType msgType, GameObject go, MessageData msgData)
  22.     {
  23.         switch (msgType)
  24.         {
  25.             case MessageType.DAMAGED:
  26.                 DamageData dmgData = msgData as DamageData;
  27.                 if(dmgData != null)
  28.                 {
  29.                     DoDamage(dmgData.damage, go);
  30.                 }
  31.                 break;
  32.         }
  33.     }
  34.     void DoDamage(int dmg, GameObject go)
  35.     {
  36.         m_curHealth -= dmg;
  37.  
  38.  
  39.         if(m_curHealth <= 0)
  40.         {
  41.             m_curHealth = 0;
  42.  
  43.             if (m_messageHandler)
  44.             {
  45.                 DeathData deathData = new DeathData();
  46.                 deathData.attacker = go;
  47.                 deathData.attacked = gameObject;
  48.  
  49.                 m_messageHandler.GiveMessage(MessageType.DIED, gameObject, deathData);
  50.             }
  51.         }
  52.         if (m_messageHandler)
  53.         {
  54.             HealthData hpData = new HealthData();
  55.  
  56.             hpData.maxHealth = maxHealth;
  57.             hpData.curHealth = m_curHealth;
  58.  
  59.             m_messageHandler.GiveMessage(MessageType.HEALTHCHANGED, gameObject, hpData);
  60.         }
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment