KLUIPrivilegePanel.lua 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. ---@class KLUIPrivilegePanel:UIKmlLuaPanelBase
  2. ---@field view KLUIPrivilegePanelView
  3. local KLUIPrivilegePanel = class(UIKmlLuaPanelBase)
  4. local this =KLUIPrivilegePanel
  5. ---创建时调用一次
  6. function this:Init()
  7. ---@type cfg_privilege_column
  8. self.goldPrivilegeCfg = SL:GetConfig("cfg_privilege", 1)
  9. local goldTempList = self.goldPrivilegeCfg.PrivilegelList
  10. self.goldList = table.copy(self.goldPrivilegeCfg.StreamerList)
  11. for i, v in pairs(goldTempList) do
  12. if not table.contains(self.goldList, v) then
  13. self.goldList[#self.goldList + 1] = v
  14. end
  15. end
  16. ---@type cfg_privilege_column
  17. self.diamondPrivilegeCfg = SL:GetConfig("cfg_privilege", 2)
  18. local diamondTempList = self.diamondPrivilegeCfg.PrivilegelList
  19. self.diamondList = table.copy(self.diamondPrivilegeCfg.StreamerList)
  20. for i, v in pairs(diamondTempList) do
  21. if not table.contains(self.diamondList, v) then
  22. self.diamondList[#self.diamondList + 1] = v
  23. end
  24. end
  25. self.privilegeType = {
  26. [1] = "野外地图开放黄金线",
  27. [2] = "随身商店",
  28. [3] = "小怪挂机保护",
  29. [4] = "背包空间增加",
  30. [5] = "特权仓库增加",
  31. [6] = "自动买药",
  32. [7] = "切换加点方案",
  33. [8] = "大师天赋免费切换",
  34. [9] = "掉落提升",
  35. [10] = "经验提升",
  36. [11] = "回收收益提升",
  37. [12] = "巡逻挂机",
  38. [13] = "远程仓库",
  39. [14] = "交易行寄售货架数量增加",
  40. [15] = "掉落经验提升",
  41. }
  42. GUI:DataListInitData( self.view.datalist_gold,function()
  43. return self:GoldListItemCountFunc()
  44. end,function(realIndex)
  45. return self:GoldListItemGetFunc(realIndex)
  46. end,function(realIndex, kmlcontrol)
  47. return self:GoldListItemInitFunc(realIndex, kmlcontrol)
  48. end, function(realIndex, kmlcontrol)
  49. return self:GoldListItemUpdateFunc(realIndex, kmlcontrol)
  50. end)
  51. GUI:DataListInitData( self.view.datalist_diamond,function()
  52. return self:DiamondListItemCountFunc()
  53. end,function(realIndex)
  54. return self:DiamondListItemGetFunc(realIndex)
  55. end,function(realIndex, kmlcontrol)
  56. return self:DiamondListItemInitFunc(realIndex, kmlcontrol)
  57. end, function(realIndex, kmlcontrol)
  58. return self:DiamondListItemUpdateFunc(realIndex, kmlcontrol)
  59. end)
  60. --SL.HideMainPanel()
  61. end
  62. ---黄金特权List
  63. function this:GoldListItemCountFunc()
  64. return #self.goldList
  65. end
  66. function this:GoldListItemGetFunc(realIndex)
  67. end
  68. function this:GoldListItemInitFunc(realIndex, kmlcontrol)
  69. end
  70. function this:GoldListItemUpdateFunc(realIndex, kmlcontrol)
  71. local index = self.goldList[realIndex + 1]
  72. local btn = GUI:GetChildControl(self.view.datalist_gold, realIndex, "button_gold")
  73. self:SetPrivilegeItemText(btn, index, 1)
  74. GUI:AddOnClickEvent(btn, self, self.ClickDescription, { 1, index })
  75. local streamerTbl = SL:GetConfig("cfg_privilege", 1).StreamerList
  76. if table.contains(streamerTbl, index) then
  77. GUI:Button_loadTextureNormal(btn, "img_gold_bg_1", "Atlas/KLUIPrivilegePanel.spriteatlas")
  78. else
  79. GUI:Button_loadTextureNormal(btn, "img_gold_bg_2", "Atlas/KLUIPrivilegePanel.spriteatlas")
  80. end
  81. end
  82. ---钻石特权List
  83. function this:DiamondListItemCountFunc()
  84. return #self.diamondList
  85. end
  86. function this:DiamondListItemGetFunc(realIndex)
  87. end
  88. function this:DiamondListItemInitFunc(realIndex, kmlcontrol)
  89. end
  90. function this:DiamondListItemUpdateFunc(realIndex, kmlcontrol)
  91. local index = self.diamondList[realIndex + 1]
  92. local btn = GUI:GetChildControl(self.view.datalist_diamond, realIndex, "button_diamond")
  93. self:SetPrivilegeItemText(btn, index, 2)
  94. GUI:AddOnClickEvent(btn, self, self.ClickDescription, { 2, index })
  95. ---@type cfg_privilege_column
  96. local streamerTbl = SL:GetConfig("cfg_privilege", 2).StreamerList
  97. if table.contains(streamerTbl, index) then
  98. GUI:Button_loadTextureNormal(btn, "img_diamond_bg_1", "Atlas/KLUIPrivilegePanel.spriteatlas")
  99. else
  100. GUI:Button_loadTextureNormal(btn, "img_diamond_bg_2", "Atlas/KLUIPrivilegePanel.spriteatlas")
  101. end
  102. end
  103. function this:SetPrivilegeItemText(control, index, type)
  104. local cfg = type == 1 and self.goldPrivilegeCfg or self.diamondPrivilegeCfg
  105. local text = ""
  106. if index == 4 then
  107. text = self.privilegeType[index] .. cfg.backpackUp .. "格"
  108. elseif index == 5 then
  109. text = self.privilegeType[index] .. #cfg.DepotUp .. "页"
  110. elseif index == 9 or index == 15 then
  111. text = self.privilegeType[index] .. math.floor(cfg.DropsUp[2] / 100) .. "%"
  112. elseif index == 10 then
  113. text = self.privilegeType[index] .. cfg.ExperienceUp .. "%"
  114. elseif index == 11 then
  115. text = self.privilegeType[index] .. cfg.reclaimUp .. "%"
  116. elseif index == 14 then
  117. text = self.privilegeType[index] .. cfg.TradingGhelvesUp .. "格"
  118. else
  119. text = self.privilegeType[index]
  120. end
  121. GUI:Button_setTitleText(control, text)
  122. end
  123. function this:ClickDescription(_, eventData)
  124. GUI:UIPanel_Open("dev/outui/Privilege/Panel/KLUIPrivilegeItemDescription/KLUIPrivilegeItemDescriptionPanel", nil, self, { type = eventData[1], uiType = eventData[2] })
  125. end
  126. ---注册UI事件和服务器消息
  127. function this:RegistEvents()
  128. GUI:AddOnClickEvent(self.view.btn_close, self, self.CloseSelf)
  129. GUI:AddOnClickEvent(self.view.btn_introduce, self, self.IntroduceSelf)
  130. GUI:AddOnClickEvent(self.view.btn_gold_exchange, self, self.ExchangeGoldPrivilege)
  131. GUI:AddOnClickEvent(self.view.btn_diamond_exchange, self, self.ExchangeDiamondPrivilege)
  132. SL:RegisterLUAEvent(LUA_EVENT_PRIVILEGE_INFO_CHANGE, self.LUA_EVENT_PRIVILEGE_INFO_CHANGE, self)
  133. end
  134. ---创建或者刷新界面数据时调用
  135. function this:Refresh()
  136. GUI:DataListUpdateData(self.view.datalist_gold)
  137. GUI:DataListUpdateData(self.view.datalist_diamond)
  138. GUI:Model_setSrc(self.view.item_gold, tostring(self.goldPrivilegeCfg.field))
  139. GUI:Model_setSrc(self.view.item_diamond, tostring(self.diamondPrivilegeCfg.field))
  140. if PrivilegeCardManager.goldPrivilege then
  141. GUI:setVisible(self.view.gold_privilege_time, true)
  142. GUI:Button_setTitleText(self.view.btn_gold_exchange, "续费")
  143. GUI:SetControl_time(self.view.gold_privilege_time, PrivilegeCardManager.GetPrivilegeRemainTime(1) / 1000)
  144. else
  145. GUI:setVisible(self.view.gold_privilege_time, false)
  146. GUI:Button_setTitleText(self.view.btn_gold_exchange, "兑换")
  147. end
  148. if PrivilegeCardManager.diamondPrivilege then
  149. GUI:setVisible(self.view.diamond_privilege_time, true)
  150. GUI:Button_setTitleText(self.view.btn_diamond_exchange, "续费")
  151. GUI:SetControl_time(self.view.diamond_privilege_time, PrivilegeCardManager.GetPrivilegeRemainTime(2) / 1000)
  152. else
  153. GUI:setVisible(self.view.diamond_privilege_time, false)
  154. GUI:Button_setTitleText(self.view.btn_diamond_exchange, "兑换")
  155. end
  156. end
  157. function this:ExchangeGoldPrivilege()
  158. local time = 0
  159. if InfoManager.monthCardInfo.MonthCardTimeTotal then
  160. time = InfoManager.monthCardInfo.MonthCardTimeTotal - Time.GetServerTime()
  161. end
  162. if time and time > 0 then
  163. local timeStr = SL:TimeFormatToStr(math.floor(time / 1000))
  164. local day = time / 3600000 / 24
  165. if day >= self.goldPrivilegeCfg.price then
  166. --local text = "是否消耗" .. self.goldPrivilegeCfg.price .. "天点卡激活黄金特权\n\n当前月卡剩余时间:" .. timeStr
  167. SL:CommonTipsMessage({ stringTblID=218,stringTblFormat={tostring(self.goldPrivilegeCfg.price), tostring(timeStr)}, nil, callback =
  168. function()
  169. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_EXCHANGE_MONTH_PRIVILEGE, 1)
  170. end })
  171. else
  172. --local text = "兑换黄金特权卡需要" .. self.goldPrivilegeCfg.price .. "天月卡时间,当前月卡时间不足,是否前往充值\n\n当前月卡剩余时间:" .. timeStr
  173. SL:CommonTipsMessage({ stringTblID=219,stringTblFormat={tostring(self.goldPrivilegeCfg.price), tostring(timeStr)}, nil, callback =
  174. function()
  175. local panel = GUI:GetUI("dev/outui/MonthCard/Panel/KLUIMonthCardMain/KLUIMonthCardMainPanel")
  176. panel:Refresh()
  177. end })
  178. end
  179. else
  180. --local text = "兑换黄金特权卡需要" .. self.goldPrivilegeCfg.price .. "天月卡时间,当前月卡时间不足,是否前往充值"
  181. SL:CommonTipsMessage({ stringTblID=220,stringTblFormat={tostring(self.goldPrivilegeCfg.price)}, nil, callback =
  182. function()
  183. ---@class KLUIMonthCardMainPanel
  184. local panel = GUI:GetUI("dev/outui/MonthCard/Panel/KLUIMonthCardMain/KLUIMonthCardMainPanel")
  185. panel:Refresh()
  186. end })
  187. end
  188. end
  189. function this:ExchangeDiamondPrivilege()
  190. local time = 0
  191. if InfoManager.monthCardInfo.MonthCardTimeTotal then
  192. time = InfoManager.monthCardInfo.MonthCardTimeTotal - Time.GetServerTime()
  193. end
  194. if time and time > 0 then
  195. local timeStr = SL:TimeFormatToStr(math.floor(time / 1000))
  196. local day = time / 3600000 / 24
  197. if day >= self.diamondPrivilegeCfg.price then
  198. --local text = "是否消耗" .. self.diamondPrivilegeCfg.price .. "天点卡激活钻石特权\n\n当前月卡剩余时间:" .. timeStr
  199. SL:CommonTipsMessage({ stringTblID=221,stringTblFormat={tostring(self.diamondPrivilegeCfg.price), tostring(timeStr)}, nil, callback =
  200. function()
  201. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_EXCHANGE_MONTH_PRIVILEGE, 2)
  202. end })
  203. else
  204. --local text = "兑换钻石特权卡需要" .. self.diamondPrivilegeCfg.price .. "天月卡时间,当前月卡时间不足,是否前往充值\n\n当前月卡剩余时间:" .. timeStr
  205. SL:CommonTipsMessage({ stringTblID=222,stringTblFormat={tostring(self.diamondPrivilegeCfg.price), tostring(timeStr)}, nil, callback =
  206. function()
  207. ---@class KLUIMonthCardMainPanel
  208. local panel = GUI:GetUI("dev/outui/MonthCard/Panel/KLUIMonthCardMain/KLUIMonthCardMainPanel")
  209. panel:Refresh()
  210. end })
  211. end
  212. else
  213. --local text = "兑换钻石特权卡需要" .. self.diamondPrivilegeCfg.price .. "天月卡时间,当前月卡时间不足,是否前往充值"
  214. SL:CommonTipsMessage({ stringTblID=223,stringTblFormat={tostring(self.diamondPrivilegeCfg.price)}, nil, callback =
  215. function()
  216. ---@class KLUIMonthCardMainPanel
  217. local panel = GUI:GetUI("dev/outui/MonthCard/Panel/KLUIMonthCardMain/KLUIMonthCardMainPanel")
  218. panel:Refresh()
  219. end })
  220. end
  221. end
  222. function this:LUA_EVENT_PRIVILEGE_INFO_CHANGE(_, eventData)
  223. GUI:setVisible(self.view.prefab_diamond, false)
  224. GUI:setVisible(self.view.prefab_gold, false)
  225. if eventData and eventData ~= 0 then
  226. if eventData == 1 then
  227. GUI:setVisible(self.view.prefab_gold, true)
  228. else
  229. GUI:setVisible(self.view.prefab_diamond, true)
  230. end
  231. end
  232. self:Refresh()
  233. end
  234. function this:IntroduceSelf()
  235. --GUI:UIPanel_Open("dev/outui/Privilege/Panel/KLUIPrivilegeIntroduce/KLUIPrivilegeIntroducePanel")
  236. local helpCfg=SL:GetConfig("cfg_rule_text",7)
  237. if helpCfg then
  238. SL:CommonStrTipsMessage({title =helpCfg.menutxt,str=helpCfg.location})
  239. end
  240. end
  241. function this:CloseSelf()
  242. GUI:UIPanel_Close("dev/outui/MonthCard/Panel/KLUIMonthCardMain/KLUIMonthCardMainPanel")
  243. end
  244. function this:Close()
  245. --SL.ShowMainPanel()
  246. end
  247. return this