LegitTeddyBears

MessageHandler

Jun 3rd, 2017
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.36 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public abstract class MessageData{};
  6. public enum MessageType {DAMAGED, HEALTHCHANGED, DIED};
  7. public delegate void MessageDelegate(MessageType msgType, GameObject go, MessageData msgData);
  8. public class MessageHandler : MonoBehaviour {
  9.     public List<MessageType> messages;
  10.  
  11.     List<MessageDelegate> m_messageDelegates = new List<MessageDelegate>();
  12.    
  13.     public void RegisterDelegate(MessageDelegate msgDele)
  14.     {
  15.         m_messageDelegates.Add(msgDele);
  16.     }
  17.  
  18.     public bool GiveMessage(MessageType msgType, GameObject go, MessageData msgData)
  19.     {
  20.         bool approved = false;
  21.  
  22.         for (int i = 0; i < messages.Count; i++)
  23.         {
  24.             if (messages[i] == msgType)
  25.             {
  26.                 approved = true;
  27.                 break;
  28.             }
  29.         }
  30.         if (!approved)
  31.             return false;
  32.         for (int i = 0; i < m_messageDelegates.Count; i++)
  33.         {
  34.             m_messageDelegates[i](msgType, go, msgData);
  35.         }
  36.  
  37.         return true;
  38.     }
  39. }
  40.  
  41. public class DeathData : MessageData
  42. {
  43.     public GameObject attacker;
  44.     public GameObject attacked;
  45. }
  46.  
  47. public class HealthData : MessageData
  48. {
  49.     public int maxHealth;
  50.     public int curHealth;
  51. }
  52. public class DamageData : MessageData
  53. {
  54.     public int damage;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment