SkillMgr.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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 = SelectTarget(skillId);
  43. launchSkillAction.SpellTargetPos = null;
  44. launchSkillAction.IsAutoFocusNearTarget = false;
  45. launchSkillAction.Direction = 0;
  46. BattleMgr.Instance.SendAction(launchSkillAction);
  47. }
  48. private uint SelectTarget(int skillId)
  49. {
  50. var CFG = UnitMgr.Instance.Actor.ZUnit.Templates;
  51. SkillTemplate skt = CFG.getSkill(skillId);
  52. if(skt.ExpectTarget == SkillTemplate.CastTarget.Enemy)
  53. {
  54. foreach(var unit in UnitMgr.Instance.AllUnits)
  55. {
  56. }
  57. }
  58. return 0;
  59. }
  60. }
  61. [Event(SceneType.None)]
  62. public class LaunchSkillEventHandler : BEvent<LaunchSkillEvent>
  63. {
  64. public override void OnEvent(LaunchSkillEvent a)
  65. {
  66. var skillinfo = SkillMgr.Instance.GetSkill(a.index);
  67. if (skillinfo != null)
  68. {
  69. SkillMgr.Instance.LanchSkill(skillinfo.baseSkillId);
  70. }
  71. else
  72. {
  73. Log.Error($"skill info not exist @index: {a.index}");
  74. }
  75. }
  76. }
  77. }