源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

131 行
5.0 KiB

-- <*
-- @Author: Saber
-- @Description: 跨服社团排行活动结算界面
-- *>
GuildCSGRResultView = GuildCSGRResultView or BaseClass(BaseView)
local GuildCSGRResultView = GuildCSGRResultView
function GuildCSGRResultView:__init()
self.base_file = "guildCSGR"
self.layout_file = "GuildCSGRResultView"
self.layer_name = "Top"
self.destroy_imm = true
self.use_background = true --全屏界面默认使用这个参数,非全屏界面自行设置
self.click_bg_toClose = true
self.blur_activity_bg = true
self.use_show_anim = true
self.use_hide_anim = true
self.model = GuildModel:getInstance()
self.guild_rank_reward, self.guild_rank_normal_reward = self.model:GetCSGRRankRewardCfg()
self.award_list = {}
self.auto_close_time = 10 -- n秒后自动关闭界面
self.load_callback = function ()
self:LoadSuccess()
self:AddEvent()
end
self.open_callback = function ( )
self:UpdateView()
self:StartCloseCountdown()
end
self.destroy_callback = function ( )
self:DestroySuccess()
end
end
function GuildCSGRResultView:Open(data)
self.data = data
BaseView.Open(self)
end
function GuildCSGRResultView:LoadSuccess()
local nodes = {
"bg:raw",
"title:raw",
-- 界面中部排行信息节点,需要做自动居中
"rank_con",
"rank_con/rank_img1",
"rank_con/rank_img2",
"rank_con/rank_desc:tmp",
-- 奖励容器
"reward_scroll", "reward_scroll/Viewport/reward_con",
-- 其他文本
"guild_rank:tmp", "role_rank:tmp",
"close_countdown:tmp",
}
self:GetChildren(nodes)
lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("com_result_bg_1124_549"), false)
lua_resM:setOutsideRawImage(self, self.title_raw, GameResPath.GetDungeonImage("dun_result_title3"), false)
end
function GuildCSGRResultView:AddEvent()
end
function GuildCSGRResultView:UpdateView()
if self.data then
self.guild_rank_tmp.text = string.format("社团排名:<color=#fef979>第%s名</color>", self.data.guild_rank)
self.role_rank_tmp.text = string.format("个人排名:<color=#fef979>第%s名</color>", self.data.role_rank)
-- 加载顶部文本
self.rank_desc_tmp.text = string.format("恭喜您! 您的社团在本次战场中排名 第%s名", self.data.guild_rank)
local offset_x = (self.rank_con.sizeDelta.x - 198 - self.rank_desc_tmp.preferredWidth - 20) / 2
SetAnchoredPositionX(self.rank_img1, offset_x)
SetAnchoredPositionX(self.rank_desc, self.rank_img1.anchoredPosition.x + self.rank_img1.sizeDelta.x + 10)
SetAnchoredPositionX(self.rank_img2, self.rank_desc.anchoredPosition.x + self.rank_desc_tmp.preferredWidth + 10)
-- 加载奖励内容
local reward_cfg
local target_list = self.data.first_arena == 1 and self.guild_rank_reward or self.guild_rank_normal_reward
for k, v in ipairs(target_list) do
if v.rank_min <= self.data.guild_rank and v.rank_max >= self.data.guild_rank then
reward_cfg = v
break
end
end
local reward_num = TableSize(reward_cfg.rewards)
local need_mid_align = reward_num <= 4
local offset_x = need_mid_align and (self.reward_con.sizeDelta.x - reward_num * 98) / 2 or 0
for k, v in ipairs(reward_cfg.rewards) do
item = self.award_list[k]
if not item then
item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.reward_con)
self.award_list[k] = item
end
item:SetVisible(true)
item:SetItemSize(84, 84)
item:SetAnchoredPosition(98 * (k-1) + offset_x, -2)
local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2])
item:SetData(typeId, v[3], nil, nil, lock)
end
SetSizeDeltaX(self.reward_con, 98 * reward_num)
end
end
-- 创建自动关闭倒计时
function GuildCSGRResultView:StartCloseCountdown( )
local end_time = TimeUtil:getServerTime() + self.auto_close_time
local function auto_close_func()
local left_time = end_time - TimeUtil:getServerTime()
if left_time > 0 then
self.close_countdown_tmp.text = string.format("点击空白处关闭<color=%s>(%s秒)</color>", ColorUtil.GREEN_DARK, left_time)
else
self:Close()
end
end
if not self.auto_close_func_id then
self.auto_close_func_id = GlobalTimerQuest:AddPeriodQuest(auto_close_func, 0.5, -1)
end
end
function GuildCSGRResultView:DestroySuccess( )
for k, v in pairs(self.award_list) do
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, v)
end
self.award_list = {}
if self.auto_close_func_id then
GlobalTimerQuest:CancelQuest(self.auto_close_func_id)
self.auto_close_func_id = nil
end
-- 清空结算数据
self.model:SetGuildCSGRResultData(nil)
end