using CommonAI.Zone; using CommonLang; using ET.EventType; namespace ET.Client { public class SkillMgr : Singleton { private bool inited = false; public bool Inited { get { return inited; } } private HashMap SkillLisst = new(); public SkillKeyStruct GetSkill(int index) { return SkillLisst[index]; } public void Init(params int[] skills) { inited = true; SkillLisst.Clear(); var CFG = UnitMgr.Instance.Actor.ZUnit.Templates; for (int i = 0; i < skills.Length; i++) { int skid = skills[i]; if (skid != 0) { SkillTemplate skt = CFG.getSkill(skid); SkillLisst[i] = new SkillKeyStruct() { keyPos = i, baseSkillId = skid, icon = skt.IconName }; } } EventSystem.Instance.Publish(); } private UnitLaunchSkillAction launchSkillAction = new UnitLaunchSkillAction(); public void LanchSkill(int skillId) { launchSkillAction.SkillID = skillId; launchSkillAction.object_id = UnitMgr.Instance.Actor.Id; launchSkillAction.TargetObjID = 0; launchSkillAction.SpellTargetPos = null; launchSkillAction.IsAutoFocusNearTarget = false; launchSkillAction.Direction = 0; BattleMgr.Instance.SendAction(launchSkillAction); } } [Event(SceneType.None)] public class LaunchSkillEventHandler : BEvent { public override void OnEvent(LaunchSkillEvent a) { var skillinfo = SkillMgr.Instance.GetSkill(a.index); if (skillinfo != null) { SkillMgr.Instance.LanchSkill(skillinfo.baseSkillId); } else { Log.Error($"skill info not exist @index: {a.index}"); } } } }