KLSkillSelectPanel.lua 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. ---@class KLSkillSelectPanel:UIKmlLuaPanelBase
  2. ---@field view KLSkillSelectPanelView
  3. ---@field skillData number[]
  4. ---@field skillItems table<KingML.KmlControl,KLUISkillItem>
  5. local KLSkillSelectPanel = class(UIKmlLuaPanelBase)
  6. local this =KLSkillSelectPanel
  7. function this:AsyncLoadUI()
  8. end
  9. ---创建时调用一次
  10. function this:Init()
  11. GUI:DataListInitData(self.view.loopscrollviewData, function()
  12. return self:ItemCountFunc()
  13. end, function(realIndex)
  14. return self:ItemGetFunc(realIndex)
  15. end, function(realIndex, kmlCtrl)
  16. return self:ItemInitFunc(realIndex, kmlCtrl)
  17. end, function(realIndex, kmlCtrl)
  18. return self:ItemUpdateFunc(realIndex, kmlCtrl)
  19. end)
  20. self.skillData = {}
  21. end
  22. function this:ItemCountFunc()
  23. return #self.skillData
  24. end
  25. function this:ItemGetFunc(realIndex)
  26. ---@type KLSkillSelectItem
  27. local item = GUI:UIPanel_Open("dev/outui/Skill/Item/KLSkillSelect/KLSkillSelectItem", self.view.loopscrollviewData, self, nil, true)
  28. if not self.skillItems then
  29. ---@type table<KingML.KmlControl,KLSkillSelectItem>
  30. self.skillItems = {}
  31. end
  32. local kmlCtrl = item.view.root
  33. self.skillItems[kmlCtrl] = item
  34. return kmlCtrl
  35. end
  36. ---@param kmlCtrl KingML.KmlControl
  37. function this:ItemInitFunc(realIndex, kmlCtrl)
  38. end
  39. ---@param kmlCtrl KingML.KmlControl
  40. function this:ItemUpdateFunc(realIndex, kmlCtrl)
  41. local item = self.skillItems[kmlCtrl]
  42. local luaIndex = realIndex + 1
  43. item:UpdateUI(self.skillData[luaIndex],luaIndex)
  44. end
  45. ---@param skillList number[]
  46. function this:UpdateUI(skillList)
  47. self.skillData = skillList
  48. GUI:DataListUpdateData(self.view.loopscrollviewData)
  49. end
  50. ---注册UI事件和服务器消息
  51. function this:RegistEvents()
  52. GUI:AddOnClickEvent(self.view.Close, self, self.Close)
  53. SL:RegisterLUAEvent(LUA_EVENT_SelectSkill_Change,self.ChangeSelectSkill,self)
  54. end
  55. function this:ChangeSelectSkill(_, message)
  56. for i, v in pairs(self.skillItems) do
  57. v:ChangeSelectSkill()
  58. end
  59. end
  60. ---界面显示时调用一次
  61. function this:Show()
  62. self.nowSelectSkill=0
  63. table.clear(self.skillData)
  64. local skillList = SL:GetMetaValue(EMetaVarGetKey.SKILL_ID_LIST_DATA)
  65. for i, v in ipairs(skillList) do
  66. ---取出没锁的
  67. if SL:GetMetaValue(EMetaVarGetKey.SKILL_DATA, v) and SL:GetMetaValue(EMetaVarGetKey.SKILL_CHECK_IS_UNLOCK,v) then
  68. table.insert(self.skillData,v)
  69. end
  70. end
  71. self:UpdateUI(self.skillData)
  72. end
  73. ---创建或者刷新界面数据时调用
  74. function this:Refresh()
  75. end
  76. function this:Hide()
  77. end
  78. function this:Close()
  79. --self.lastSelect=nil
  80. GUI:UIPanel_Close("dev/outui/Skill/Panel/KLSkillSelect/KLSkillSelectPanel")
  81. end
  82. ---@param kmlCtrl UIKmlLuaControl
  83. ---@param eventType EUIEventName
  84. function this:OnTouchEvent(kmlCtrl, eventType, args,skillId)
  85. if eventType == EUIEventName.OnPointerEnter then
  86. self.nowSelectSkill=skillId
  87. elseif eventType== EUIEventName.OnPointerExit then
  88. if self.nowSelectSkill==skillId then
  89. self.nowSelectSkill=0
  90. end
  91. end
  92. end
  93. return this