using System; using System.Collections.Generic; namespace ET { public class MainStoryAIComponentAwakeSystem: AwakeSystem { public override void Awake(MainStoryAIComponent self) { MainStoryAIComponent.instance = self; } } public static class MainStoryAIComponentSystem { public static MainStoryAI CreateAI(this MainStoryAIComponent self, Team team, int mapId, AutoBattleAIType autoBattleAIType) { MainStoryAI ai = EntityFactory.CreateWithParentAndId(self, team.LeaderId); ai.Init(team, mapId,autoBattleAIType); foreach (long item in team.GetUnitIds()) { self.aiIdDic[item] = ai.Id; } return ai; } public static MainStoryAI GetAI(this MainStoryAIComponent self, long id) { MainStoryAI ai = self.GetChild(id); return ai; } public static MainStoryAI GetAI(this MainStoryAIComponent self, Unit unit) { if (!self.aiIdDic.TryGetValue(unit.Id, out long id)) { return null; } MainStoryAI ai = self.GetChild(id); return ai; } public static bool DestoryAI(this MainStoryAIComponent self, MainStoryAI ai) { if (!ai) return false; List list = ai.team?.GetUnitIds(); if (list != null) foreach (long item in list) { self.aiIdDic.Remove(item); } ai.Dispose(); return true; } public static bool DestoryAI(this MainStoryAIComponent self, Unit unit) { MainStoryAI ai = self.GetAI(unit); return DestoryAI(self, ai); } } }