KLShowStallGoodsItem.lua 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. ---@class KLShowStallGoodsItem:UIKmlLuaPanelBase
  2. ---@field view KLShowStallGoodsItemView
  3. local KLShowStallGoodsItem = class(UIKmlLuaPanelBase)
  4. local this = KLShowStallGoodsItem
  5. ---创建时调用一次
  6. function this:Init()
  7. end
  8. ---注册UI事件和服务器消息
  9. function this:RegistEvents()
  10. GUI:AddOnClickEvent(self.view.btn_goods_item, self, self.ItemOnClick)
  11. end
  12. function this:ItemOnClick()
  13. --SL:OpenTips(nil,self.itemData.itemcfgid)
  14. -- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_ShowStall_GOODS_INFO, {self.itemData.itemid, self.itemData.ownid })
  15. -- GUI:UIPanel_Open("dev/outui/ShowStall/Panel/KLShowStallBuy/KLShowStallBuyPanel", nil, nil, self.itemData)
  16. -- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_TRADE_GOODS_INFO, {self.itemData.itemid, self.itemData.ownid })
  17. -- GUI:UIPanel_Open("dev/outui/Trade/Panel/KLTradeBuy/KLTradeBuyPanel", nil, nil, self.itemData)
  18. end
  19. ---创建或者刷新界面数据时调用
  20. function this:Refresh()
  21. end
  22. ---@class KLShowStallGoodsItemData
  23. ---@field timename string
  24. ---@field itemname string
  25. ---@field count number
  26. ---@field price number
  27. ---@field itemcfgid number
  28. ---@field cointype number
  29. ---@field time number
  30. ---@field preordercount number @预订数量
  31. ---@field publicity string 公示区时为1
  32. ---@field itemid number
  33. ---@field type number
  34. ---@field entrysize number 词条数量
  35. ---@param itemData KLShowStallGoodsItemData
  36. function this:UpdateData(itemData)
  37. self.itemData = itemData
  38. GUI:Text_setString(self.view.txt_item_name, itemData.itemname)
  39. GUI:Item_setItemId(self.view.item, itemData.itemcfgid)
  40. if itemData.itemcfgid == EMonthType.MonthCardTime then
  41. --GUI:Item_UpdataData(self.view.item, { itemcount = 1 })
  42. GUI:Text_setString(self.view.itemCount, "")
  43. GUI:SetActive(self.view.monthCardText,true)
  44. GUI:Text_setString(self.view.monthCardText,itemData.count.."天")
  45. else
  46. GUI:SetActive(self.view.monthCardText,false)
  47. --GUI:Item_UpdataData(self.view.item, { itemcount = itemData.count })
  48. local numStr = ""
  49. if itemData.count > 1 then
  50. numStr = tostring(itemData.count)
  51. end
  52. GUI:Text_setString(self.view.itemCount, numStr)
  53. end
  54. GUI:Image_loadTexture(self.view.img_coin_type,self:GetCoinIcon(tonumber(itemData.cointype)),"Atlas/UIBagPanel.spriteatlas")
  55. local totalPrice = itemData.totalprice
  56. local ownCount = SL:GetBagItemCount(tonumber(itemData.cointype))
  57. GUI:Text_setTextColor(self.view.txt_price,ownCount >= totalPrice and "#1ADD1F" or "#FF2323")
  58. GUI:Text_setString(self.view.txt_price,tostring(totalPrice))
  59. GUI:Image_loadTexture(self.view.img_coin_type, self:GetCoinIcon(tonumber(itemData.cointype)), "Atlas/UIBagPanel.spriteatlas")
  60. GUI:Text_setString(self.view.txt_price, tostring(totalPrice))
  61. if itemData.publicity == 1 then
  62. GUI:SetActive(self.view.img_favor_count, true)
  63. if table.count(itemData.peroreder) > 0 then
  64. GUI:Text_setString(self.view.txt_favor_count, tostring(table.count(itemData.peroreder)))
  65. GUI:Image_loadTexture(self.view.img_favor_count,"star","Atlas/KLTradePanel.spriteatlas")
  66. else
  67. GUI:Text_setString(self.view.txt_favor_count, "")
  68. GUI:Image_loadTexture(self.view.img_favor_count,"star_kong","Atlas/KLTradePanel.spriteatlas")
  69. end
  70. else
  71. GUI:SetActive(self.view.img_favor_count, false)
  72. end
  73. self:Tick()
  74. self:ShowQualityUI()
  75. end
  76. function this:ShowQualityUI()
  77. if self.qualityItem then
  78. self.qualityItem:SetData(self.itemData.itemcfgid, self.itemData.entrysize)
  79. else
  80. if not GUI:IsWebGLAsync() then
  81. self.qualityItem = GUI:UIPanel_Open("dev/ui/Common/Item/KLEquipQualityEntry/KLEquipQualityEntryItem",
  82. self.view.root, self, { cfgId = self.itemData.itemcfgid, entryCount = self.itemData.entrysize }, true)
  83. else
  84. GUI:UIPanel_Open("dev/ui/Common/Item/KLEquipQualityEntry/KLEquipQualityEntryItem",
  85. self.view.root, self, { cfgId = self.itemData.itemcfgid, entryCount = self.itemData.entrysize }, true,
  86. function ( tempUI )
  87. self.qualityItem = tempUI
  88. end)
  89. end
  90. end
  91. end
  92. function this:GetCoinIcon(coinType)
  93. if coinType == 10010001 then
  94. return "img_bag_01"
  95. elseif coinType == 10020001 then
  96. return "img_bag_02"
  97. elseif coinType == 10030001 then
  98. return "img_bag_03"
  99. elseif coinType == 10040001 then
  100. return "img_bag_04"
  101. end
  102. end
  103. function this:Close()
  104. if self.qualityItem then
  105. GUI:UIPanel_Close(nil, self.qualityItem)
  106. self.qualityItem = nil
  107. end
  108. end
  109. function this:Tick()
  110. if not self.itemData or not self.itemData.time then
  111. return false
  112. end
  113. self.itemData.time = self.itemData.time - 1
  114. if self.itemData.time <= 0 then
  115. GUI:Text_setString(self.view.txt_count_down, "")
  116. return true
  117. else
  118. if self.itemData.time <= 3*60*60 or self.itemData.publicity == "1" then
  119. local timeInfo = SL:SecondToHMS(math.floor(self.itemData.time))
  120. local timeStr = string.format("%02s:%02s:%02s",timeInfo.h,timeInfo.m,timeInfo.s)
  121. GUI:Text_setString(self.view.txt_count_down, self.itemData.timename .. " " .. timeStr)
  122. else
  123. GUI:Text_setString(self.view.txt_count_down, "")
  124. end
  125. end
  126. end
  127. return this