KLNPCShopPanel.lua 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. ---@class KLNPCShopPanel:UIKmlLuaPanelBase
  2. ---@field view KLNPCShopPanelView
  3. ---@field goods NpcShopProto.NpcShopGoodsInfoRes
  4. local KLNPCShopPanel = class(UIKmlLuaPanelBase)
  5. local this = KLNPCShopPanel
  6. ---创建时调用一次
  7. function this:Init()
  8. SL:HideMainPanel()
  9. end
  10. ---创建或者刷新界面数据时调用
  11. function this:Refresh()
  12. --self.goods = SL:FindConfigs("cfg_npcShop", "shopId", self.args)
  13. SL.NpcShop:ReqNpcShopInfo(tonumber(self.args), self.ResNpcShopGoodsInfoMessage, self)
  14. --table.sort(self.goods, function(a, b)
  15. -- return a.id < b.id
  16. --end)
  17. end
  18. ---@param message NpcShopProto.NpcShopGoodsInfoRes @商品信息响应
  19. function this:ResNpcShopGoodsInfoMessage(_, message)
  20. self.goods = message["goodsList"]
  21. table.sort(self.goods, function(a, b)
  22. return a.id < b.id
  23. end)
  24. self:RefreshGoodsUI()
  25. self:UpdateMoney()
  26. end
  27. function this:RefreshGoodsUI()
  28. if not self.bagUI then
  29. GUI:UIPanel_Open("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel", nil, nil,
  30. { x = -415, y = 0, bagType = EBagShowType.NPCShop }, false, function(bagUI)
  31. self.bagUI = bagUI
  32. end)
  33. end
  34. if PrivilegeCardManager.AutoBuyIsOpen() then
  35. GUI:SetActive(self.view.autoBuyToggleCheck, true)
  36. else
  37. GUI:SetActive(self.view.autoBuyToggleCheck, false)
  38. end
  39. GUI:DataListInitData(self.view.goods, function()
  40. return table.count(self.goods)
  41. end, function(realIndex)
  42. --return self:DataListGoodsItemGetFunc(realIndex)
  43. end, function(realIndex, kmlcontrol)
  44. --return self:DataListGoodsItemInitFunc(realIndex, kmlcontrol)
  45. end, function(realIndex, kmlcontrol)
  46. return self:DataListGoodsItemUpdateFunc(realIndex, kmlcontrol)
  47. end)
  48. GUI:DataListUpdateData(self.view.goods)
  49. end
  50. function this:DataListGoodsItemUpdateFunc(realIndex, kmlcontrol)
  51. local data = self.goods[realIndex + 1]
  52. --local showItem_ = self.view.goods:GetChildControl(realIndex, "showItem_")
  53. local showItem_ = GUI:GetChildControl(self.view.goods, realIndex, "showItem_")
  54. local gooditem = SL:GetConfig("cfg_npcShop", data.id, "id")
  55. GUI:Item_UpdataData(showItem_, {
  56. itemid = gooditem.itemId[1],
  57. itemcount = gooditem.itemId[2]
  58. })
  59. --local itemclick = self.view.goods:GetChildControl(realIndex, "itemclick")
  60. local itemclick = GUI:GetChildControl(self.view.goods, realIndex, "itemclick")
  61. GUI:AddOnClickEvent(itemclick, self, function()
  62. SL:OpenTips(nil, gooditem.itemId[1])
  63. end)
  64. --local title_ = self.view.goods:GetChildControl(realIndex, "title_")
  65. local title_ = GUI:GetChildControl(self.view.goods, realIndex, "title_")
  66. GUI:Text_setString(title_, gooditem.itemName)
  67. --local coinitem = self.view.goods:GetChildControl(realIndex, "coinitem")
  68. local coinitem = GUI:GetChildControl(self.view.goods, realIndex, "coinitem")
  69. GUI:Item_setItemId(coinitem, data.coinType)
  70. --local coinClick = self.view.goods:GetChildControl(realIndex, "coinClick")
  71. local coinClick = GUI:GetChildControl(self.view.goods, realIndex, "coinClick")
  72. GUI:AddOnClickEvent(coinClick, self, function()
  73. SL:OpenTips(nil, data.coinType)
  74. end)
  75. --local coinnum = self.view.goods:GetChildControl(realIndex, "coinnum")
  76. local coinnum = GUI:GetChildControl(self.view.goods, realIndex, "coinnum")
  77. GUI:Text_setString(coinnum, tostring(data.unitPrice * data.count))
  78. --local buy = self.view.goods:GetChildControl(realIndex, "buy")
  79. local buy = GUI:GetChildControl(self.view.goods, realIndex, "buy")
  80. GUI:AddOnClickEvent(buy, self, function()
  81. SL.NpcShop:ReqBuyShopGoods(self.args, data.goodsId, data.count, self.ResBuyShopGoodsMessage, self)
  82. end)
  83. end
  84. --自动购买
  85. function this:AutoBuy()
  86. if not PrivilegeCardManager.isautoPotion() then
  87. self:TipCard()
  88. return
  89. end
  90. PrivilegeCardManager.ReqAutoBuyDrug()
  91. end
  92. function this:TipCard()
  93. local text = SL:GetConfig("cfg_string", 229, "id").text
  94. SL:CommonTipsMessage({
  95. stringTblID = 229,
  96. showTips = text,
  97. ui = self,
  98. sureBtnText = "确定",
  99. cancelBtnText = "取消",
  100. callback = self.OpenFirsh
  101. })
  102. end
  103. function this:UpdateAutoBuy()
  104. if PrivilegeCardManager.AutoBuyIsOpen() then
  105. GUI:SetActive(self.view.autoBuyToggleCheck, true)
  106. else
  107. GUI:SetActive(self.view.autoBuyToggleCheck, false)
  108. end
  109. end
  110. function this:OpenFirsh()
  111. --SL:TipMessage({ "首充还未开通", 1, NoticeType.NoticeMid })
  112. this:ClosePanel()
  113. --GUI:UIPanel_Open("dev/ui/ShopMall/Panel/KLShopMall/KLShopMallPanel")
  114. --if InfoManager.monthCardInfo:IsHaveMonthCardRights("privilege") then
  115. -- GUI:UIPanel_Open("dev/outui/MonthCard/Panel/KLUIMonthCardMain/KLUIMonthCardMainPanel", nil, nil, { type = "privilege" })
  116. --else
  117. -- GUI:UIPanel_Open("dev/outui/MonthCard/Panel/KLUIMonthCardMain/KLUIMonthCardMainPanel")
  118. --end
  119. GUI:UIPanel_Open("dev/outui/ShopMain/Panel/KLShopMain/KLShopMainPanel", nil, nil, { 2 })
  120. end
  121. function this:DesBtn()
  122. local helpCfg = SL:GetConfig("cfg_rule_text", 13, "id")
  123. if helpCfg then
  124. SL:CommonStrTipsMessage({ title = helpCfg.menutxt, str = helpCfg.location })
  125. end
  126. --GUI:UIPanel_Open("dev/ui/NPC/Panel/KLNPCShopTip/KLNPCShopTipPanel")
  127. end
  128. ---注册UI事件和服务器消息
  129. function this:RegistEvents()
  130. GUI:AddOnClickEvent(self.view.CloseButton, self, self.ClosePanel)
  131. GUI:AddOnClickEvent(self.view.autoBuyBackground, self, self.AutoBuy)
  132. GUI:AddOnClickEvent(self.view.desButton, self, self.DesBtn)
  133. GUI:AddOnClickEvent(self.view.moneyBackground, self, function()
  134. SL:OpenTips(nil, 10010001)
  135. end)
  136. GUI:AddOnClickEvent(self.view.MUCoinBackground, self, function()
  137. SL:OpenTips(nil, 10020001)
  138. end)
  139. GUI:AddOnClickEvent(self.view.MUBindCoinBackground, self, function()
  140. SL:OpenTips(nil, 10050001)
  141. end)
  142. GUI:AddOnClickEvent(self.view.diamondBackground, self, function()
  143. SL:OpenTips(nil, 10040001)
  144. end)
  145. SL:RegisterLUAEvent(LUA_EVENT_MONEYCHANGE, self.UpdateMoney, self)
  146. SL:RegisterLUAEvent(LUA_EVENT_AUTO_BUY_POTION_RESULT, self.UpdateAutoBuy, self)
  147. --SL:RegisterLuaNetMsg(MessageDef.ResBuyShopGoodsMessage, self.ResBuyShopGoodsMessage, self)
  148. --SL:RegisterLuaNetMsg(MessageDef.ResNpcShopGoodsInfoMessage, self.ResNpcShopGoodsInfoMessage, self)
  149. end
  150. ---@param message NpcShopProto.BuyShopGoodsReq @购买成功回调
  151. function this:ResBuyShopGoodsMessage(_, message)
  152. local data = {}
  153. local tbl = SL:GetConfig("cfg_npcShop", message.goodsId, "id")
  154. local canputbag = SL:CanPutToBag(tbl.itemId[1], message.count)
  155. if canputbag then
  156. data[tbl.itemId[1]] = message.count
  157. SL:OpenRewardTips(data, 0)
  158. end
  159. end
  160. --刷新货币数据
  161. function this:UpdateMoney()
  162. GUI:Image_loadTexture(self.view.MUBindCoinIcon, "10050001", "Atlas/TS_Common.spriteatlas")
  163. GUI:Text_setString(self.view.moneyText, tostring(SL:GetMetaValue(EMetaVarGetKey.MONEY, MUEResourceType.GoldMoney)))
  164. GUI:Text_setString(self.view.muCoinText,
  165. tostring(SL:GetMetaValue(EMetaVarGetKey.MONEY, MUEResourceType.MiracleCurrency)))
  166. GUI:Text_setString(self.view.muBindCoinText,
  167. tostring(SL:GetMetaValue(EMetaVarGetKey.MONEY, MUEResourceType.BindDiaMond)))
  168. GUI:Text_setString(self.view.diamondText, tostring(SL:GetMetaValue(EMetaVarGetKey.MONEY, MUEResourceType.DiaMond)))
  169. end
  170. function this:ClosePanel()
  171. GUI:UIPanel_Close("dev/ui/NPC/Panel/KLNPCShop/KLNPCShopPanel")
  172. end
  173. function this:Close()
  174. SL:UnRegisterLUAEvent(LUA_EVENT_MONEYCHANGE, self.UpdateMoney, self)
  175. GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
  176. SL:ShowMainPanel()
  177. end
  178. return this