源战役客户端
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

167 linhas
5.3 KiB

  1. WardrobeShopItem = WardrobeShopItem or BaseClass(BaseItem)
  2. local WardrobeShopItem = WardrobeShopItem
  3. function WardrobeShopItem:__init()
  4. self.base_file = "wardrobe"
  5. self.layout_file = "WardrobeShopItem"
  6. self.model = WardrobeModel:GetInstance()
  7. self.gray_mat = ShaderTools.gray_mat
  8. self:Load()
  9. end
  10. function WardrobeShopItem:Load_callback()
  11. self.nodes = {
  12. "price_con/price_text:tmp", "bg:imgex", "name_text:tmp", "tip_image:obj:img", "discount_text:tmp:obj", "limit_text:tmp",
  13. "discount_bg:obj", "price_con", "price_con/money_icon:img:obj", "item_con", "click_con:obj",
  14. }
  15. self:GetChildren(self.nodes)
  16. self.awardItem = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.item_con)
  17. self.awardItem:SetItemSize(62, 62)
  18. self.awardItem:SetEnableClick(false)
  19. self:AddEvents()
  20. if self.need_refreshData or self.need_refreshServerData then
  21. self:UpdateView()
  22. end
  23. end
  24. function WardrobeShopItem:AddEvents( )
  25. local function on_click( ... )
  26. self:OpenTipsView()
  27. end
  28. AddClickEvent(self.click_con_obj, on_click)
  29. end
  30. function WardrobeShopItem:UpdateView( )
  31. local data = self.data
  32. if not data then
  33. return
  34. end
  35. local server_data = self.server_data
  36. local function call_back( )
  37. self:SetVisible(true)
  38. end
  39. local goodsVo = GoodsModel:getInstance():GetGoodsBasicByTypeId(data.goods_id)
  40. if not goodsVo then
  41. print("HWR:WardrobeShopItem [46]no goods id: ", data.goods_id)
  42. return
  43. end
  44. self.awardItem:SetData(data.goods_id, data.goods_num, nil, nil)
  45. lua_resM:setImageSprite(self, self.bg_imgex, "shopOut_asset", "shop_item_color"..goodsVo.color, false, call_back)
  46. local is_buy_out = false
  47. local left_num = data.limit_num
  48. if server_data then
  49. is_buy_out = data.limit_num <= server_data.num
  50. left_num = data.limit_num - server_data.num
  51. else
  52. end
  53. local limit_str = "终身限购 %s/%s"
  54. if data.limit_type > 0 then
  55. left_num = left_num > 0 and left_num or 0
  56. local color_str = left_num > 0 and ColorUtil.GREEN_DARK or ColorUtil.RED_DARK
  57. if data.limit_type == 1 then
  58. limit_str = "每周限购 %s/%s"
  59. elseif data.limit_type == 2 then
  60. limit_str = "每日限购 %s/%s"
  61. elseif data.limit_type == 3 then
  62. limit_str = "终身限购 %s/%s"
  63. end
  64. self.limit_text_tmp.text = string.format(limit_str, HtmlColorTxt(left_num, color_str), data.limit_num)
  65. else
  66. self.limit_text_tmp.text = ""
  67. end
  68. local shop_price = round(data.price * data.discount / 100)
  69. self.price_text_tmp.text = shop_price
  70. SetSizeDeltaX(self.price_text, self.price_text_tmp.preferredWidth)
  71. self.discount_text_tmp.text = (data.discount / 10)..""
  72. self.discount_bg_obj:SetActive(data.discount < 100)
  73. self.discount_text_obj:SetActive(data.discount < 100)
  74. self:SetItemGary(is_buy_out)
  75. end
  76. function WardrobeShopItem:SetData( data,index )
  77. self.data = data
  78. self.index = index
  79. if self.is_loaded then
  80. self.need_refreshData = false
  81. self:UpdateView()
  82. else
  83. self.need_refreshData = true
  84. end
  85. end
  86. function WardrobeShopItem:SetServerData( data )
  87. self.server_data = data
  88. if self.is_loaded then
  89. self.need_refreshServerData = false
  90. self:UpdateView()
  91. else
  92. self.need_refreshServerData = true
  93. end
  94. end
  95. function WardrobeShopItem:SetItemGary(bool)
  96. local mat = bool and self.gray_mat or nil
  97. local data = self.data
  98. if bool then
  99. self.price_text_tmp.text = "已售完"
  100. self.money_icon_obj:SetActive(false)
  101. else
  102. self.money_icon_obj:SetActive(true)
  103. end
  104. self:SetMoneyIcon()
  105. self.price_text_tmp.color = bool and ColorUtilValue.GRAY_DARK or ColorUtil:ConvertHexToRGBColor("#fdffc2")
  106. local goods_name = GoodsModel:getInstance():getGoodsName(data.goods_id, not bool)
  107. self.goods_basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(data.goods_id)
  108. self.name_text_tmp.color = bool and ColorUtilValue.GRAY_DARK or ColorUtil:ConvertHexToRGBColor("#ffffff")
  109. self.name_text_tmp.text = goods_name
  110. self.bg_imgex.gray = bool
  111. self.awardItem:SetGray(bool)
  112. if bool then
  113. self.tip_image_obj:SetActive(true)
  114. lua_resM:setImageSprite(self, self.tip_image_img, "wardrobe_asset", "wardrobe_type0", true)
  115. else
  116. local tips = data.tag
  117. if tips >= 1 then
  118. lua_resM:setImageSprite(self, self.tip_image_img, "wardrobe_asset", "wardrobe_type"..tips, true)
  119. end
  120. self.tip_image_obj:SetActive(tips >= 1)
  121. end
  122. end
  123. -- 加载货币图标
  124. function WardrobeShopItem:SetMoneyIcon()
  125. if not self.data or not self.data.money_type then return end
  126. local asset, source = WordManager:GetCommonMoneyIcon(self.data.money_type)
  127. self.money_icon.transform.sizeDelta = co.TableXY(25,25)
  128. lua_resM:setImageSprite(self, self.money_icon_img, asset, source)
  129. end
  130. function WardrobeShopItem:OpenTipsView( )
  131. if self.goods_basic.type == GoodsModel.TYPE.EQUIP then --装备鉴定物
  132. UIToolTipMgr:getInstance():AppendEquipTips(self.goods_basic.type_id, x, y,nil,nil,nil,nil,"shop_buy",self.data)
  133. else
  134. local data = {
  135. shop_data = self.data,
  136. }
  137. data.shop_data.quota_type = self.data.limit_type
  138. data.shop_data.quota_num = self.data.limit_num
  139. if self.server_data then
  140. data.shop_data.sold_out = self.server_data.num
  141. else
  142. data.shop_data.sold_out = 0
  143. end
  144. data.shop_data.is_wardrobe_shop = true
  145. UIToolTipMgr:getInstance():AppendGoodsTips(self.goods_basic.type_id, x, y, nil, nil,data, true)
  146. end
  147. end
  148. function WardrobeShopItem:__delete( )
  149. if self.awardItem then
  150. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem)
  151. self.awardItem = nil
  152. end
  153. end