/// <summary> /// 放入世界请求 /// </summary> public void PushWorldRequest(int worldId, int reqId) { //数据 WorldWorkData workData = ECSLayerLocate.Info.GetWorldWorkData(worldId);; //ECSLayerLocate.Decision.GetWorldWorkData(worldId); if (workData == null) { return; } //请求 IWorldRequest pushRequest = GetWorldRequest(reqId); if (pushRequest == null) { //权重置换规则 bool bTmpSw = CheckCanSwitch(reqId, ref workData.NextReqId, ref workData.CurrReqId, ref workData.ClearReqId, true); if (!bTmpSw) { return; } //执行请求 ECSLayerLocate.Behavior.PushWorldBev(workData); return; } int selfSwId = reqId; //请求内部置换 int rule = pushRequest.SwitchRequest(reqId, ref selfSwId); //只需要自身判断 if (rule == ECSDefinition.RESwithRuleSelf) { //没有变化 if (workData.CurrReqId == selfSwId) { return; } workData.ClearReqId = workData.CurrReqId; workData.CurrReqId = selfSwId; //执行请求 ECSLayerLocate.Behavior.PushWorldBev(workData); return; } //权重置换规则 bool bSw = CheckCanSwitch(reqId, ref workData.NextReqId, ref workData.CurrReqId, ref workData.ClearReqId, false); if (!bSw) { return; } //执行请求 ECSLayerLocate.Behavior.PushWorldBev(workData); }
private void RegAllRequest() { List <Type> worldRequestTypes = LCReflect.GetInterfaceByType <IWorldRequest>(); List <Type> entityRequestTypes = LCReflect.GetInterfaceByType <IEntityRequest>(); if (worldRequestTypes == null && entityRequestTypes == null) { return; } //世界请求 foreach (Type type in worldRequestTypes) { WorldRequestAttribute attr = LCReflect.GetTypeAttr <WorldRequestAttribute>(type); if (attr == null) { ECSLocate.ECSLog.Log("有请求没有加特性 走权重 >>>>>>", type.Name); return; } IWorldRequest request = LCReflect.CreateInstanceByType <IWorldRequest>(type.FullName); WorldRequestDict.Add((int)attr.ReqId, request); } //实体请求 foreach (Type type in entityRequestTypes) { EntityRequestAttribute attr = LCReflect.GetTypeAttr <EntityRequestAttribute>(type); if (attr == null) { ECSLocate.ECSLog.Log("有请求没有加特性 走权重 >>>>>>", type.Name); return; } IEntityRequest request = LCReflect.CreateInstanceByType <IEntityRequest>(type.FullName); EntityRequestDict.Add((int)attr.ReqId, request); } }