SkillMgr.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. 
  2. using CommonAI.Zone;
  3. using CommonLang;
  4. using ET.EventType;
  5. namespace ET.Client
  6. {
  7. public class SkillMgr : Singleton<SkillMgr>
  8. {
  9. private bool inited = false;
  10. public bool Inited { get { return inited; } }
  11. private HashMap<int, SkillKeyStruct> SkillLisst = new();
  12. public SkillKeyStruct GetSkill(int index)
  13. {
  14. return SkillLisst[index];
  15. }
  16. public void Init(params int[] skills)
  17. {
  18. inited = true;
  19. SkillLisst.Clear();
  20. var CFG = UnitMgr.Instance.Actor.ZUnit.Templates;
  21. for (int i = 0; i < skills.Length; i++)
  22. {
  23. int skid = skills[i];
  24. if (skid != 0)
  25. {
  26. SkillTemplate skt = CFG.getSkill(skid);
  27. SkillLisst[i] = new SkillKeyStruct()
  28. {
  29. keyPos = i,
  30. baseSkillId = skid,
  31. icon = skt.IconName
  32. };
  33. }
  34. }
  35. EventSystem.Instance.Publish<SkillChangeEvent>();
  36. }
  37. private UnitLaunchSkillAction launchSkillAction = new UnitLaunchSkillAction();
  38. public void LanchSkill(int skillId)
  39. {
  40. launchSkillAction.SkillID = skillId;
  41. launchSkillAction.object_id = UnitMgr.Instance.Actor.Id;
  42. launchSkillAction.TargetObjID = 0;
  43. launchSkillAction.SpellTargetPos = null;
  44. launchSkillAction.IsAutoFocusNearTarget = false;
  45. launchSkillAction.Direction = 0;
  46. BattleMgr.Instance.SendAction(launchSkillAction);
  47. }
  48. }
  49. [Event(SceneType.None)]
  50. public class LaunchSkillEventHandler : BEvent<LaunchSkillEvent>
  51. {
  52. public override void OnEvent(LaunchSkillEvent a)
  53. {
  54. var skillinfo = SkillMgr.Instance.GetSkill(a.index);
  55. if (skillinfo != null)
  56. {
  57. SkillMgr.Instance.LanchSkill(skillinfo.baseSkillId);
  58. }
  59. else
  60. {
  61. Log.Error($"skill info not exist @index: {a.index}");
  62. }
  63. }
  64. }
  65. }