//创建决策 private void CreateDec(DecTrees DecTrees) { //实体 foreach (string key in DecTrees.EntityTrees.Keys) { EntityDecGroup group = (EntityDecGroup)Enum.Parse(typeof(EntityDecGroup), key); //创建树 NodeDataJson nodeJson = DecTrees.EntityTrees[key]; Node rootNode = Node.CreateNodeInstance(nodeJson); Node.CreateNodeRelation(rootNode, nodeJson.ChildNodes); BaseEntityDecision decision = new BaseEntityDecision(rootNode);; EntityDesDict.Add((int)group, decision); } //世界 foreach (string key in DecTrees.WorldTrees.Keys) { WorldDecGroup group = (WorldDecGroup)Enum.Parse(typeof(WorldDecGroup), key); //创建树 NodeDataJson nodeJson = DecTrees.WorldTrees[key]; Node rootNode = Node.CreateNodeInstance(nodeJson); Node.CreateNodeRelation(rootNode, nodeJson.ChildNodes); BaseWorldDecision decision = new BaseWorldDecision(rootNode); WorldDesDict.Add((int)group, decision); } }
//添加实体决策器 public void RegEntityDecision(int decId, BaseEntityDecision decision) { if (EntityDesDict.ContainsKey(decId)) { return; } EntityDesDict.Add(decId, decision); }
/// <summary> /// 删除决策实体 /// </summary> public void RemoveDecisionEntity(int decId, int entityId) { if (!EntityDesDict.ContainsKey(decId)) { return; } BaseEntityDecision decision = EntityDesDict[decId]; decision.RemoveEntity(entityId); }
/// <summary> /// 添加决策实体 /// </summary> public void AddDecisionEntity(int decId, EntityWorkData workData) { if (!EntityDesDict.ContainsKey(decId)) { ECSLocate.ECSLog.LogR("添加决策实体错误,没有对应决策树>>>>>>>", decId); return; } BaseEntityDecision decision = EntityDesDict[decId]; decision.AddEntity(workData); }
/// <summary> /// 获得决策实体 /// </summary> public EntityWorkData GetEntityWorkData(int entityId) { Entity entity = ECSLocate.ECS.GetEntity(entityId); EntityDecGroup group = entity.GetEntityDecGroup(); if (!EntityDesDict.ContainsKey((int)group)) { return(null); } BaseEntityDecision decision = EntityDesDict[(int)group]; return(decision.GetEntity(entityId)); }