源战役客户端
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.

189 line
5.7 KiB

  1. PetSupportView = PetSupportView or BaseClass(BaseItem)
  2. local PetSupportView = PetSupportView
  3. function PetSupportView:__init()
  4. self.base_file = "pet"
  5. self.layout_file = "PetSupportView"
  6. self.full_screen = true
  7. self.model = PetModel:getInstance()
  8. self.support_as_item_list = {}--全服声援位item
  9. self:Load()
  10. end
  11. function PetSupportView:Load_callback()
  12. self.nodes = {
  13. "rankBtn:obj",
  14. "conASSupport","conSupport","conSupport/Viewport/Content",
  15. "fight1:tmp","fight2:tmp",
  16. "doubt1:obj","doubt2:obj",
  17. "bottomImg:img",
  18. "addFight2:tmp", "addFight1:tmp",
  19. "tips:tmp",
  20. "rankBtn/rankRed:obj",
  21. }
  22. self:GetChildren(self.nodes)
  23. lua_resM:setImageSprite(self, self.bottomImg_img, "petExtra_asset","pet_support_bottom_1174_145")
  24. self.tips_tmp.text = "<#fdffc2>上阵宠物</color> 可享受 <#fdffc2>额外属性加成</color> 哦!"
  25. SetAnchoredPositionX(self.tips,-45)
  26. self:AddEvents()
  27. if self.need_refreshData then
  28. self:UpdateView()
  29. end
  30. end
  31. function PetSupportView:AddEvents( )
  32. local on_click = function ( click_obj )
  33. if self.rankBtn_obj == click_obj then--排行榜
  34. self.model:Fire(PetConst.OPEN_PET_VOTE_VIEW)
  35. elseif self.doubt1_obj == click_obj then
  36. EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 16302)
  37. elseif self.doubt2_obj == click_obj then
  38. EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 16303)
  39. end
  40. end
  41. AddClickEvent(self.rankBtn_obj, on_click)
  42. AddClickEvent(self.doubt1_obj, on_click)
  43. AddClickEvent(self.doubt2_obj, on_click)
  44. local refresh_support_fight = function()
  45. self:UpdateAditionFight()
  46. end
  47. self:BindEvent(self.model, PetConst.REFRESH_PET_SUPPORT_FIGHT, refresh_support_fight)
  48. --红点更新
  49. local function on_ans_update_red_dot(tab_id)
  50. if not self.is_loaded then return end
  51. if tab_id == PetConst.RED_DOT_TYPE.Vote or tab_id == PetConst.RED_DOT_TYPE.Reward then
  52. self:RefreshRed()
  53. end
  54. end
  55. self:BindEvent(self.model, PetConst.ANS_UPDATE_RED_DOT, on_ans_update_red_dot)
  56. end
  57. function PetSupportView:RefreshRed( )
  58. local red_vote = self.model:GetPetVoteTimesRed()
  59. local reward_vote = self.model:GetPetRewardRed()
  60. self.rankRed_obj:SetActive(red_vote or reward_vote)
  61. end
  62. function PetSupportView:UpdateView( )
  63. self:UpdateASSupportPet()
  64. self:UpdateNormalSupportPet()
  65. self:UpdateAditionFight()
  66. self:RefreshRed()
  67. end
  68. --刷新全服声援位的宠物显示
  69. function PetSupportView:UpdateASSupportPet()
  70. local support_data = {}
  71. for i=1,3 do
  72. local data = self.model:GetPetSupportDataBySlot(i)
  73. support_data[i] = data or 0
  74. end
  75. for k,v in pairs(self.support_as_item_list) do
  76. v:SetVisible(false)
  77. end
  78. for i,v in ipairs(support_data) do
  79. local item = self.support_as_item_list[i]
  80. if not item then
  81. item = PetSupportASItem.New(self.conASSupport)
  82. self.support_as_item_list[i] = item
  83. end
  84. item:SetVisible(true)
  85. item:SetData(i,v)--声援槽位、声援信息
  86. if i == 1 then
  87. item:SetAnchoredPosition(-11,-40)
  88. elseif i == 2 then
  89. item:SetAnchoredPosition(-346,-40)
  90. elseif i == 3 then
  91. item:SetAnchoredPosition(324,-40)
  92. end
  93. end
  94. end
  95. --刷新普通声援位的宠物显示
  96. function PetSupportView:UpdateNormalSupportPet()
  97. local support_data = {}
  98. for i=1,7 do
  99. local data = self.model:GetPetSupportDataBySlot(i+3)
  100. support_data[i] = data or 0
  101. end
  102. if not self.item_list_com then
  103. self.item_list_com = self:AddUIComponent(UI.ItemListCreator)
  104. end
  105. local info = {
  106. data_list = support_data,
  107. item_con = self.Content,
  108. item_class = PetSupportNormalItem,
  109. item_width = 112,
  110. space_x = 43,
  111. start_x = 29,
  112. start_y = -11.5,
  113. scroll_view = self.conSupport,
  114. create_frequency = 0.01,
  115. on_update_item = function(item, i, v)
  116. item:SetData(i+3,v)--声援槽位,声援信息
  117. end,
  118. }
  119. self.item_list_com:UpdateItems(info)
  120. end
  121. --刷新加成战力
  122. function PetSupportView:UpdateAditionFight()
  123. local as_fight_value = 0
  124. for i=1,3 do
  125. local data = self.model:GetPetSupportDataBySlot(i)
  126. if data then
  127. local slot_cfg = self.model:GetPetSupportSlotCfg(i)
  128. local adition_value = slot_cfg and tonumber(slot_cfg.attr_add_ratio) or 0.05
  129. local base_fight = self.model:GetPetFightById(data.pet_id)
  130. local adition_fight = self.model:GetPetAditionFightById(data.pet_id,adition_value)
  131. as_fight_value = as_fight_value + math.floor((adition_fight-base_fight))
  132. end
  133. end
  134. self.fight1_tmp.text = string.format("加成战力%s", as_fight_value)
  135. local slot_cfg_1 = self.model:GetPetSupportSlotCfg(1)
  136. local add_num_1 = tonumber(slot_cfg_1.attr_add_ratio)*100
  137. self.addFight1_tmp.text = "(每只宠物属性加成<#2CF86F>"..add_num_1.."%</color>)"
  138. SetAnchoredPositionX(self.addFight1,-475+self.fight1_tmp.preferredWidth+5)
  139. local normal_fight_value = 0
  140. for i=4,10 do
  141. local data = self.model:GetPetSupportDataBySlot(i)
  142. if data then
  143. local slot_cfg = self.model:GetPetSupportSlotCfg(i)
  144. local adition_value = slot_cfg and tonumber(slot_cfg.attr_add_ratio) or 0.02
  145. local base_fight = self.model:GetPetFightById(data.pet_id)
  146. local adition_fight = self.model:GetPetAditionFightById(data.pet_id, adition_value)
  147. normal_fight_value = normal_fight_value + math.floor((adition_fight-base_fight))
  148. end
  149. end
  150. self.fight2_tmp.text = string.format("加成战力%s", normal_fight_value)
  151. local slot_cfg_2 = self.model:GetPetSupportSlotCfg(4)
  152. local add_num_2 = tonumber(slot_cfg_2.attr_add_ratio)*100
  153. self.addFight2_tmp.text = "(每只宠物属性加成<#2CF86F>"..add_num_2.."%</color>)"
  154. SetAnchoredPositionX(self.addFight2,-475+self.fight2_tmp.preferredWidth+5)
  155. end
  156. function PetSupportView:SetData()
  157. if self.is_loaded then
  158. self.need_refreshData = false
  159. self:UpdateView()
  160. else
  161. self.need_refreshData = true
  162. end
  163. end
  164. function PetSupportView:__delete( )
  165. for i, v in ipairs(self.support_as_item_list) do
  166. v:DeleteMe()
  167. end
  168. self.support_as_item_list = {}
  169. end