Example #1
0
        public void ProcessEvent(MessageArgs msg)
        {
            MsgWaitStruce systemParameters = (msg as MsgWait).Parameter;

            if (systemParameters.complete == false)
            {
                if (waitQueue.ContainsKey(systemParameters.targetMsg))
                {
                    if (waitQueue[systemParameters.targetMsg].ContainsKey(systemParameters.waitObject))
                    {
                        Debug.LogError("AttributeWait,相同的对象传递了两次False,队列为:" + systemParameters.targetMsg);
                    }
                    else
                    {
                        waitQueue[systemParameters.targetMsg].Add(systemParameters.waitObject, false);
                    }
                }
                else
                {
                    Debug.LogError("没有指定队列:" + systemParameters.targetMsg);
                }
            }
            else
            {
                waitQueue[systemParameters.targetMsg][systemParameters.waitObject] = true;
                CheakQueue(systemParameters.targetMsg);
            }
        }
Example #2
0
        public void StartOperation(MessageArgs msg, params object[] operations)
        {
            #region 添加下一个操作
            if (operations != null)
            {
                if (!nextExecute.ContainsKey(msg.Token))
                {
                    nextExecute.Add(msg.Token, operations[0] as Action);
                }
                else
                {
                    nextExecute[msg.Token] = operations[0] as Action;
                }
            }
            else
            {
                Debug.LogError("没有执行队列");
                return;
            }
            #endregion

            #region 添加到等待队列
            if (!waitQueue.ContainsKey(msg.Token))
            {
                waitQueue.Add(msg.Token, new Dictionary <INotifiedObject, bool>());
            }
            waitQueueComplete.Add(msg.Token, false);

            #endregion

            waitQueueComplete[msg.Token] = true;

            CheakQueue(msg.Token);
        }
Example #3
0
 public void SendMsg(MessageArgs msg, string handler, object[] parameters)//发送消息方法
 {
     //msg.Source = notifiedObject;
     if (!MsgHandlers.ContainsKey(handler))
     {
         MsgHandlers.Add(handler, FrameManager.CreateInstence <IMsgHandler>(handler, null));
     }
     MsgHandlers[handler].StartOperation(msg, parameters);
 }
 public void ProcessEvent(MessageArgs msg)
 {
     if (MsgEventHandlers.ContainsKey(msg.Token))
     {
         MsgEventHandlers[msg.Token].Invoke(msg);
     }
     else
     {
         MsgLog($"Common中没有注册用于处理{msg.Token}的方法");
     }
 }
Example #5
0
 public void ReceiveMessage(MessageArgs msg)
 {
     foreach (var kv in MsgHandlers.Values)
     {
         if (kv.MsgEventHandlers.ContainsKey(msg.Token))
         {
             kv.ProcessEvent(msg);
             return;
         }
     }
     MsgLogError($"查找{msg.Token}的执行方法时出错!在{notifiedObject}");
 }
Example #6
0
        public static void SendMsg(MessageArgs msg)
        {
            switch (msg.SendMode)
            {
            case MsgSendMode.Auto:
            case MsgSendMode.Local:
                //BasicManager.Instence.GetObject<MsgManager>(msg.MsgSystem).SendMsg(msg);
                break;

            case MsgSendMode.Global:

                break;

            default:
                MsgLogError("Manager收到了一个 未标注发送模式,或无法处理对应模式的Msg");
                break;
            }
        }
 public void StartOperation(MessageArgs msg, params object[] operations)
 {
     MsgLog($"由Common发送了一个{msg.Token}消息");
     MsgManager.SendMsg(msg);
 }