-- <*
|
|
-- @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
|