KLUICommonTalentPanel.lua 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. ---@class KLUICommonTalentPanel:UIKmlLuaPanelBase
  2. ---@field view KLUICommonTalentPanelView
  3. local KLUICommonTalentPanel = class(UIKmlLuaPanelBase)
  4. local this =KLUICommonTalentPanel
  5. ---创建时调用一次
  6. function this:Init()
  7. self.SkillItemList = {}
  8. ---点数
  9. self.points = 0
  10. GUI:DataListInitData(self.view.SkillDataList,function()
  11. return self:SkillDataListItemCountFunc()
  12. end,function(realIndex)
  13. return self:SkillDataListItemGetFunc(realIndex)
  14. end,function(realIndex, kmlcontrol)
  15. return self:SkillDataListItemInitFunc(realIndex, kmlcontrol)
  16. end, function(realIndex, kmlcontrol)
  17. return self:SkillDataListItemUpdateFunc(realIndex, kmlcontrol)
  18. end)
  19. self:GetAllTalentInfo()
  20. end
  21. ---获取天赋信息
  22. function this:GetAllTalentInfo()
  23. self.AllTalentInfoList = {}
  24. local cfg = SL:GetConfigTable("cfg_master_commontalent")
  25. ---@param v cfg_master_commontalent_column
  26. for i, v in pairs(cfg) do
  27. --筛选自己职业或者全职业(0为全职业)
  28. if table.contains(v.career,SL:MeData_GetCareer().baseCareer) or table.contains(v.career,0) then
  29. if not self.AllTalentInfoList[v.arrange] then
  30. self.AllTalentInfoList[v.arrange] = {}
  31. for z = 1, 3 do
  32. self.AllTalentInfoList[v.arrange][z] = {}
  33. end
  34. end
  35. self.AllTalentInfoList[v.arrange][v.row] = v
  36. end
  37. end
  38. GUI:DataListUpdateData(self.view.SkillDataList)
  39. end
  40. ---注册UI事件和服务器消息
  41. function this:RegistEvents()
  42. GUI:AddOnClickEvent(self.view.ResetButton,self,self.OnClickResetButton)
  43. SL:RegisterLUAEvent(LUA_EVENT_MASTER_SKILL_DATA_CHANGE, self.RES_MASTER_CHANGE_INFO, self)
  44. SL:RegisterLUAEvent(LUA_EVENT_MASTER_DATA_CHANGE, self.RES_MASTER_INFO, self)
  45. end
  46. ---点击重置
  47. function this:OnClickResetButton()
  48. GUI:UIPanel_Open("dev/outui/MasterTalent/Panel/KLUIMasterTalentWashUp/KLUIMasterTalentWashUpPanel",_,_,
  49. {type = EMasterTalentType.COMMON})
  50. end
  51. ---响应:大师信息
  52. ---{type = 类型,
  53. ---series = 系列,
  54. ---points = 天赋点数,
  55. ---exchangedExpTimes = 已兑换次数,
  56. ---level = 等级,
  57. ---exp= 当前经验,
  58. ---isFree = 是否免费,
  59. ---talent = 天赋信息有多个{{id = 配置id, level, series系列},{id = 配置id, level, series系列}}}
  60. function this:RES_MASTER_INFO(id,message)
  61. if message and message["type"] == EMasterTalentType.COMMON then
  62. self.points = message["points"]
  63. self:SetPointText()
  64. GUI:DataListUpdateData(self.view.SkillDataList)
  65. end
  66. end
  67. ---响应:大师变化信息
  68. function this:RES_MASTER_CHANGE_INFO(id,message)
  69. if message then
  70. self.points = message["points"]
  71. self:SetPointText()
  72. GUI:DataListUpdateData(self.view.SkillDataList)
  73. end
  74. end
  75. ---设置天赋点数文本
  76. function this:SetPointText()
  77. GUI:Text_setString(self.view.PointText,tostring(self.points))
  78. end
  79. --------------------------------天赋列-------------------------------------------------------
  80. function this:SkillDataListItemCountFunc()
  81. return #self.AllTalentInfoList
  82. end
  83. function this:SkillDataListItemGetFunc(realIndex)
  84. local item = GUI:UIPanel_Open("dev/outui/MasterTalent/Item/KLUIMasterTalentColumn/KLUIMasterTalentColumnItem",
  85. self.view.SkillDataList, self, {}, true)
  86. self.SkillItemList[item.view.root] = item
  87. return item.view.root
  88. end
  89. function this:SkillDataListItemInitFunc(realIndex, kmlcontrol)
  90. end
  91. function this:SkillDataListItemUpdateFunc(realIndex, kmlcontrol)
  92. local data = self.AllTalentInfoList[realIndex + 1]
  93. local item = self.SkillItemList[kmlcontrol]
  94. item:SetSkillData(data,EMasterTalentType.COMMON)
  95. end
  96. ------------------------------------------------------------------------------------------------
  97. ---创建或者刷新界面数据时调用
  98. function this:Refresh()
  99. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_MASTER_INFO,{type = EMasterTalentType.COMMON})
  100. end
  101. function this:Close()
  102. end
  103. return this