KLUIRechargeMonthlycardPanel.lua 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377
  1. ---@class KLUIRechargeMonthlycardPanel:UIKmlLuaPanelBase
  2. ---@field view KLUIRechargeMonthlycardPanelView
  3. ---@field cfgListAll cfg_MonthlyPack_column[]
  4. ---@field normalCfg cfg_MonthlyPack_column
  5. ---@field goldCfg cfg_MonthlyPack_column
  6. local KLUIRechargeMonthlycardPanel = class(UIKmlLuaPanelBase)
  7. local this = KLUIRechargeMonthlycardPanel
  8. function this:AsyncLoadUI()
  9. end
  10. ---创建时调用一次
  11. function this:Init()
  12. self.cfgListAll = SL:GetConfigTable("cfg_MonthlyPack")
  13. self:InitNormalRewardList()
  14. self:InitGoldRewardList()
  15. self.info = InfoManager.rechargeMonthlycardInfo
  16. self.normalCfg = self.info:FindCfgInfo(self.cfgListAll, UIMonthCard.WhiteCardID)
  17. self.goldCfg = self.info:FindCfgInfo(self.cfgListAll, UIMonthCard.GoldCardID)
  18. self.twoCfg = self.info:FindCfgInfo(self.cfgListAll, UIMonthCard.WhiteAndGoldCardID)
  19. local allPrice = SL:GetConfigMultiKeys("cfg_recharge", self.twoCfg.id, ERechargeType.MonthCardGift, "parameter", "type").amount
  20. self.TipStr = "原价" .. self.normalCfg.Price[2] .. "元"
  21. self.GoldTipStr = "原价" .. self.goldCfg.Price[2] .. "元"
  22. self.AllCardStr = allPrice .. "元"
  23. end
  24. --region 尊享特权月卡
  25. function this:InitNormalRewardList()
  26. self.NormalRewardListData = {}
  27. GUI:DataListInitData(self.view.DataNormalRewardList, function()
  28. return self:NormalRewardCountFunc()
  29. end, function(realIndex)
  30. return self:NormalRewardGetFunc(realIndex)
  31. end, function(realIndex, kmlcontrol)
  32. return self:NormalRewardInitFunc(realIndex, kmlcontrol)
  33. end, function(realIndex, kmlcontrol)
  34. return self:NormalRewardUpdateFunc(realIndex, kmlcontrol)
  35. end)
  36. end
  37. function this:NormalRewardCountFunc()
  38. return table.count(self.NormalRewardListData)
  39. end
  40. function this:NormalRewardGetFunc(realIndex)
  41. end
  42. function this:NormalRewardInitFunc(realIndex, kmlcontrol)
  43. end
  44. function this:NormalRewardUpdateFunc(realIndex, kmlcontrol)
  45. local data = self.NormalRewardListData[realIndex + 1]
  46. local ctrlItem = GUI:GetChildControl(self.view.DataNormalRewardList, realIndex, 'ItemNormal')
  47. GUI:Item_UpdataData(ctrlItem, {
  48. itemid = data[1],
  49. itemcustomcount = SL:GetSimpleNumber(data[2], 0),
  50. textcolor = "#FBD994"
  51. })
  52. GUI:AddOnClickEvent(ctrlItem, self, function()
  53. SL:OpenTips(nil, data[1])
  54. end)
  55. end
  56. --endregion
  57. --region 黄金特权月卡
  58. function this:InitGoldRewardList()
  59. self.GoldRewardListData = {}
  60. GUI:DataListInitData(self.view.DataGoldRewardList, function()
  61. return self:GoldRewardCountFunc()
  62. end, function(realIndex)
  63. return self:GoldRewardGetFunc(realIndex)
  64. end, function(realIndex, kmlcontrol)
  65. return self:GoldRewardInitFunc(realIndex, kmlcontrol)
  66. end, function(realIndex, kmlcontrol)
  67. return self:GoldRewardUpdateFunc(realIndex, kmlcontrol)
  68. end)
  69. end
  70. function this:GoldRewardCountFunc()
  71. return table.count(self.GoldRewardListData)
  72. end
  73. function this:GoldRewardGetFunc(realIndex)
  74. end
  75. function this:GoldRewardInitFunc(realIndex, kmlcontrol)
  76. end
  77. function this:GoldRewardUpdateFunc(realIndex, kmlcontrol)
  78. local data = self.GoldRewardListData[realIndex + 1]
  79. local ctrlItem = GUI:GetChildControl(self.view.DataGoldRewardList, realIndex, 'ItemGold')
  80. GUI:Item_UpdataData(ctrlItem, {
  81. itemid = data[1],
  82. itemcustomcount = SL:GetSimpleNumber(data[2], 0),
  83. textcolor = "#FBD994"
  84. })
  85. GUI:AddOnClickEvent(ctrlItem, self, function()
  86. SL:OpenTips(nil, data[1])
  87. end)
  88. end
  89. --endregion
  90. ---注册UI事件和服务器消息
  91. function this:RegistEvents()
  92. GUI:AddOnClickEvent(self.view.MonthCardBtn, self, self.MonthCardBtnOnClick)
  93. GUI:AddOnClickEvent(self.view.GoldMonthCardBtn, self, self.GoldMonthCardBtnOnClick)
  94. GUI:AddOnClickEvent(self.view.AllCardBtn, self, self.AllCardBtnOnClick)
  95. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_RECHARGE_ACTION, self.ResRecharge, self)
  96. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_COMMON_REWARD_PANEL_WITH_PARAM, self.ResTipMessage, self)
  97. end
  98. function this:MonthCardBtnOnClick(control)
  99. local tab = SL:GetConfigMultiKeys("cfg_recharge", self.normalCfg.id, ERechargeType.MonthCardGift, "parameter", "type")
  100. if self:CheckMonthIsEndTime() == true then
  101. -- 过期或者未充值月卡
  102. GUIUtil.SDKPay(tab, 1)
  103. else
  104. if self.messageTab[UIMonthCard.GoldCardID] and self.messageTab[UIMonthCard.WhiteCardID].receive == false then
  105. return
  106. end
  107. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECHARGE_ACTION, { type = ERechargeType.MonthCardGift, action = "reward", id = tab.id })
  108. end
  109. end
  110. function this:GoldMonthCardBtnOnClick(control)
  111. local tab = SL:GetConfigMultiKeys("cfg_recharge", self.goldCfg.id, ERechargeType.MonthCardGift, "parameter", "type")
  112. if self:CheckGoldMonthIsEndTime() == true then
  113. -- 过期或者未充值月卡
  114. GUIUtil.SDKPay(tab, 1)
  115. else
  116. if self.messageTab[UIMonthCard.GoldCardID] and self.messageTab[UIMonthCard.GoldCardID].receive == false then
  117. return
  118. end
  119. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECHARGE_ACTION, { type = ERechargeType.MonthCardGift, action = "reward", id = tab.id })
  120. end
  121. end
  122. function this:AllCardBtnOnClick()
  123. if self:CheckGoldMonthIsEndTime() == true and self:CheckMonthIsEndTime() == true then
  124. local tab = SL:GetConfigMultiKeys("cfg_recharge", self.twoCfg.id, ERechargeType.MonthCardGift, "parameter", "type")
  125. GUIUtil.SDKPay(tab, 1)
  126. end
  127. end
  128. function this:ResRecharge(_, message)
  129. if message.type ~= tostring(ERechargeType.MonthCardGift) then
  130. return
  131. end
  132. local normalKey = tostring(self.normalCfg.id)
  133. local goldKey = tostring(self.goldCfg.id)
  134. local data = {}
  135. local whihtEndTime = 0
  136. local goldEndTime = 0
  137. local month_data = message.data.month_data
  138. local daily_data = message.data.daily_data
  139. local whiteReceive, goldReceive = true
  140. if month_data and month_data[normalKey] then
  141. whihtEndTime = month_data[normalKey] + 86400000 * 30
  142. end
  143. if month_data and month_data[goldKey] then
  144. goldEndTime = month_data[goldKey] + 86400000 * 30
  145. end
  146. --- receive 为true可领取
  147. if daily_data then
  148. whiteReceive = not table.contains(daily_data, normalKey)
  149. else
  150. whiteReceive = true
  151. end
  152. if daily_data then
  153. goldReceive = not table.contains(daily_data, goldKey)
  154. else
  155. goldReceive = true
  156. end
  157. data[UIMonthCard.WhiteCardID] = { endTime = whihtEndTime, receive = whiteReceive }
  158. data[UIMonthCard.GoldCardID] = { endTime = goldEndTime, receive = goldReceive }
  159. self:ResMonthlyCardView(_, data)
  160. end
  161. function this:ResTipMessage(_, message)
  162. if message.param then
  163. local giftName = SL:GetConfig("cfg_MonthlyPack", tonumber(message.param)).Packagename
  164. local count = 0
  165. for k, v in pairs(message.reward) do
  166. count = count + tonumber(v)
  167. end
  168. if count == 0 then
  169. return
  170. end
  171. message.str = string.format("已激活%s,立刻返利%d钻石", giftName, count)
  172. GUI:UIPanel_Open("dev/outui/RechargeMonthlycard/Panel/KLUIMonthGainItemTipsPanel/KLUIMonthGainItemTipsPanel", nil, nil, message)
  173. end
  174. end
  175. ---代码适配方法
  176. ---@param message RechargeMonthlycard.MonthlyCardViewRes[]
  177. function this:ResMonthlyCardView(_, message)
  178. if message then
  179. self.messageTab = message
  180. self:UpdateUI()
  181. end
  182. end
  183. function this:CheckMonthIsEndTime()
  184. --- 检查是否过期
  185. local serverTime = Time.GetServerTime()
  186. local data = self.messageTab[UIMonthCard.WhiteCardID]
  187. if data and data.endTime ~= nil then
  188. if data.endTime < serverTime then
  189. return true
  190. end
  191. end
  192. return false
  193. end
  194. function this:CheckGoldMonthIsEndTime()
  195. --- 检查是否过期
  196. local serverTime = Time.GetServerTime()
  197. local data = self.messageTab[UIMonthCard.GoldCardID]
  198. if data and data.endTime ~= nil then
  199. if data.endTime < serverTime then
  200. return true
  201. end
  202. end
  203. return false
  204. end
  205. ---界面显示时调用一次
  206. function this:Show()
  207. SL:SetLocalString(SL:GetMetaValue(EMetaVarGetKey.MAIN_ACTOR_ID) .. "_RechargeMonthlycard" ,"true")
  208. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECHARGE_ACTION, { type = ERechargeType.MonthCardGift, action = "panel" })
  209. GUI:setVisible(self.view.whiteSelectImg, false)
  210. GUI:setVisible(self.view.goldSelectImg, false)
  211. if self.args and self.args.selectId then
  212. local cfgInfo1 = self.info:FindCfgInfo(self.cfgListAll, 1)
  213. local cfgInfo2 = self.info:FindCfgInfo(self.cfgListAll, 2)
  214. if self.args.selectId == cfgInfo1.id then
  215. GUI:setVisible(self.view.whiteSelectImg, true)
  216. end
  217. if self.args.selectId == cfgInfo2.id then
  218. GUI:setVisible(self.view.goldSelectImg, true)
  219. end
  220. end
  221. if not string.isNullOrEmpty(self.normalCfg.Graphpath) then
  222. if not table.isNullOrEmpty(self.normalCfg.oneRewards) then
  223. GUI:Image_loadTexture(self.view.white,string.format("Texture/%s.png",self.normalCfg.Graphpath))
  224. else
  225. GUI:Image_loadTexture(self.view.white,string.format("Texture/%s_2.png",self.normalCfg.Graphpath))
  226. end
  227. end
  228. if not string.isNullOrEmpty(self.goldCfg.Graphpath) then
  229. if not table.isNullOrEmpty(self.goldCfg.oneRewards) then
  230. GUI:Image_loadTexture(self.view.gold,string.format("Texture/%s.png",self.goldCfg.Graphpath))
  231. else
  232. GUI:Image_loadTexture(self.view.gold,string.format("Texture/%s_2.png",self.goldCfg.Graphpath))
  233. end
  234. end
  235. self:ShowRewardUI()
  236. end
  237. ---创建或者刷新界面数据时调用
  238. function this:Refresh()
  239. end
  240. ---奖励列表展示
  241. function this:ShowRewardUI()
  242. self.NormalRewardListData = self.normalCfg.Rewards
  243. self.GoldRewardListData = self.goldCfg.Rewards
  244. GUI:DataListUpdateData(self.view.DataNormalRewardList)
  245. GUI:DataListUpdateData(self.view.DataGoldRewardList)
  246. if not table.isNullOrEmpty(self.normalCfg.oneRewards) then
  247. GUI:Item_UpdataData(self.view.whiteCoinItem, {
  248. itemid = self.normalCfg.oneRewards[1][1],
  249. itemcount = 0,
  250. mfixsize = "40,40",
  251. })
  252. GUI:Text_setString(self.view.whiteCoinTxt, tostring(self.normalCfg.oneRewards[1][2]))
  253. else
  254. GUI:setVisible(self.view.whiteCoinItem,false)
  255. GUI:setVisible(self.view.whiteCoinTxt,false)
  256. end
  257. if not table.isNullOrEmpty(self.goldCfg.oneRewards) then
  258. GUI:Item_UpdataData(self.view.goldCoinItem, {
  259. itemid = self.goldCfg.oneRewards[1][1],
  260. itemcount = 0,
  261. mfixsize = "30,30",
  262. })
  263. GUI:Text_setString(self.view.goldCoinTxt, tostring(self.goldCfg.oneRewards[1][2]))
  264. else
  265. GUI:setVisible(self.view.goldCoinItem,false)
  266. GUI:setVisible(self.view.goldCoinTxt,false)
  267. end
  268. end
  269. function this:UpdateUI()
  270. local serverTime = Time.GetServerTime()
  271. GUI:setVisible(self.view.whiteRed, false)
  272. GUI:setVisible(self.view.goldRed, false)
  273. if self:CheckMonthIsEndTime() == true then
  274. if self.messageTab[UIMonthCard.WhiteCardID].receive == true then
  275. GUI:setVisible(self.view.EndTimeText, false)
  276. --GUI:Button_setBright(self.view.MonthCardBtn, true)
  277. GUI:Text_setString(self.view.TipText, self.TipStr)
  278. GUI:setVisible(self.view.delete, true)
  279. GUI:Text_setString(self.view.MonthBtnText, self.normalCfg.Price[1] .. "元")
  280. GUI:Image_loadTexture(self.view.showtext, "img_monthlycard_whitetext", "Atlas/QJ5_UIRechargeMonthlycardPanel.spriteatlas")
  281. end
  282. else
  283. GUI:setVisible(self.view.EndTimeText, true)
  284. GUI:Text_setString(self.view.TipText, "月卡已激活")
  285. GUI:setVisible(self.view.delete, false)
  286. local Remaintime = self.messageTab[UIMonthCard.WhiteCardID].endTime - serverTime
  287. GUI:Text_setString(self.view.EndTimeText, "有效期剩余:" .. GUIUtil.FormatTimeD((Remaintime / 1000)-10, false))
  288. GUI:Image_loadTexture(self.view.showtext, "img_monthlycard2", "Atlas/QJ5_UIRechargeMonthlycardPanel.spriteatlas")
  289. GUI:Text_setString(self.view.AllCardBtnText, "月卡已激活")
  290. GUI:setVisible(self.view.bg_bottom, false)
  291. if self.messageTab[UIMonthCard.WhiteCardID].receive == true then
  292. GUI:Text_setString(self.view.MonthBtnText, "领取")
  293. GUI:setVisible(self.view.whiteRed, true)
  294. else
  295. GUI:Text_setString(self.view.MonthBtnText, "已领取")
  296. end
  297. end
  298. if self:CheckGoldMonthIsEndTime() == true then
  299. if self.messageTab[UIMonthCard.GoldCardID].receive == true then
  300. GUI:Image_loadTexture(self.view.Goldshowtext, "img_monthlycard_goldtext", "Atlas/QJ5_UIRechargeMonthlycardPanel.spriteatlas")
  301. GUI:setVisible(self.view.GoldEndTimeText, false)
  302. GUI:Text_setString(self.view.GoldMonthBtnText, self.goldCfg.Price[1] .. "元")
  303. GUI:Text_setString(self.view.GoldTipText, self.GoldTipStr)
  304. GUI:setVisible(self.view.delete_1, true)
  305. end
  306. else
  307. GUI:setVisible(self.view.GoldEndTimeText, true)
  308. GUI:Text_setString(self.view.GoldTipText, "月卡已激活")
  309. GUI:setVisible(self.view.delete_1, false)
  310. GUI:Image_loadTexture(self.view.Goldshowtext, "img_monthlycard2", "Atlas/QJ5_UIRechargeMonthlycardPanel.spriteatlas")
  311. GUI:Text_setString(self.view.AllCardBtnText, "月卡已激活")
  312. GUI:setVisible(self.view.bg_bottom, false)
  313. --GUI:Button_setBright(self.view.AllCardBtn, false)
  314. local GoldRemaintime = self.messageTab[UIMonthCard.GoldCardID].endTime - serverTime
  315. GUI:Text_setString(self.view.GoldEndTimeText, "有效期剩余:" .. GUIUtil.FormatTimeD((GoldRemaintime / 1000)-10, false))
  316. if self.messageTab[UIMonthCard.GoldCardID].receive == true then
  317. GUI:Text_setString(self.view.GoldMonthBtnText, "领取")
  318. GUI:setVisible(self.view.goldRed, true)
  319. --GUI:Button_setBright(self.view.GoldMonthCardBtn, true)
  320. else
  321. GUI:Text_setString(self.view.GoldMonthBtnText, "已领取")
  322. --GUI:Button_setBright(self.view.GoldMonthCardBtn, false)
  323. end
  324. end
  325. if self:CheckGoldMonthIsEndTime() == true and self:CheckMonthIsEndTime() == true then
  326. --GUI:Button_setBright(self.view.AllCardBtn, true)
  327. GUI:Text_setString(self.view.AllCardBtnText, self.AllCardStr)
  328. GUI:setVisible(self.view.bg_bottom, true)
  329. else
  330. --GUI:Button_setBright(self.view.AllCardBtn, false)
  331. GUI:setVisible(self.view.bg_bottom, false)
  332. end
  333. end
  334. ---@return cfg_MonthlyPack_column
  335. function this:FindCfgInfo(tab, order)
  336. for _, v in pairs(tab) do
  337. if v.sortId == order then
  338. return v
  339. end
  340. end
  341. return nil
  342. end
  343. function this:Close()
  344. GUI:setVisible(self.view.bg_bottom, false)
  345. end
  346. return this