源战役客户端
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

221 wiersze
7.7 KiB

4 tygodni temu
  1. -- <*
  2. -- @Author: Saber
  3. -- @Description: 社团红包领取结果界面
  4. -- *>
  5. GuildRedPacketResultView = GuildRedPacketResultView or BaseClass(BaseView)
  6. local GuildRedPacketResultView = GuildRedPacketResultView
  7. function GuildRedPacketResultView:__init()
  8. self.base_file = "redPacket"
  9. self.layout_file = "GuildRedPacketResultView"
  10. self.layer_name = "Activity"
  11. self.destroy_imm = true
  12. self.click_bg_toClose = true
  13. self.use_background = true --全屏界面默认使用这个参数
  14. self.change_scene_close = true --是否切换场景时关闭(弹出界面使用)
  15. self.blur_activity_bg = true
  16. self.use_show_anim = true
  17. self.use_hide_anim = true
  18. self.model = RedPacketModel:GetInstance()
  19. self.load_callback = function ()
  20. self:LoadSuccess()
  21. self:AddEvent()
  22. end
  23. self.open_callback = function ( )
  24. self:OpenSuccess()
  25. end
  26. self.destroy_callback = function ( )
  27. self:DestroySuccess()
  28. end
  29. end
  30. function GuildRedPacketResultView:Open(vo)
  31. self.data = vo
  32. self.rp_type = vo.type -- 红包类型
  33. BaseView.Open(self)
  34. end
  35. -- 重复打开更新界面信息
  36. function GuildRedPacketResultView:ReOpen(vo)
  37. self.data = vo
  38. self.rp_type = vo.type -- 红包类型
  39. self:OpenSuccess()
  40. end
  41. function GuildRedPacketResultView:LoadSuccess()
  42. local nodes = {
  43. "money_icon:img:obj", "close:obj", "head_con",
  44. "result_scroll", "result_scroll/Viewport/result_con",
  45. "packet_desc:tmp", "head_name:tmp", "reward:tmp", "left_time:tmp",
  46. "missed_des:tmp", "missed_bg:obj",
  47. "next_rp_btn:obj",
  48. "next_rp_btn/next_rp_btn_lb:tmp",
  49. }
  50. self:GetChildren(nodes)
  51. self.role_head = HeadRoleItem.New(self.head_con)
  52. self.role_head:SetItemSize(95, 95)
  53. end
  54. function GuildRedPacketResultView:AddEvent()
  55. local function click_event(target)
  56. if target == self.close_obj then
  57. self:Close()
  58. elseif target == self.next_rp_btn_obj then
  59. if self.next_rp_data then
  60. self.model:Fire(RedPacketModel.REQUEST_CCMD_EVENT, 33902, self.next_rp_data.id)
  61. end
  62. end
  63. end
  64. AddClickEvent(self.close_obj, click_event, LuaSoundManager.SOUND_UI.NONE)
  65. AddClickEvent(self.next_rp_btn_obj, click_event)
  66. local function updateGuildRedPacketList()
  67. self:UpdateNextRedpacketBtn()
  68. end
  69. self:BindEvent(self.model, RedPacketModel.UPDATE_GUILD_RP_LIST, updateGuildRedPacketList)
  70. end
  71. function GuildRedPacketResultView:OpenSuccess()
  72. lua_soundM:PlayUIEffectSound(LuaSoundManager.SOUND_UI.SUCCESS)
  73. self:UpdateView()
  74. self:UpdateNextRedpacketBtn()
  75. end
  76. function GuildRedPacketResultView:UpdateView()
  77. -- 红包发起人头像级描述信息
  78. local head_data = {
  79. vo = {
  80. id = self.data.role_id,
  81. -- server_id = self.data.server_id or 0,
  82. career = self.data.career,
  83. sex = self.data.sex,
  84. turn = self.data.turn,
  85. picture_ver = self.data.picture_ver,
  86. picture = self.data.picture,
  87. profile_photo_id = self.data.profile_photo_id,
  88. dress_board_id = self.data.dress_id,
  89. },
  90. show_tip = false,
  91. }
  92. self.role_head:SetData(head_data)
  93. self:UpdateReceiveResult()
  94. end
  95. -- 更新领取情况
  96. function GuildRedPacketResultView:UpdateReceiveResult( )
  97. local result_data = self.data.recipient_list or {}
  98. -- 按金额排序,获取前3
  99. local sort_func_rank = function ( a, b )
  100. if a.receive_money ~= b.receive_money then
  101. return a.receive_money > b.receive_money
  102. else
  103. return a.time < b.time
  104. end
  105. end
  106. table.sort(result_data, sort_func_rank)
  107. -- 获取前3
  108. local top_three = {}
  109. for i = 1, 3 do
  110. if result_data[i] then
  111. top_three[result_data[i].role_id] = i
  112. else
  113. break
  114. end
  115. end
  116. -- 再按领取时间排序
  117. local sort_func_time = function ( a, b )
  118. if a.time == b.time then
  119. return a.receive_money > b.receive_money
  120. else
  121. return a.time < b.time
  122. end
  123. end
  124. table.sort(result_data, sort_func_time)
  125. self.result_item_creator = self.result_item_creator or self:AddUIComponent(UI.ItemListCreator)
  126. -- 获取红包配置
  127. local redpt_cfg = Config.Redpacket[self.data.packet_id]
  128. local my_role_id = RoleManager.Instance.mainRoleInfo.role_id
  129. local money_asset, money_res = WordManager:GetCommonMoneyIcon(redpt_cfg.kind or 2)
  130. local info = {
  131. data_list = result_data,
  132. item_con = self.result_con,
  133. scroll_view = self.result_scroll,
  134. prefab_ab_name = "redPacket",
  135. prefab_res_name = "GuildRedPacketResultItem",
  136. item_height = 41,
  137. space_y = 1,
  138. start_x = 5,
  139. start_y = -8,
  140. -- create_frequency = 0.01,
  141. child_names = {"luck_flag:img","money_icon:img","name:tmp","num:tmp","bg:img"},
  142. on_update_item = function(item, i, v)
  143. if v.role_id == my_role_id then
  144. lua_resM:setImageSprite(item,item.bg_img,"redPacket_asset","guild_red_item_bg2")
  145. else
  146. lua_resM:setImageSprite(item,item.bg_img,"redPacket_asset","guild_red_item_bg1")
  147. end
  148. item.name_tmp.text = v.role_name
  149. item.num_tmp.text = "x"..v.receive_money
  150. local rank = top_three[v.role_id]
  151. lua_resM:setImageSprite(item, item.luck_flag_img, "redPacket_asset", rank and ("redpacket_luckflag"..rank .. "_pointfilter") or "com_empty", true)
  152. lua_resM:setImageSprite(item, item.money_icon_img, money_asset, money_res)
  153. end,
  154. }
  155. self.result_item_creator:UpdateItems(info)
  156. lua_resM:setImageSprite(self, self.money_icon_img, money_asset, money_res)
  157. self.head_name_tmp.text = self.data.role_name or ""
  158. -- 红包描述
  159. self.packet_desc_tmp.text = "<color=#fff770>"..Trim(redpt_cfg.name).."</color>"..Trim(redpt_cfg.greetings)
  160. local left_time = self.data.total_num - self.data.recipients_num
  161. local left_time_color = left_time > 0 and "#5aff8c" or "#ffffff"
  162. self.left_time_tmp.text = string.format("剩余个数:<color=%s>%s</color>/%s", left_time_color, left_time, self.data.total_num)
  163. self.reward_tmp.text = self.data.money > 0 and "x" .. self.data.money or ""
  164. local get_red_packet = false --自己是否领了这个红包
  165. for k,v in pairs(result_data) do
  166. if v.role_id == my_role_id then
  167. get_red_packet = true
  168. end
  169. end
  170. if not get_red_packet then--错过,领不到了
  171. if self.data.total_num-self.data.recipients_num <= 0 then
  172. self.missed_bg_obj:SetActive(true)
  173. self.missed_des_tmp.text = "红包已被其他玩家领完,下次请早"
  174. else
  175. if redpt_cfg.kind == 2 and self.model:IsGuildRedPacketInLimit() then -- 红钻红包达到上限
  176. self.missed_bg_obj:SetActive(true)
  177. self.missed_des_tmp.text = "红包领取次数已达上限,无法领取"
  178. else
  179. self.missed_bg_obj:SetActive(true)
  180. self.missed_des_tmp.text = "红包领取时间已过,下次请早"
  181. end
  182. end
  183. else
  184. self.missed_bg_obj:SetActive(false)
  185. self.missed_des_tmp.text = ""
  186. end
  187. end
  188. -- 更新是否展示领取下一红包的按钮
  189. function GuildRedPacketResultView:UpdateNextRedpacketBtn( )
  190. self.next_rp_data = self.model:GetOneRedPacketCan(self.data.id)
  191. if self.next_rp_data then
  192. self.next_rp_btn_obj:SetActive(true)
  193. else
  194. self.next_rp_btn_obj:SetActive(false)
  195. end
  196. end
  197. function GuildRedPacketResultView:DestroySuccess( )
  198. if self.role_head then
  199. self.role_head:DeleteMe()
  200. self.role_head = nil
  201. end
  202. end