KLNewVIPMainPanel.lua 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. ---@class KLNewVIPMainPanel:UIKmlLuaPanelBase
  2. ---@field view KLNewVIPMainPanelView
  3. local KLNewVIPMainPanel = class(UIKmlLuaPanelBase)
  4. local this = KLNewVIPMainPanel
  5. function this:AsyncLoadUI()
  6. end
  7. ---创建时调用一次
  8. function this:Init()
  9. GUI:DataListInitData(self.view.buffDataList, function()
  10. return self:BuffDataListItemCountFunc()
  11. end, function(realIndex)
  12. end, function(realIndex, kmlcontrol)
  13. end, function(realIndex, kmlcontrol)
  14. return self:BuffDataListItemUpdateFunc(realIndex, kmlcontrol)
  15. end
  16. )
  17. GUI:DataListInitData(self.view.UpRewardDataList, function()
  18. return self:UpRewardDataListItemCountFunc()
  19. end, function(realIndex)
  20. end, function(realIndex, kmlcontrol)
  21. end, function(realIndex, kmlcontrol)
  22. return self:UpRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  23. end)
  24. GUI:DataListInitData(self.view.DownRewardDataList, function()
  25. return self:DownRewardDataListItemCountFunc()
  26. end, function(realIndex)
  27. end, function(realIndex, kmlcontrol)
  28. end, function(realIndex, kmlcontrol)
  29. return self:DownRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  30. end)
  31. self.selectGroup = nil
  32. self.allVIPTable = {}
  33. local allTable = SL:GetConfigTable("cfg_VIP");
  34. for key, value in pairs(allTable) do
  35. self.allVIPTable[value.grade] = value
  36. end
  37. self.maxLevel = #self.allVIPTable
  38. self.curLevel = InfoManager.newVipInfo.vipLevel
  39. end
  40. ---注册UI事件和服务器消息
  41. function this:RegistEvents()
  42. GUI:AddOnClickEvent(self.view.btn_GetFree, self, self.GetFreeOnClick)
  43. GUI:AddOnClickEvent(self.view.btn_GetPay, self, self.GetPayOnClick)
  44. GUI:AddOnClickEvent(self.view.LeftPageBtn, self, self.LeftPageBtnOnClick)
  45. GUI:AddOnClickEvent(self.view.RightPageBtn, self, self.RightPageBtnOnClick)
  46. GUI:AddOnClickEvent(self.view.btn_up, self, self.UpOnClick)
  47. GUI:AddOnClickEvent(self.view.btn_close, self, self.CloseOnClick)
  48. SL:RegisterLUAEvent(LUA_EVENT_VIP_CHANGE, self.VIPChangCallBack, self)
  49. SL:RegisterLUAEvent(Event.BagInfo_Change, self.BagInfo_Change, self)
  50. end
  51. function this:BagInfo_Change()
  52. if self.selectLevel > self.curLevel then
  53. local vipPackCfg = SL:GetConfig("cfg_VIP_Pack", self.curVipCfg.VIPpack)
  54. local bagCount = SL:GetBagItemCount(vipPackCfg.Price[1])
  55. local color = bagCount >= vipPackCfg.Price[2] and EGradColor.green or EGradColor.red
  56. GUI:Text_setTextColor(self.view.txt_VipPrice, EColor[color])
  57. end
  58. end
  59. function this:VIPChangCallBack()
  60. self.curLevel = InfoManager.newVipInfo.vipLevel
  61. self:RefreshMain()
  62. end
  63. function this:CloseOnClick()
  64. GUI:UIPanel_Close("dev/outui/VIP/Panel/KLNewVIPMain/KLNewVIPMainPanel")
  65. end
  66. function this:UpOnClick()
  67. if self.selectLevel <= self.curLevel then
  68. return
  69. elseif self.selectLevel ~= self.curLevel + 1 then
  70. local text = string.format(SL:GetConfig('cfg_string', 472).text, self.selectLevel - 1)
  71. SL:TipMessage( text, 1, NoticeType.NoticeMid )
  72. return
  73. end
  74. local vipPackCfg = SL:GetConfig("cfg_VIP_Pack", self.curVipCfg.VIPpack)
  75. if not ConditionManager.Check(vipPackCfg.conditionid) then
  76. SL:TipMessage( SL:GetConfig('cfg_string', 486).text, 1, NoticeType.NoticeMid )
  77. return
  78. end
  79. local bagCount = SL:GetBagItemCount(vipPackCfg.Price[1])
  80. if bagCount < vipPackCfg.Price[2] then
  81. SL:TipMessage( SL:GetConfig('cfg_string', 269).text, 1, NoticeType.NoticeMid ) --"副本中无法传送",
  82. return
  83. end
  84. local count, totalCount = InfoManager.countInfo:GetLimitAndTotalCountByKey(vipPackCfg.Limitedid)
  85. if count <= 0 then
  86. return
  87. end
  88. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECHARGE, { count = 1, rechargeId = self.curVipCfg.VIPpack })
  89. end
  90. function this:RightPageBtnOnClick()
  91. local level = self.selectLevel
  92. level = Mathf.Clamp(level + 1, 1, self.maxLevel)
  93. if level ~= self.selectLevel then
  94. self.selectLevel = level
  95. self:RefreshMain()
  96. end
  97. end
  98. function this:LeftPageBtnOnClick()
  99. local level = self.selectLevel
  100. level = Mathf.Clamp(level - 1, 1, self.maxLevel)
  101. if level ~= self.selectLevel then
  102. self.selectLevel = level
  103. self:RefreshMain()
  104. end
  105. end
  106. function this:GetPayOnClick()
  107. if self.selectLevel > self.curLevel then
  108. SL:TipMessage( SL:GetConfig('cfg_string', 485).text, 1, NoticeType.NoticeMid )
  109. return
  110. end
  111. local PackCfg = SL:GetConfig("cfg_VIP_Pack", self.curVipCfg.greatpack)
  112. local bagCount = SL:GetBagItemCount(PackCfg.Price[1])
  113. if bagCount < PackCfg.Price[2] then
  114. SL:TipMessage( SL:GetConfig('cfg_string', 269).text, 1, NoticeType.NoticeMid )
  115. return
  116. end
  117. local count, totalCount = InfoManager.countInfo:GetLimitAndTotalCountByKey(PackCfg.Limitedid)
  118. if count <= 0 then
  119. return
  120. end
  121. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECHARGE, { count = 1, rechargeId = self.curVipCfg.greatpack })
  122. end
  123. function this:GetFreeOnClick()
  124. if self.selectLevel > self.curLevel then
  125. SL:TipMessage( SL:GetConfig('cfg_string', 485).text, 1, NoticeType.NoticeMid ) --"副本中无法传送",
  126. return
  127. end
  128. local PackCfg = SL:GetConfig("cfg_VIP_Pack", self.curVipCfg.expack)
  129. -- local bagCount = SL:GetBagItemCount(PackCfg.Price[1])
  130. -- if bagCount< PackCfg.Price[2] then
  131. -- SL:TipMessage({SL:GetConfig('cfg_string',269).text, 1, NoticeType.NoticeMid })--"副本中无法传送",
  132. -- return
  133. -- end
  134. local count, totalCount = InfoManager.countInfo:GetLimitAndTotalCountByKey(PackCfg.Limitedid)
  135. if count <= 0 then
  136. return
  137. end
  138. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECHARGE, { count = 1, rechargeId = self.curVipCfg.expack })
  139. end
  140. ---界面显示时调用一次
  141. function this:Show()
  142. self.selectLevel = Mathf.Clamp(InfoManager.newVipInfo.vipLevel, 1, self.maxLevel)
  143. self:RefreshMain()
  144. end
  145. ---创建或者刷新界面数据时调用
  146. function this:Refresh()
  147. end
  148. function this:RefreshMain()
  149. self.buffList = {}
  150. self.upRewardList = {}
  151. self.downRewardList = {}
  152. GUI:setVisible(self.view.LeftPageBtn, self.selectLevel ~= 1)
  153. GUI:setVisible(self.view.RightPageBtn, self.selectLevel ~= self.maxLevel)
  154. GUI:setVisible(self.view.button18, false)
  155. GUI:setVisible(self.view.btn_GetPay, false)
  156. GUI:setVisible(self.view.button17, false)
  157. GUI:setVisible(self.view.btn_GetFree, false)
  158. GUI:setVisible(self.view.freeRedPoint, false)
  159. GUI:setVisible(self.view.priceRoot, self.selectLevel > self.curLevel)
  160. GUI:setVisible(self.view.txt_limitBuyCondition, self.selectLevel > self.curLevel)
  161. GUI:Text_setString(self.view.btn_up, self.selectLevel > self.curLevel and "开通VIP特权" or "特权已开通")
  162. local levelStr = tostring(self.selectLevel)
  163. GUI:Text_setString(self.view.vip_level, levelStr)
  164. GUI:Text_setString(self.view.vipLevel1, levelStr)
  165. GUI:Text_setString(self.view.VipLevel2, levelStr)
  166. GUI:Text_setString(self.view.VipLevel3, levelStr)
  167. GUI:Text_setString(self.view.vipLevelTp, levelStr)
  168. self.curVipCfg = self.allVIPTable[self.selectLevel]
  169. if self.curVipCfg then
  170. -- local count ,totalCount = InfoManager.countInfo:GetLimitAndTotalCountByKey(expackCfg.Limitedid)
  171. local vipPackCfg = SL:GetConfig("cfg_VIP_Pack", self.curVipCfg.VIPpack)
  172. local expackCfg = SL:GetConfig("cfg_VIP_Pack", self.curVipCfg.expack)
  173. local greatpackCfg = SL:GetConfig("cfg_VIP_Pack", self.curVipCfg.greatpack)
  174. local roleTotalMoney = Mathf.Floor(InfoManager.mainRechargeInfo.roleTotalMoney)
  175. local curNeedMoney = vipPackCfg.totalcharge
  176. local color = curNeedMoney <= roleTotalMoney and EGradColor.green or EGradColor.red
  177. local showMoney = string.format("<color=%s>%s</color>", EColor[color], roleTotalMoney)
  178. GUI:Text_setString(self.view.txt_limitBuyCondition, string.format("累充%s/%s元可开通", showMoney, curNeedMoney))
  179. self.upRewardList = self:GetCareerReward(expackCfg.Rewards)
  180. self.downRewardList = self:GetCareerReward(greatpackCfg.Rewards)
  181. GUI:Text_setString(self.view.GetPayText, tostring(greatpackCfg.Price[2]))
  182. if self.selectLevel <= self.curLevel then
  183. local count, totalCount = InfoManager.countInfo:GetLimitAndTotalCountByKey(expackCfg.Limitedid)
  184. local count2, totalCount2 = InfoManager.countInfo:GetLimitAndTotalCountByKey(greatpackCfg.Limitedid)
  185. local haveGreatpack = count2 <= 0
  186. local haveExpack = count <= 0
  187. GUI:setVisible(self.view.button17, haveExpack)
  188. GUI:setVisible(self.view.btn_GetFree, not haveExpack)
  189. GUI:setVisible(self.view.freeRedPoint, not haveExpack)
  190. GUI:setVisible(self.view.button18, haveGreatpack)
  191. GUI:setVisible(self.view.btn_GetPay, not haveGreatpack)
  192. GUI:Button_setGrey(self.view.btn_GetFree, false)
  193. GUI:Button_setGrey(self.view.btn_GetPay, false)
  194. -- GUI:Text_setString(self.view.txt_free, tostring(expackCfg.Price[2]))
  195. else
  196. GUI:setVisible(self.view.btn_GetFree, true)
  197. GUI:setVisible(self.view.btn_GetPay, true)
  198. GUI:Button_setGrey(self.view.btn_GetFree, true)
  199. GUI:Button_setGrey(self.view.btn_GetPay, true)
  200. local bagCount = SL:GetBagItemCount(vipPackCfg.Price[1])
  201. local color = bagCount >= vipPackCfg.Price[2] and EGradColor.green or EGradColor.red
  202. GUI:Text_setString(self.view.txt_VipPrice, tostring(vipPackCfg.Price[2]))
  203. GUI:Text_setTextColor(self.view.txt_VipPrice, EColor[color])
  204. end
  205. self.buffList = {}
  206. local allStr = string.split(self.curVipCfg.text, "|")
  207. for key, value in pairs(allStr) do
  208. local allStrArr = string.split(value, "\n")
  209. table.insert(self.buffList,{mainTxt = allStrArr[1],subTxt = allStrArr[2] })
  210. end
  211. end
  212. self:RefreshRedPoint()
  213. GUI:DataListUpdateData(self.view.buffDataList)
  214. GUI:DataListUpdateData(self.view.UpRewardDataList)
  215. GUI:DataListUpdateData(self.view.DownRewardDataList)
  216. end
  217. function this:GetCareerReward(reward)
  218. local rewards = {}
  219. for key, value in ipairs(reward) do
  220. if value[1] == SL:MeData_GetCareer().baseCareer then
  221. table.insert(rewards, { value[2], value[3] })
  222. end
  223. end
  224. return rewards
  225. end
  226. function this:RefreshRedPoint()
  227. GUI:setVisible(self.view.LeftDot, false)
  228. GUI:setVisible(self.view.RightDot, false)
  229. for index, value in pairs(InfoManager.newVipInfo.allVIPRedPoint) do
  230. if index < self.selectLevel and value then
  231. GUI:setVisible(self.view.LeftDot, true)
  232. end
  233. if index > self.selectLevel and value then
  234. GUI:setVisible(self.view.RightDot, true)
  235. end
  236. end
  237. end
  238. function this:Close()
  239. SL.ShowMainPanel()
  240. end
  241. function this:BuffDataListItemCountFunc()
  242. -- SL:LogError("BuffDataListItemCountFunc", #self.leftCfgDataList)
  243. return #self.buffList
  244. end
  245. function this:BuffDataListItemUpdateFunc(realIndex, kmlcontrol)
  246. local data = self.buffList[realIndex + 1]
  247. local buffRoot = GUI:GetChildControl(self.view.buffDataList, realIndex, 'UINewVipPerTxtPointTemplate')
  248. local buffTxt = GUI:GetChildControl(self.view.buffDataList, realIndex, 'buffTxt')
  249. local buffTxtTip = GUI:GetChildControl(self.view.buffDataList, realIndex, 'buffTxtTip')
  250. GUI:Text_setString(buffTxt, data.mainTxt)
  251. GUI:setVisible(buffTxtTip, data.subTxt)
  252. if data.subTxt then
  253. GUI:Text_setString(buffTxtTip, data.subTxt)
  254. GUI:setContentSize(buffRoot,440,50)
  255. else
  256. GUI:setContentSize(buffRoot,440,25)
  257. end
  258. end
  259. function this:UpRewardDataListItemCountFunc()
  260. return #self.upRewardList
  261. end
  262. function this:UpRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  263. local data = self.upRewardList[realIndex + 1]
  264. local item = GUI:GetChildControl(self.view.UpRewardDataList, realIndex, 'upItem')
  265. GUI:Item_setItemId(item, data[1])
  266. GUI:Item_setItemCount(item, SL:GetSimpleNumber(data[2], 2))
  267. GUI:AddOnClickEvent(item, self, function()
  268. SL:OpenTips(nil, data[1])
  269. end)
  270. end
  271. function this:DownRewardDataListItemCountFunc()
  272. return #self.downRewardList
  273. end
  274. function this:DownRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
  275. local data = self.downRewardList[realIndex + 1]
  276. local item = GUI:GetChildControl(self.view.DownRewardDataList, realIndex, 'downItem')
  277. GUI:Item_setItemId(item, data[1])
  278. GUI:Item_setItemCount(item, SL:GetSimpleNumber(data[2], 2))
  279. GUI:AddOnClickEvent(item, self, function()
  280. SL:OpenTips(nil, data[1])
  281. end)
  282. end
  283. return this