KLSpecialNPCShopPanel.lua 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. ---@class KLSpecialNPCShopPanel:UIKmlLuaPanelBase
  2. ---@field view KLSpecialNPCShopPanelView
  3. ---@field goods NpcShopProto.NpcShopGoodsInfoRes
  4. local KLNPCShopPanel = class(UIKmlLuaPanelBase)
  5. local this = KLNPCShopPanel
  6. ---创建时调用一次
  7. function this:Init()
  8. SL:HideMainPanel()
  9. self.goods = {}
  10. end
  11. ---创建或者刷新界面数据时调用
  12. function this:Refresh()
  13. if SL:HasConfig("cfg_global",25001) then
  14. ---@type cfg_global_column
  15. local tbl = SL:GetConfig("cfg_global",25001)
  16. GUI:Text_setString(self.view.noItem,tbl.value)
  17. end
  18. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_NPC_CHEST_GOODS_INFO,{shopId=tonumber(self.args)})
  19. self:UpdateMoney()
  20. GUI:UIPanel_Open("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel", nil, nil, { x = -415, y = 0, bagType = EBagShowType.NPCShop })
  21. end
  22. ---@param message NpcShopProto.NpcShopGoodsInfoRes @商品信息响应
  23. function this:RES_NPC_CHEST_GOODS_INFO(_, message)
  24. table.clear(self.goods)
  25. for _, v in pairs(message) do
  26. if type(v) == "table" then
  27. table.insert(self.goods,v)
  28. end
  29. end
  30. table.sort(self.goods, function(a, b)
  31. return a.id < b.id
  32. end)
  33. GUI:setVisible(self.view.noItem,#self.goods<=0)
  34. self:RefreshGoodsUI()
  35. end
  36. function this:RefreshGoodsUI()
  37. GUI:UIPanel_Open("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel", nil, nil, { x = -415, y = 0, bagType = EBagShowType.NPCShop })
  38. GUI:DataListInitData(self.view.goods, function()
  39. return table.count(self.goods)
  40. end, function(realIndex)
  41. --return self:DataListGoodsItemGetFunc(realIndex)
  42. end, function(realIndex, kmlcontrol)
  43. --return self:DataListGoodsItemInitFunc(realIndex, kmlcontrol)
  44. end, function(realIndex, kmlcontrol)
  45. return self:DataListGoodsItemUpdateFunc(realIndex, kmlcontrol)
  46. end)
  47. GUI:DataListUpdateData(self.view.goods)
  48. end
  49. function this:DataListGoodsItemUpdateFunc(realIndex, kmlcontrol)
  50. local data = self.goods[realIndex + 1]
  51. local showItem_ = GUI:GetChildControl(self.view.goods,realIndex, "showItem_")
  52. ---@type cfg_npcChest_column
  53. local gooditem = SL:GetConfig("cfg_npcChest", data.id,"id" )
  54. GUI:Item_UpdataData(showItem_, {
  55. itemid = gooditem.itemId[1],
  56. itemcount = gooditem.itemId[2]
  57. })
  58. local itemclick =GUI:GetChildControl(self.view.goods,realIndex, "itemclick")
  59. GUI:AddOnClickEvent(itemclick, self, function()
  60. SL:OpenTips(nil,gooditem.itemId[1])
  61. end)
  62. local title_ =GUI:GetChildControl(self.view.goods,realIndex, "title_")
  63. GUI:Text_setString(title_, gooditem.itemName)
  64. local coinitem =GUI:GetChildControl(self.view.goods,realIndex, "coinitem")
  65. GUI:Item_setItemId(coinitem, data.coinType)
  66. local coinClick =GUI:GetChildControl(self.view.goods,realIndex, "coinClick")
  67. GUI:AddOnClickEvent(coinClick, self, function()
  68. SL:OpenTips(nil, data.coinType)
  69. end)
  70. local coinnum =GUI:GetChildControl(self.view.goods,realIndex, "coinnum")
  71. GUI:Text_setString(coinnum, tostring(data.unitPrice * data.count))
  72. local buy =GUI:GetChildControl(self.view.goods,realIndex, "buy")
  73. GUI:AddOnClickEvent(buy, self, function()
  74. local ownerCount = SL:GetBagItemCount(data.coinType)
  75. if ownerCount < data.unitPrice * data.count then
  76. SL:TipMessage("货币不足",1,NoticeType.NoticeMid)
  77. return
  78. end
  79. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_BUY_NPC_CHEST,{shopId = tonumber(self.args),goodsId= data.id,count = data.count})
  80. end)
  81. end
  82. function this:TipCard()
  83. local text = SL:GetConfig("cfg_string",229,"id").text
  84. SL:CommonTipsMessage({ stringTblID=229,showTips = text, ui = self, sureBtnText = "确定", cancelBtnText = "取消",
  85. callback = self.OpenFirsh})
  86. end
  87. function this:UpdateAutoBuy()
  88. end
  89. function this:OpenFirsh()
  90. this:ClosePanel()
  91. GUI:UIPanel_Open("dev/outui/ShopMain/Panel/KLShopMain/KLShopMainPanel",nil,nil,{2})
  92. end
  93. function this:DesBtn()
  94. local helpCfg = SL:GetConfig("cfg_rule_text", 201,"id")
  95. if helpCfg then
  96. SL:CommonStrTipsMessage({ title = helpCfg.menutxt, str = helpCfg.location })
  97. end
  98. end
  99. ---注册UI事件和服务器消息
  100. function this:RegistEvents()
  101. GUI:AddOnClickEvent(self.view.CloseButton, self, self.ClosePanel)
  102. GUI:AddOnClickEvent(self.view.desButton, self, self.DesBtn)
  103. GUI:AddOnClickEvent(self.view.moneyBackground, self, function()
  104. SL:OpenTips(nil, 10010001)
  105. end)
  106. GUI:AddOnClickEvent(self.view.MUCoinBackground, self, function()
  107. SL:OpenTips(nil, 10020001)
  108. end)
  109. SL:RegisterLUAEvent(LUA_EVENT_MONEYCHANGE, self.UpdateMoney, self)
  110. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_NPC_CHEST_GOODS_INFO, self.RES_NPC_CHEST_GOODS_INFO, self)
  111. end
  112. --刷新货币数据
  113. function this:UpdateMoney()
  114. GUI:Text_setString(self.view.moneyText, tostring(SL:GetMetaValue(EMetaVarGetKey.MONEY, MUEResourceType.GoldMoney)))
  115. GUI:Text_setString(self.view.muCoinText, tostring(SL:GetMetaValue(EMetaVarGetKey.MONEY, MUEResourceType.MiracleCurrency)))
  116. end
  117. function this:ClosePanel()
  118. GUI:UIPanel_Close("dev/outui/NPC/Panel/KLSpecialNPCShop/KLSpecialNPCShopPanel")
  119. end
  120. function this:Close()
  121. SL:UnRegisterLUAEvent(LUA_EVENT_MONEYCHANGE, self.UpdateMoney, self)
  122. GUI:UIPanel_Close("dev/ui/Bag/Panel/KLUIBag/KLUIBagPanel")
  123. SL:ShowMainPanel()
  124. table.clear(self.goods)
  125. end
  126. return this