using System.Collections.Generic; using Data; using Managers; using Utils; namespace AI { public class JobNode_Nanorobots:LeafNodeBase { private Dictionary children = new(); public override void Init(BehaviorTreeDef def, Entity.Entity selfEntity) { base.Init(def, selfEntity); var robotLogicDefs = DefineManager.Instance.QueryDefinesByType(); List robotLogicBehaviorTreeDefs = new(); foreach (var logicDef in robotLogicDefs) { var logic=logicDef.behaviorTree; if(logic==null) continue; robotLogicBehaviorTreeDefs.Add(logic); } foreach (var behaviorDef in robotLogicBehaviorTreeDefs) { var behaviorTree = BehaviorTreeUtils.ConvertToAIBase(behaviorDef); if (behaviorTree == null) continue; behaviorTree.Init(behaviorDef, selfEntity); children.Add(behaviorDef.defName, behaviorTree); } } protected override Status ExecuteLeafLogic() { if (Program.Instance.CurrentRobotLogic == null) return Status.Failure; if (children.TryGetValue(Program.Instance.CurrentRobotLogic.defName, out BehaviorTreeBase behaviorTree)) { return behaviorTree.Tick(); } return Status.Failure; } } }