|
|
- -- <*
- -- @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 = "<color=#fff770>"..Trim(redpt_cfg.name).."</color>"..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("剩余个数:<color=%s>%s</color>/%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
|