-- <* -- @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("社团排名:第%s名", self.data.guild_rank) self.role_rank_tmp.text = string.format("个人排名:第%s名", 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("点击空白处关闭(%s秒)", 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