源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

149 line
4.3 KiB

  1. FuliLevelItem = FuliLevelItem or BaseClass(BaseItem)
  2. local FuliLevelItem = FuliLevelItem
  3. FuliLevelItem.Width = 699
  4. FuliLevelItem.Height = 120
  5. function FuliLevelItem:__init()
  6. self.base_file = "fuli"
  7. self.layout_file = "FuliLevelItem"
  8. self.model = FuliModel:GetInstance()
  9. self:Load()
  10. end
  11. function FuliLevelItem:Load_callback()
  12. self.nodes = {
  13. "get_btn:obj:img","get_btn/get_btn_text:tmp","name_text:txt","get_btn/get_btn_red:obj",
  14. "item_scroll:scroll","item_scroll/Viewport/item_con","get_image:obj","nameTitle:tmp",
  15. "icon:obj", "limitNumText:tmp", "limitBg:obj",
  16. }
  17. self:GetChildren(self.nodes)
  18. self.awardItem = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.icon)
  19. self.awardItem:SetItemSize(78,78)
  20. SetAnchoredPositionY(self.limitNumText, -46)
  21. SetAnchoredPositionY(self.limitBg, -46)
  22. -- SetAnchoredPositionY(self.icon, -12)
  23. self.nameTitle_tmp.text = "Lv."
  24. self:AddEvents()
  25. if self.need_refreshData then
  26. self:UpdateView()
  27. end
  28. end
  29. function FuliLevelItem:AddEvents( )
  30. local on_click = function ( click_obj )
  31. if self.get_btn_obj == click_obj then
  32. self.model:Fire(FuliConst.REQ_FULI_SCMD, 16006, self.data.id)
  33. end
  34. end
  35. AddClickEvent(self.get_btn_obj, on_click)
  36. end
  37. function FuliLevelItem:UpdateView( )
  38. self.name_text_txt.text = self.data.level
  39. local get_str = ""
  40. if self.data.limit_num > 0 then
  41. local rest_num = self.data.limit_num - self.model:GetFuliLevelLimitGetNum(self.data.id)
  42. self.rest_num = rest_num
  43. local rest_str = HtmlColorTxt(rest_num, ColorUtil.GREEN_DARK)
  44. if rest_num == 0 then
  45. rest_str = HtmlColorTxt(rest_num, ColorUtil.RED_DARK)
  46. end
  47. get_str = string.format("剩余:%s",rest_str)
  48. else
  49. get_str = string.format("剩余:%s",HtmlColorTxt(0, ColorUtil.RED_DARK))
  50. end
  51. self.limitNumText_tmp.text = get_str
  52. if not self.item_list_com then
  53. self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
  54. end
  55. self.item_list_com:Reset()
  56. local reward = {}
  57. if self.data.limit_num > 0 and self.rest_num > 0 then
  58. reward = self.data.award_limit_list
  59. else
  60. reward = self.data.award_list
  61. end
  62. self.limit_goods_vo = nil
  63. local new_reward_list = {}
  64. for k,v in ipairs(reward) do
  65. if not v.is_limit then
  66. new_reward_list[#new_reward_list + 1] = v
  67. else
  68. self.limit_goods_vo = v
  69. end
  70. end
  71. self.icon_obj:SetActive(self.limit_goods_vo ~= nil)
  72. self.limitBg_obj:SetActive(self.limit_goods_vo ~= nil)
  73. if self.limit_goods_vo then
  74. self.awardItem:SetData(self.limit_goods_vo[2],self.limit_goods_vo[3])
  75. self.awardItem:SetNumLimitVisible( true, 25 )
  76. -- SetSizeDeltaX(self.item_scroll,313)
  77. else
  78. self.limitNumText_tmp.text = ""
  79. -- SetSizeDeltaX(self.item_scroll,410)
  80. end
  81. local info = {
  82. data_list = new_reward_list,
  83. item_con = self.item_con,
  84. scroll_view = self.item_scroll,
  85. obj_pool_type = UIObjPool.UIType.AwardItem,
  86. item_width = 78,
  87. space_x = 14,
  88. start_y = -2,
  89. start_x = 2,
  90. create_frequency = 0,
  91. is_enable = self.limit_goods_vo and #new_reward_list >= 4 or #new_reward_list >= 5,
  92. on_update_item = function(item, i, v)
  93. item:SetItemSize(78, 78)
  94. item:SetVisible(true)
  95. if v.is_limit then
  96. item:SetNumLimitVisible( true, 4 )
  97. item:SetData(v[2], v[3], nil, nil)
  98. else
  99. item:SetNumLimitVisible( false )
  100. item:SetData(v[2], v[3], nil, nil)
  101. end
  102. end,
  103. }
  104. self.item_list_com:UpdateItems(info)
  105. if self.data.sort_rank == 2 then--可以领且没有领
  106. self.get_image_obj:SetActive(false)
  107. SetImageGray(self.get_btn_img,false)
  108. SetTMPSharedMaterial(self.get_btn_text_tmp,ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkOrangeBtn)
  109. self.get_btn_red_obj:SetActive(true)
  110. self.get_btn_obj:SetActive(true)
  111. elseif self.data.sort_rank == 0 then--领了
  112. self.get_image_obj:SetActive(true)
  113. self.get_btn_obj:SetActive(false)
  114. else--不够等级
  115. self.get_image_obj:SetActive(false)
  116. SetImageGray(self.get_btn_img,true)
  117. SetTMPSharedMaterial(self.get_btn_text_tmp,ShaderTools.TMPSharedMaterialType.FZZZOutlineDarkGrayBtn)
  118. self.get_btn_red_obj:SetActive(false)
  119. self.get_btn_obj:SetActive(true)
  120. end
  121. end
  122. function FuliLevelItem:SetData(index, data )
  123. self.index = index
  124. self.data = data
  125. if self.is_loaded then
  126. self.need_refreshData = false
  127. self:UpdateView()
  128. else
  129. self.need_refreshData = true
  130. end
  131. end
  132. function FuliLevelItem:__delete( )
  133. if self.awardItem then
  134. UIObjPool:PushItem(UIObjPool.UIType.AwardItem, self.awardItem)
  135. self.awardItem = nil
  136. end
  137. end