源战役客户端
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 
 

221 righe
7.7 KiB

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