Beispiel #1
0
 /// <summary>
 /// Adds the Message Handler as listener to a specific event in the Message Manager.
 /// </summary>
 /// <param name="rListener">MessageHandler that needs to listen to the event.</param>
 /// <param name="eType">Event that the listener needs to listen to.</param>
 public void AddListener(AF_MessageHandler rListener, AF_Message.MsgType eType)
 {
     // check if the input values are valid
     if (rListener != null && eType != AF_Message.MsgType.NONE && eType != AF_Message.MsgType.COUNT)
     {
         // check if the event that need to be listened is already in the registry
         if (m_dictEventListenersRegistry.ContainsKey(eType))
         {
             // check if the listener is not already registered to the event
             if (!m_dictEventListenersRegistry [eType].Contains(rListener))
             {
                 m_dictEventListenersRegistry [eType].Add(rListener);
             }
             else if (Debug.isDebugBuild)
             {
                 Debug.LogError("Add Listener: listener already added for the event " + eType);
             }
         }
         // otherwise I will create a new entry for the event in the registry and add the listener
         else
         {
             m_dictEventListenersRegistry.Add(eType, new List <AF_MessageHandler> ()
             {
                 rListener
             });
         }
     }
     else if (Debug.isDebugBuild)
     {
         Debug.LogError("Add Listener: some value is invalid. Can't add listener.");
     }
 }
Beispiel #2
0
 /// <summary>
 /// Removes the listener from an event's registry.
 /// </summary>
 /// <param name="rListener">Listener to remove.</param>
 /// <param name="eType">Event from whom the listener will be removed.</param>
 public void RemoveListenerFromEvent(AF_MessageHandler rListener, AF_Message.MsgType eType)
 {
     // check if the registry contains that event
     if (m_dictEventListenersRegistry.ContainsKey(eType))
     {
         // perform the check to see if the listener exists
         if (m_dictEventListenersRegistry [eType].Contains(rListener))
         {
             // and remove it
             m_dictEventListenersRegistry [eType].Remove(rListener);
         }
     }
     else if (Debug.isDebugBuild)
     {
         Debug.LogWarning("Remove listener: a listener asked to be removed from the event " + eType + " but the event is not in the registry.");
     }
 }
Beispiel #3
0
 /// <summary>
 /// Removes the listener from all the events. Usually this is used when the listener's owner is going to be destroyed.
 /// </summary>
 /// <param name="rListener">Listener to remove.</param>
 public void RemoveListenerFromAllEvents(AF_MessageHandler rListener)
 {
     // scroll the dictionary looking for the listener in all events' list
     foreach (KeyValuePair <AF_Message.MsgType, List <AF_MessageHandler> > rList in m_dictEventListenersRegistry)
     {
         // if this event list has at least one listener
         if (rList.Value.Count > 0)
         {
             // perform the check to see if the listener exists
             if (rList.Value.Contains(rListener))
             {
                 // and remove it
                 rList.Value.Remove(rListener);
             }
         }
     }
 }
Beispiel #4
0
 /// <summary>
 /// Constructor for message that includes 2 Vector3 values.
 /// </summary>
 /// <param name="msgType">Message Type.</param>
 /// <param name="value_1">Vector 3 Value 1 to include in the message.</param>
 /// <param name="value_2">Vector 3 Value 2 to include in the message.</param>
 /// <param name="sender">MsgHandler of the toy that is sending the message.</param>
 public AF_MessageVector3(AF_Message.MsgType msgType, Vector3 value_1, Vector3 value_2, AF_MessageHandler sender)
     : this(msgType, value_1, sender)
 {
     this.Value_2 = value_2;
 }
Beispiel #5
0
 /// <summary>
 /// Constructor for Vector3 message.
 /// </summary>
 /// <param name="msgType">Message Type.</param>
 /// <param name="value_1">Vector 3 Value to include in the message.</param>
 /// <param name="sender">MsgHandler of the toy that is sending the message.</param>
 public AF_MessageVector3(AF_Message.MsgType msgType, Vector3 value_1, AF_MessageHandler sender)
     : base(msgType, sender)
 {
     Value_1 = value_1;
     Value_2 = Vector3.zero;
 }
Beispiel #6
0
 /// <summary>
 /// Constructor for base message type.
 /// </summary>
 /// <param name="msgType">Message Type.</param>
 /// <param name="sender">Object ID of the sender.</param>
 public AF_Message(MsgType msgType, AF_MessageHandler sender)
 {
     Type   = msgType;
     Sender = sender;
 }
Beispiel #7
0
 /// <summary>
 /// Message including a generic type of object to send.
 /// </summary>
 /// <param name="msgType">Message Type.</param>
 /// <param name="genericObject">Object included in the message.</param>
 /// <param name="sender">Actor's ID that is sending the message.</param>
 public AF_MessageGenericObject(AF_Message.MsgType msgType, object genericObject, AF_MessageHandler sender) : base(msgType, sender)
 {
     GenericObject = genericObject;
 }
Beispiel #8
0
 /// <summary>
 /// Class for message that include an Object ID.
 /// </summary>
 /// <param name="msgType">Message Type.</param>
 /// <param name="objectHitID">Object ID included in the message.</param>
 /// <param name="sender">Actor's ID that is sending the message.</param>
 public AF_MessageObjectID(AF_Message.MsgType msgType, int objectHitID, AF_MessageHandler sender) : base(msgType, sender)
 {
     ObjectHitID = objectHitID;
 }
Beispiel #9
0
 private void Awake()
 {
     msgHandler = new AF_MessageHandler();
 }