public void UnRegisterNetEvent(NetProtocolEnum InNetProtocol, Action <bool, JsonData> InEventAction) { if (netActionDicts.ContainsKey(InNetProtocol)) { netActionDicts[InNetProtocol] -= InEventAction; } }
public void UnRegisterNetEvent(NetProtocolEnum InNetProtocol, Action InEventAction) { if (netActionWithoutDataDicts.ContainsKey(InNetProtocol)) { netActionWithoutDataDicts[InNetProtocol] -= InEventAction; } }
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; }
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); } }
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; } }
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); } } }
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()); } }
/// <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)); }