Example #1
0
        /// <summary>
        /// Adds a message to the queue
        /// </summary>
        /// <param name="msg">Message to add in the queue</param>
        public void Queue(Message msg)
        {
            List<IEventHandler> listeners;
            _eventListenersMap.TryGetValue(msg.Event.EventHash, out listeners);
            if (listeners == null) return;

            _queueList[_activeQueue].Enqueue(msg);
        }
Example #2
0
        /// <summary>
        /// Sends a message immediately to concerned listeners
        /// </summary>
        /// <param name="msg">Message to send</param>
        public void Trigger(Message msg)
        {
            List<IEventHandler> listeners;
            _eventListenersMap.TryGetValue(msg.Event.EventHash, out listeners);
            if ((listeners == null) || (listeners.Count == 0)) return;

            for (int i = 0; i < listeners.Count; i++)
                listeners[i].HandleEvent(msg);
        }
Example #3
0
 /// <summary>
 /// Sends a message to indicate that something must be show on the screen
 /// </summary>
 /// <param name="message">Message to show</param>
 /// <param name="args">Extra parameters</param>
 private void ShowMessage(string message, params object[] args)
 {
     MessageInfo info = new MessageInfo(message, args);
     Message msg = new Message(EventTypeConstant.ShowMessageEvent, info);
     _mediator.Queue(msg);
 }
Example #4
0
 /// <summary>
 /// Sends a message to indicate that a game object is dead
 /// </summary>
 /// <param name="id">Game object id</param>
 private void SendDeathMessage(int id)
 {
     DeathInfo info = new DeathInfo(id);
     Message msg = new Message(EventTypeConstant.DeathEvent, info);
     _mediator.Queue(msg);
 }
Example #5
0
        /// <summary>
        /// Called when the mediator send a message to this class
        /// </summary>
        /// <param name="msg">Message</param>
        public void HandleEvent(Message msg)
        {
            if (msg.Event == EventTypeConstant.DamageEvent)
            {
                DamageInfo info = msg.Payload as DamageInfo;
                if(info == null)
                    throw new Exception();

                DoDamage(info.GameObjectId, info.Damage);
            }
        }
Example #6
0
 /// <summary>
 /// Sends a message that indicates the poison deals damage
 /// </summary>
 /// <param name="id">Game object id</param>
 /// <param name="damage">Quantity of damage</param>
 private void SendDamage(int id, int damage)
 {
     DamageInfo damageInfo = new DamageInfo(id, damage);
     Message msg = new Message(EventTypeConstant.DamageEvent, damageInfo);
     _mediator.Queue(msg);
 }