コード例 #1
0
 public void UnRegisterNetEvent(NetProtocolEnum InNetProtocol, Action <bool, JsonData> InEventAction)
 {
     if (netActionDicts.ContainsKey(InNetProtocol))
     {
         netActionDicts[InNetProtocol] -= InEventAction;
     }
 }
コード例 #2
0
 public void UnRegisterNetEvent(NetProtocolEnum InNetProtocol, Action InEventAction)
 {
     if (netActionWithoutDataDicts.ContainsKey(InNetProtocol))
     {
         netActionWithoutDataDicts[InNetProtocol] -= InEventAction;
     }
 }
コード例 #3
0
        public NetMsg(NetProtocolEnum InNetProtocolEnum, JsonData InMsgJsonData, int InKey)
        {
            Assert.IsNotNull(InMsgJsonData);

            Key = InKey;
            InMsgJsonData["msgMark"] = Key;
            NetProtocolType          = InNetProtocolEnum;
            InMsgJsonData["name"]    = InNetProtocolEnum.GetNetProtocolName();
            binaryMsg = Encoding.Default.GetBytes(InMsgJsonData.ToJson());

            WhetherWaiting = false;
        }
コード例 #4
0
        public void RegisterNetEvent(NetProtocolEnum InNetProtocol, Action InEventAction)
        {
            Assert.IsNotNull(InEventAction, "No function can be invoked.");

            if (netActionWithoutDataDicts.ContainsKey(InNetProtocol))
            {
                netActionWithoutDataDicts[InNetProtocol] += InEventAction;
            }
            else
            {
                netActionWithoutDataDicts.Add(InNetProtocol, InEventAction);
            }
        }
コード例 #5
0
        public NetMsg(NetProtocolEnum InNetProtocolEnum, JsonData InMsgJsonData)
        {
            Assert.IsNotNull(InMsgJsonData);

            NetProtocolType       = InNetProtocolEnum;
            InMsgJsonData["name"] = InNetProtocolEnum.GetNetProtocolName();

            Key = singletonKey;
            InMsgJsonData["echo"] = Key;
            binaryMsg             = Encoding.Default.GetBytes(InMsgJsonData.ToJson());

            WhetherWaiting = false;

            if (++singletonKey == int.MaxValue)
            {
                singletonKey = 1;
            }
        }
コード例 #6
0
        public void NetEventTrigger(NetProtocolEnum InNetProtocol, bool InNetResult, JsonData InNetMsg)
        {
            Action <bool, JsonData> eventAction;

            if (netActionDicts.TryGetValue(InNetProtocol, out eventAction))
            {
                eventAction.Invoke(InNetResult, InNetMsg);

                netActionDicts.Remove(InNetProtocol);
            }

            if (InNetResult)
            {
                Action eventWithoutDataAction;
                if (netActionWithoutDataDicts.TryGetValue(InNetProtocol, out eventWithoutDataAction))
                {
                    eventWithoutDataAction.Invoke();

                    netActionWithoutDataDicts.Remove(InNetProtocol);
                }
            }
        }
コード例 #7
0
        public static string GetNetProtocolName(this NetProtocolEnum InNetProtocolEnum)
        {
            switch (InNetProtocolEnum)
            {
            case NetProtocolEnum.Q3RDAuthWebGL:
                return("Q3RDAuthWebGL");

            case NetProtocolEnum.Q3RDWSEnter:
                return("Q3RDWSEnter");

            case NetProtocolEnum.QDataUpdate:
                return("QDataUpdate");

            case NetProtocolEnum.QCustomsDataPut:
                return("QCustomsDataPut");

            case NetProtocolEnum.QPing:
                return("QPing");

            default:
                Debug.LogWarning("为了避免GC,请先完善转换器。");
                return(InNetProtocolEnum.ToString());
            }
        }
コード例 #8
0
 /// <summary>
 /// 不需要把协议名加入到InProtocolData中,NetMsg类会自动添加name字段
 /// </summary>
 /// <param name="InNetProtocolEnum">协议类型</param>
 /// <param name="InProtocolData">协议参数</param>
 public void Request(NetProtocolEnum InNetProtocolEnum, JsonData InProtocolData)
 {
     Enqueue(new NetMsg(InNetProtocolEnum, InProtocolData));
 }