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

244 line
7.8 KiB

  1. PetSupportRankItem = PetSupportRankItem or BaseClass(BaseItem)
  2. local PetSupportRankItem = PetSupportRankItem
  3. function PetSupportRankItem:__init()
  4. self.base_file = "pet"
  5. self.layout_file = "PetSupportRankItem"
  6. self.model = PetModel:getInstance()
  7. self:Load()
  8. end
  9. function PetSupportRankItem:Load_callback()
  10. self.nodes = {
  11. "bg:img",
  12. "rareBg:img","raceIcon:img","petIcon:img",
  13. -- "progress:img",
  14. -- "supporValue:tmp",--声援率
  15. "name:tmp",
  16. "roleCon:obj",
  17. "roleCon/roleName:tmp", "roleCon/vipCon", "roleCon/headCon",
  18. "des:tmp",
  19. "rankBg:img",
  20. "rankNum:tmp",
  21. "rewardBtn:obj:img",
  22. "race:tmp",
  23. "noneTip:obj",
  24. "rewardBtn/rewardRed:obj",
  25. --------------------
  26. "roleCon/designation_con/name_text:tmp",
  27. "roleCon/designation_con/effect",
  28. "roleCon/designation_con:obj",
  29. "roleCon/designation_con/designation_small_image:img:obj",
  30. "roleCon/designation_con/designation_image:img:obj", "petBg:img",
  31. }
  32. self:GetChildren(self.nodes)
  33. lua_resM:setOutsideImageSprite(self, self.bg_img, GameResPath.GetPetImage("pet_support_rank_item_di"))
  34. self.roleItem = HeadRoleItem.New(self.headCon)
  35. self.roleItem:SetItemSize(67,67)
  36. self.vipItem = RoleVipItem.New(self.vipCon)
  37. self:AddEvents()
  38. if self.need_refreshData then
  39. self:UpdateView()
  40. end
  41. end
  42. function PetSupportRankItem:AddEvents( )
  43. local on_click = function ( click_obj )
  44. if self.rewardBtn_obj == click_obj then
  45. if self.reward_state == 0 then
  46. self.model:Fire(PetConst.REQUEST_CCMD_EVENT,16315,self.data.pet_id)
  47. local rank_cfg = self.model:GetPetSupportRankCfg(self.data.rank)
  48. local reward_kv_cfg = stringtotable(rank_cfg.server_reward)
  49. local data = {}
  50. data.award = reward_kv_cfg
  51. data.not_show_anim = true
  52. GlobalEventSystem:Fire(EventName.OPEN_COM_AWARD_RESULT_VIEW,data)
  53. elseif self.reward_state == 1 then
  54. Message.show("已领过奖励")
  55. end
  56. end
  57. end
  58. AddClickEvent(self.rewardBtn_obj, on_click)
  59. local function onUpdateRewardState()
  60. self:UpdateRewardState()
  61. end
  62. self:BindEvent(self.model, PetConst.UPDATE_RANK_REWARD_STATE, onUpdateRewardState)
  63. end
  64. function PetSupportRankItem:UpdateView( )
  65. --排名
  66. if self.data.rank>=1 and self.data.rank<=3 then
  67. self.rankNum_tmp.text = ""
  68. lua_resM:setImageSprite(self,self.rankBg_img,"common_asset","com_rank_4_"..self.data.rank,true)
  69. else
  70. self.rankNum_tmp.text = self.data.rank
  71. lua_resM:setImageSprite(self,self.rankBg_img,"uiComponent_asset","com_empty")
  72. end
  73. -- --声援率
  74. -- self.supporValue_tmp.text = string.format("%0.1f",self.data.support_ratio/100).."%"
  75. -- self.progress_img.fillAmount = (self.data.support_ratio/100)/100
  76. --宠物信息
  77. local pet_cfg = self.model:GetPetCfg(self.data.pet_id, 1)
  78. self.name_tmp.text = Trim(pet_cfg.pet_name)
  79. -- ..PetConst.PetRace[pet_cfg.pet_race].color_str
  80. -- ..PetConst.PetRace[pet_cfg.pet_race].str2
  81. -- .."</color>"
  82. self.race_tmp.text = PetConst.PetRace[pet_cfg.pet_race].str1
  83. lua_resM:setImageSprite(self,self.petBg_img,"pet_asset","pet_rare_bg_"..pet_cfg.rare_degree)
  84. lua_resM:setImageSprite(self,self.raceIcon_img,"pet_asset","pet_race_"..pet_cfg.pet_race,true)
  85. lua_resM:setImageSprite(self,self.rareBg_img,"pet_asset","pet_rare_"..pet_cfg.rare_degree)
  86. lua_resM:setOutsideImageSprite(self, self.petIcon_img, GameResPath.GetPetImage("pet_"..self.data.pet_id.."_1"))
  87. --属性最高拥有者
  88. -- self.roleName_tmp.text = self.data.player_name
  89. if self.data.player_id == 0 then
  90. self.noneTip_obj:SetActive(true)
  91. self.roleCon_obj:SetActive(false)
  92. else
  93. self.noneTip_obj:SetActive(false)
  94. self.roleCon_obj:SetActive(true)
  95. self.vipItem:SetData(self.data.vip_flag,self.data.sup_vip_type)
  96. if self.data.vip_flag == 0 then
  97. SetAnchoredPositionX(self.roleName,42)
  98. else
  99. SetAnchoredPositionX(self.roleName,79)
  100. end
  101. --玩家数据
  102. local head_data = {
  103. vo = {
  104. id = self.data.player_id,
  105. sex = self.data.sex,
  106. profile_photo_id = self.data.photo_id,
  107. dress_board_id = self.data.dress_id,
  108. }
  109. }
  110. self.roleItem:SetData(head_data)
  111. if self.data.server_num == 0 then
  112. self.roleName_tmp.text = self.data.player_name
  113. else
  114. self.roleName_tmp.text = GetCSLongName(self.data.player_name,self.data.server_num)
  115. end
  116. end
  117. local rank_cfg = self.model:GetPetSupportRankCfg(self.data.rank)
  118. if rank_cfg then
  119. --描述性语句
  120. local des_msg = rank_cfg and Trim(rank_cfg.pet_expression) or ""
  121. self.des_tmp.text = " "..des_msg
  122. else
  123. self.des_tmp.text = string.format("区区第%s,好气哦!",WordManager:getHanZiNumber(self.data.rank))
  124. end
  125. --前三称号
  126. if self.data.rank>=1 and self.data.rank<=3 then
  127. local top_designation = rank_cfg.top_designation
  128. self.designation_con_obj:SetActive(true)
  129. self.designation_small_image_obj:SetActive(false)
  130. self.designation_image_obj:SetActive(false)
  131. self.name_text_tmp.text = ""
  132. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.designation_image)
  133. local dsgt_cfg = Config.Dsgt[top_designation]
  134. if self.designation_image_obj then
  135. self.designation_image_obj:SetActive(false)
  136. end
  137. if dsgt_cfg then
  138. if dsgt_cfg.type == 1 then--文字称号(文字称号也用图片了)
  139. lua_resM:setOutsideImageSprite(self, self.designation_small_image_img, GameResPath.GetDesignImage(dsgt_cfg.id), true)
  140. self.designation_small_image_obj:SetActive(true)
  141. elseif dsgt_cfg.type == 2 then
  142. lua_resM:setOutsideImageSprite(self, self.designation_image_img, GameResPath.GetDesignImage(dsgt_cfg.id), true)
  143. self.designation_image_obj:SetActive(true)
  144. elseif dsgt_cfg.type == 3 then
  145. if not self.dynamic_image_obj then
  146. self.dynamic_image_obj = UiFactory.createChild(self.designation_image, UIType.Image, "dynamic_image")
  147. self.dynamic_image_img = self.dynamic_image_obj:GetComponent("Image")
  148. self.dynamic_image = self.dynamic_image_obj.transform
  149. SetAnchoredPosition(self.dynamic_image,0,0)
  150. else
  151. self.dynamic_image_obj:SetActive(true)
  152. end
  153. SetSizeDelta(self.designation_image, 210*0.8,90*0.8)
  154. self.designation_image_obj:SetActive(true)
  155. local data = DeepCopy(DesignationModel:GetInstance():GetDynamicDesignationCFG(top_designation))
  156. for i,v in ipairs(data) do
  157. v.not_auto_size = true
  158. end
  159. local res = Split(data[1].res,"_")--分割出来配置 然后取文字
  160. local font_res = res[1] or ""
  161. lua_resM:setImageSprite(self, self.dynamic_image_img, data[1].ab, font_res.."_font", false)
  162. local action = cc.Animation.New(data,0.15)
  163. cc.ActionManager:getInstance():addAction(cc.RepeatForever.New(action),self.designation_image.transform)
  164. end
  165. end
  166. else
  167. self.designation_con_obj:SetActive(false)
  168. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.designation_image)
  169. end
  170. self:UpdateRewardState()
  171. end
  172. function PetSupportRankItem:UpdateRewardState( )
  173. --领奖状态
  174. self.reward_state = 0 --0未领取 1-已领取
  175. local reward_data = self.model:GetPetRankRewardData()
  176. for k,v in pairs(reward_data) do
  177. if v.pet_id == self.data.pet_id then
  178. self.reward_state = v.is_received
  179. end
  180. end
  181. if self.data.rank>=1 and self.data.rank<=3 then
  182. self.rewardBtn_obj:SetActive(true)
  183. if self.reward_state == 0 then
  184. SetImageGray(self.rewardBtn_img, false)
  185. self.rewardRed_obj:SetActive(true)
  186. elseif self.reward_state == 1 then
  187. SetImageGray(self.rewardBtn_img, true)
  188. self.rewardRed_obj:SetActive(false)
  189. end
  190. else
  191. self.rewardBtn_obj:SetActive(false)
  192. end
  193. end
  194. function PetSupportRankItem:SetData(data)
  195. self.data = data
  196. if self.is_loaded then
  197. self.need_refreshData = false
  198. self:UpdateView()
  199. else
  200. self.need_refreshData = true
  201. end
  202. end
  203. function PetSupportRankItem:__delete( )
  204. cc.ActionManager:getInstance():removeAllActionsFromTarget(self.designation_image)
  205. if self.roleItem then
  206. self.roleItem:DeleteMe()
  207. self.roleItem = nil
  208. end
  209. if self.vipItem then
  210. self.vipItem:DeleteMe()
  211. self.vipItem = nil
  212. end
  213. end