-- <* -- @Author: Saber -- @Description: 社团红包领取结果界面 -- *> GuildRedPacketResultView = GuildRedPacketResultView or BaseClass(BaseView) local GuildRedPacketResultView = GuildRedPacketResultView function GuildRedPacketResultView:__init() self.base_file = "redPacket" self.layout_file = "GuildRedPacketResultView" self.layer_name = "Activity" self.destroy_imm = true self.click_bg_toClose = true self.use_background = true --全屏界面默认使用这个参数 self.change_scene_close = true --是否切换场景时关闭(弹出界面使用) self.blur_activity_bg = true self.use_show_anim = true self.use_hide_anim = true self.model = RedPacketModel:GetInstance() self.load_callback = function () self:LoadSuccess() self:AddEvent() end self.open_callback = function ( ) self:OpenSuccess() end self.destroy_callback = function ( ) self:DestroySuccess() end end function GuildRedPacketResultView:Open(vo) self.data = vo self.rp_type = vo.type -- 红包类型 BaseView.Open(self) end -- 重复打开更新界面信息 function GuildRedPacketResultView:ReOpen(vo) self.data = vo self.rp_type = vo.type -- 红包类型 self:OpenSuccess() end function GuildRedPacketResultView:LoadSuccess() local nodes = { "money_icon:img:obj", "close:obj", "head_con", "result_scroll", "result_scroll/Viewport/result_con", "packet_desc:tmp", "head_name:tmp", "reward:tmp", "left_time:tmp", "missed_des:tmp", "missed_bg:obj", "next_rp_btn:obj", "next_rp_btn/next_rp_btn_lb:tmp", } self:GetChildren(nodes) self.role_head = HeadRoleItem.New(self.head_con) self.role_head:SetItemSize(95, 95) end function GuildRedPacketResultView:AddEvent() local function click_event(target) if target == self.close_obj then self:Close() elseif target == self.next_rp_btn_obj then if self.next_rp_data then self.model:Fire(RedPacketModel.REQUEST_CCMD_EVENT, 33902, self.next_rp_data.id) end end end AddClickEvent(self.close_obj, click_event, LuaSoundManager.SOUND_UI.NONE) AddClickEvent(self.next_rp_btn_obj, click_event) local function updateGuildRedPacketList() self:UpdateNextRedpacketBtn() end self:BindEvent(self.model, RedPacketModel.UPDATE_GUILD_RP_LIST, updateGuildRedPacketList) end function GuildRedPacketResultView:OpenSuccess() lua_soundM:PlayUIEffectSound(LuaSoundManager.SOUND_UI.SUCCESS) self:UpdateView() self:UpdateNextRedpacketBtn() end function GuildRedPacketResultView:UpdateView() -- 红包发起人头像级描述信息 local head_data = { vo = { id = self.data.role_id, -- server_id = self.data.server_id or 0, career = self.data.career, sex = self.data.sex, turn = self.data.turn, picture_ver = self.data.picture_ver, picture = self.data.picture, profile_photo_id = self.data.profile_photo_id, dress_board_id = self.data.dress_id, }, show_tip = false, } self.role_head:SetData(head_data) self:UpdateReceiveResult() end -- 更新领取情况 function GuildRedPacketResultView:UpdateReceiveResult( ) local result_data = self.data.recipient_list or {} -- 按金额排序,获取前3 local sort_func_rank = function ( a, b ) if a.receive_money ~= b.receive_money then return a.receive_money > b.receive_money else return a.time < b.time end end table.sort(result_data, sort_func_rank) -- 获取前3 local top_three = {} for i = 1, 3 do if result_data[i] then top_three[result_data[i].role_id] = i else break end end -- 再按领取时间排序 local sort_func_time = function ( a, b ) if a.time == b.time then return a.receive_money > b.receive_money else return a.time < b.time end end table.sort(result_data, sort_func_time) self.result_item_creator = self.result_item_creator or self:AddUIComponent(UI.ItemListCreator) -- 获取红包配置 local redpt_cfg = Config.Redpacket[self.data.packet_id] local my_role_id = RoleManager.Instance.mainRoleInfo.role_id local money_asset, money_res = WordManager:GetCommonMoneyIcon(redpt_cfg.kind or 2) local info = { data_list = result_data, item_con = self.result_con, scroll_view = self.result_scroll, prefab_ab_name = "redPacket", prefab_res_name = "GuildRedPacketResultItem", item_height = 41, space_y = 1, start_x = 5, start_y = -8, -- create_frequency = 0.01, child_names = {"luck_flag:img","money_icon:img","name:tmp","num:tmp","bg:img"}, on_update_item = function(item, i, v) if v.role_id == my_role_id then lua_resM:setImageSprite(item,item.bg_img,"redPacket_asset","guild_red_item_bg2") else lua_resM:setImageSprite(item,item.bg_img,"redPacket_asset","guild_red_item_bg1") end item.name_tmp.text = v.role_name item.num_tmp.text = "x"..v.receive_money local rank = top_three[v.role_id] lua_resM:setImageSprite(item, item.luck_flag_img, "redPacket_asset", rank and ("redpacket_luckflag"..rank .. "_pointfilter") or "com_empty", true) lua_resM:setImageSprite(item, item.money_icon_img, money_asset, money_res) end, } self.result_item_creator:UpdateItems(info) lua_resM:setImageSprite(self, self.money_icon_img, money_asset, money_res) self.head_name_tmp.text = self.data.role_name or "" -- 红包描述 self.packet_desc_tmp.text = ""..Trim(redpt_cfg.name)..""..Trim(redpt_cfg.greetings) local left_time = self.data.total_num - self.data.recipients_num local left_time_color = left_time > 0 and "#5aff8c" or "#ffffff" self.left_time_tmp.text = string.format("剩余个数:%s/%s", left_time_color, left_time, self.data.total_num) self.reward_tmp.text = self.data.money > 0 and "x" .. self.data.money or "" local get_red_packet = false --自己是否领了这个红包 for k,v in pairs(result_data) do if v.role_id == my_role_id then get_red_packet = true end end if not get_red_packet then--错过,领不到了 if self.data.total_num-self.data.recipients_num <= 0 then self.missed_bg_obj:SetActive(true) self.missed_des_tmp.text = "红包已被其他玩家领完,下次请早" else if redpt_cfg.kind == 2 and self.model:IsGuildRedPacketInLimit() then -- 红钻红包达到上限 self.missed_bg_obj:SetActive(true) self.missed_des_tmp.text = "红包领取次数已达上限,无法领取" else self.missed_bg_obj:SetActive(true) self.missed_des_tmp.text = "红包领取时间已过,下次请早" end end else self.missed_bg_obj:SetActive(false) self.missed_des_tmp.text = "" end end -- 更新是否展示领取下一红包的按钮 function GuildRedPacketResultView:UpdateNextRedpacketBtn( ) self.next_rp_data = self.model:GetOneRedPacketCan(self.data.id) if self.next_rp_data then self.next_rp_btn_obj:SetActive(true) else self.next_rp_btn_obj:SetActive(false) end end function GuildRedPacketResultView:DestroySuccess( ) if self.role_head then self.role_head:DeleteMe() self.role_head = nil end end