/// <summary> /// 执行行为 /// </summary> public void Execute() { if (tree == null) { return; } for (int i = 0; i < HandleList.Count; i++) { WorldWorkData data = HandleList[i]; if (tree.Evaluate(data)) { int treeState = tree.Execute(data); //节点运行完成 //工作结束(删除数据) if (treeState == NodeState.FINISHED) { HandleList.RemoveAt(i); } } else { tree.Transition(data); } } }
public void AddWorldWorkData(int worldId, WorldWorkData data) { if (WorldWorkDataDict.ContainsKey(worldId)) { return; } WorldWorkDataDict.Add(worldId, data); }
/// <summary> /// 添加决策实体 /// </summary> public void AddWorld(WorldWorkData workData) { if (WorldList.Contains(workData)) { return; } WorldList.Add(workData); }
/// <summary> /// 添加工作(现在不允许重复添加) /// </summary> public void AddWorkData(WorldWorkData workData) { if (HandleList.Contains(workData)) { return; } HandleList.Add(workData); }
/// <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); }
/// <summary> /// 添加决策世界 /// </summary> public void AddDecisionWorld(int decId, WorldWorkData workData) { if (!WorldDesDict.ContainsKey(decId)) { return; } BaseWorldDecision decision = WorldDesDict[decId]; decision.AddWorld(workData); }
/// <summary> /// 删除工作(在新的行为过来前,删除) /// </summary> public void RemoveWorkData(WorldWorkData workData) { if (!HandleList.Contains(workData)) { return; } //清理 Tree.Transition(workData); HandleList.Remove(workData); }
/// <summary> /// 添加决策实体 /// </summary> public void RemoveWorld(int worldId) { for (int i = 0; i < WorldList.Count; i++) { WorldWorkData workData = WorldList[i]; if (workData.Id == worldId) { WorldList.RemoveAt(i); return; } } }
/// <summary> /// 获得决策实体 /// </summary> public WorldWorkData GetWorld(int worldId) { for (int i = 0; i < WorldList.Count; i++) { WorldWorkData workData = WorldList[i]; if (workData.Id == worldId) { return(workData); } } return(null); }
/// <summary> /// 执行决策 /// </summary> public virtual void Execute() { for (int i = 0; i < WorldList.Count; i++) { WorldWorkData workData = WorldList[i]; if (Tree.Evaluate(workData)) { Tree.Execute(workData); } else { Tree.Transition(workData); } } }
/// <summary> /// 放入世界行为 /// </summary> public void PushWorldBev(WorldWorkData workData) { //删除 BaseWorldBehavior lastBehavior = GetWorldBev(workData.ClearReqId); if (lastBehavior != null) { lastBehavior.RemoveWorkData(workData); } //添加 BaseWorldBehavior currBehavior = GetWorldBev(workData.CurrReqId); if (currBehavior != null) { currBehavior.AddWorkData(workData); } }
public void AddWorldWorkData(int worldId, WorldWorkData data) { infosCenter.AddWorldWorkData(worldId, data); }
public void PushWorldBev(WorldWorkData workData) { behaviorCenter.PushWorldBev(workData); }
public void AddDecisionWorld(WorldDecGroup decId, WorldWorkData workData) { decisionCenter.AddDecisionWorld((int)decId, workData); }