KLUIMasterTalentMainPanel.lua 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. ---@class KLUIMasterTalentMainPanel:UIKmlLuaPanelBase
  2. ---@field view KLUIMasterTalentMainPanelView
  3. ---@field togList table<number,{cfg:cfg_system_switch_column,type:number}>
  4. local KLUIMasterTalentMainPanel = class(UIKmlLuaPanelBase)
  5. local this = KLUIMasterTalentMainPanel
  6. ---创建时调用一次
  7. function this:Init()
  8. ---是否是第一次打开界面
  9. self.isFirstOpen = true
  10. GUI:DataListInitData(self.view.TitleDatalist, function()
  11. return self:TitleDatalistItemCountFunc()
  12. end, function(realIndex)
  13. return self:TitleDatalistItemGetFunc(realIndex)
  14. end, function(realIndex, kmlcontrol)
  15. return self:TitleDatalistItemInitFunc(realIndex, kmlcontrol)
  16. end, function(realIndex, kmlcontrol)
  17. return self:TitleDatalistItemUpdateFunc(realIndex, kmlcontrol)
  18. end)
  19. self:GetTogList()
  20. end
  21. ---获取页签
  22. function this:GetTogList()
  23. self.togList = {}
  24. for i, v in pairs(EMasterTalentType) do
  25. ---@type cfg_system_switch_column
  26. local cfg = SL:GetConfig("cfg_system_switch", EMasterTalentSystemSwitchID[v])
  27. if SL:GetMetaValue(EMetaVarGetKey.IS_OPEN_SYSTEMFUNCTION, cfg.systemName) then
  28. table.insert(self.togList, { cfg = cfg, type = v })
  29. end
  30. end
  31. table.sort(self.togList, function(a, b)
  32. return EMasterTalentSortType[a.type] < EMasterTalentSortType[b.type]
  33. end)
  34. GUI:DataListUpdateData(self.view.TitleDatalist)
  35. end
  36. ---注册UI事件和服务器消息
  37. function this:RegistEvents()
  38. GUI:AddOnClickEvent(self.view.CloseButton, self, self.OnClickCloseButton)
  39. GUI:AddOnClickEvent(self.view.Mask, self, self.OnClickCloseButton)
  40. SL:RegisterLUAEvent(LUA_EVENT_MASTER_RED_DOT_CHANGE, self.LUA_EVENT_MASTER_RED_DOT_CHANGE, self)
  41. end
  42. ---创建或者刷新界面数据时调用
  43. function this:Refresh()
  44. end
  45. function this:OnClickCloseButton()
  46. ---判断一下职业天赋是否启用
  47. if self.openPanel
  48. and self.openPanel == EMasterTalentPanelPath[EMasterTalentType.CAREER]
  49. and InfoManager.masterTalentInfo:GetNowTypeSelectSeries(EMasterTalentType.CAREER) == 0 then
  50. SL:CommonTipsMessage({ stringTblID = 215,
  51. ui = self,
  52. sureBtnText = "确定",
  53. cancelBtnText = "取消",
  54. cancelCallBack = self.CloseMainPanel })
  55. return
  56. end
  57. self:CloseMainPanel()
  58. end
  59. function this:CloseMainPanel()
  60. GUI:UIPanel_Close("dev/outui/MasterTalent/Panel/KLUIMasterTalentMain/KLUIMasterTalentMainPanel")
  61. SL.ShowMainPanel()
  62. end
  63. function this:LUA_EVENT_MASTER_RED_DOT_CHANGE()
  64. GUI:DataListUpdateData(self.view.TitleDatalist)
  65. end
  66. --------------------------------顶部复选框-------------------------------------------------------
  67. function this:TitleDatalistItemCountFunc()
  68. return #self.togList
  69. end
  70. function this:TitleDatalistItemGetFunc(realIndex)
  71. end
  72. function this:TitleDatalistItemInitFunc(realIndex, kmlcontrol)
  73. end
  74. function this:TitleDatalistItemUpdateFunc(realIndex, kmlcontrol)
  75. local data = self.togList[realIndex + 1]
  76. local _toggle = GUI:GetChildControl(self.view.TitleDatalist, realIndex, 'TitleToggle')
  77. local _toggleText = GUI:GetChildControl(self.view.TitleDatalist, realIndex, 'TitleToggleText')
  78. local _toggleRedDot = GUI:GetChildControl(self.view.TitleDatalist, realIndex, 'TitleToggleRedDot')
  79. GUI:Text_setString(_toggleText, EMasterTalentName[data.type])
  80. GUI:SetToggleOnValueChange(_toggle, self, self.TitleOnToggle, data)
  81. GUI:SetActive(_toggleRedDot, InfoManager.masterTalentInfo.RedDataList[data.type])
  82. if self.isFirstOpen and realIndex == 0 then
  83. self.isFirstOpen = false
  84. if GUI:Toggle_getIsOn(_toggle) == "1" then
  85. self:TitleOnToggle(_toggle, data)
  86. else
  87. GUI:Toggle_setIsOn(_toggle, true)
  88. end
  89. end
  90. end
  91. ---@param control UIKmlLuaControl
  92. ---@param eventData {cfg:cfg_system_switch_column,type:number}
  93. function this:TitleOnToggle(control, eventData)
  94. if GUI:Toggle_getIsOn(control) == "1" then
  95. GUI:Image_loadTexture(self.view.TalentBG, EMasterTalentPanelBGStr[eventData.type], "")
  96. self.openPanel = EMasterTalentPanelPath[eventData.type]
  97. GUI:UIPanel_Open(EMasterTalentPanelPath[eventData.type])
  98. return
  99. end
  100. GUI:UIPanel_Close(EMasterTalentPanelPath[eventData.type])
  101. end
  102. function this:BGChange(src, atlas)
  103. GUI:Image_loadTexture(self.view.TalentBG, src, atlas)
  104. end
  105. ------------------------------------------------------------------------------------------------
  106. function this:Close()
  107. if self.openPanel and self.openPanel ~= "" then
  108. GUI:UIPanel_Close(self.openPanel)
  109. end
  110. end
  111. return this