-- <* -- @Author: Saber -- @Description: 跨服社团排行活动主界面 -- *> GuildEventCSGuildRankView = GuildEventCSGuildRankView or BaseClass(BaseItem) local GuildEventCSGuildRankView = GuildEventCSGuildRankView function GuildEventCSGuildRankView:__init(parent_wnd,prefab_asset,layer_name) self.base_file = "guild" self.layout_file = "GuildEventCSGuildRankView" self.parent_wnd = parent_wnd self.layer_name = layer_name self.model = GuildModel:getInstance() -- 请求活动状态信息 self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 41000) -- 请求一次对战信息 self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 41001, GuildModel.CSGRRankType.Mine, 0, 0) self:Load() end function GuildEventCSGuildRankView:Load_callback() local nodes = { "bg:raw", "main_title:img", "empty_girl:obj:raw", -- 对战社团信息相关 "info_bg:obj:img", "info_bg/guild_icon1:obj:img", "info_bg/guild_icon2:obj:img", "info_bg/guild_icon3:obj:img", "info_bg/guild_name1:tmp", "info_bg/guild_name2:tmp", "info_bg/guild_name3:tmp", "info_bg/info_lb2:tmp", -- 预览奖励容器 "reward_scroll", "reward_scroll/Viewport/reward_con", -- 其他按钮 "enter_btn:obj:imgex", "ques_btn:obj", "fight_info_btn:obj", "reward_btn:obj", "event_time_lb:tmp", "open_tips_btn:obj", "open_tips_btn/open_tips_red:obj", } self:GetChildren(nodes) lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("guild_event_bg_410_0"), false) lua_resM:setOutsideImageSprite(self, self.info_bg_img, GameResPath.GetGuildImage("guild_csgr_infobg"), false) lua_resM:setOutsideRawImage(self, self.empty_girl_raw, GameResPath.GetRoleBg("com_empty_dialogueGirl1_590x560")) -- self.info_tip_tmp.text = string.format("对战情况由本服团战积分排名决定", ColorUtil.GREEN_DARK) self:AddEvents() if self.need_refresh_data then self:UpdateView() end end function GuildEventCSGuildRankView:AddEvents( ) local function click_event(target) if target == self.enter_btn_obj then -- 前往活动场景 self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 41002, 0) elseif target == self.ques_btn_obj then -- 活动玩法提示 GlobalEventSystem:Fire(EventName.OPEN_INSTRUCTION_VIEW, 41000) elseif target == self.fight_info_btn_obj then -- 打开对战信息界面 self.model:Fire(GuildModel.OPEN_CSGR_FIGHTINFO_VIEW, true) elseif target == self.reward_btn_obj then -- 打开奖励预览界面 self.model:Fire(GuildModel.OPEN_CSGR_REWARD_VIEW, true) elseif target == self.open_tips_btn_obj then self.model:SetWarActiveRedDot(410, 1, false) GuildModel.getInstance():Fire(GuildModel.OPEN_ACTIVE_OPEN_TIPS_VIEW, true) end end AddClickEvent(self.enter_btn_obj, click_event) AddClickEvent(self.ques_btn_obj, click_event, LuaSoundManager.SOUND_UI.NONE) AddClickEvent(self.fight_info_btn_obj, click_event, LuaSoundManager.SOUND_UI.NONE) AddClickEvent(self.reward_btn_obj, click_event, LuaSoundManager.SOUND_UI.NONE) AddClickEvent(self.open_tips_btn_obj, click_event, LuaSoundManager.SOUND_UI.NONE) -- 更新对战信息 local function update_guild_fightinfo(type) if type == GuildModel.CSGRRankType.Mine then self:UpdateGuildData() end end self:BindEvent(self.model, GuildModel.UPDATE_CSGR_FIGHTINFO, update_guild_fightinfo) local function onShowACtiveOpenTipsRed() self.open_tips_red_obj:SetActive(self.model:GetWarActiveRedDot(410, 1)) end self:BindEvent(self.model, GuildModel.SHOW_ACTIVE_OPEN_TIPS_RED, onShowACtiveOpenTipsRed) self.open_tips_red_obj:SetActive(self.model:GetWarActiveRedDot(410, 1)) end -- 这里只传入活动日历中的活动时间相关数据,活动协议内容界面自己获取 function GuildEventCSGuildRankView:SetEventAcData( evt_ac_data ) self.evt_ac_data = evt_ac_data self.evt_key = self.evt_ac_data.module_id .. "@" .. self.evt_ac_data.module_sub if self.is_loaded then self.need_refresh_data = false self:UpdateView() else self.need_refresh_data = true end end function GuildEventCSGuildRankView:UpdateView( ) self:UpdateGuildData() self:UpdateEventTime() self:UpdateRewardItem() end --刷新活动时间显示 function GuildEventCSGuildRankView:UpdateEventTime( ) local ac_cfg = DailyModel:getInstance():GetAcConfig(self.evt_ac_data.module_id, self.evt_ac_data.module_sub, self.evt_ac_data.ac_sub) if ac_cfg then local time_region = stringtotable(ac_cfg.time_region)[1] local _, day_str = self.model:GetGuildEventOpenTime(self.evt_ac_data.module_id, self.evt_ac_data.module_sub,self.evt_ac_data.ac_sub) local start_time = time_region[1][1] .. ":" .. time_region[1][2] local end_time = time_region[2][1] .. ":" .. time_region[2][2] self.event_time_lb_tmp.text = day_str .. " " .. start_time .."-"..end_time..",限时开启" end lua_resM:setOutsideImageSprite(self,self.main_title_img, GameResPath.GetGuildImage(self.evt_ac_data.module_sub == 1 and "guild_event_csgr_adtitle_pointfilter" or "guild_event_csgr_adtitle2_pointfilter"), false) -- self.event_time_lb_tmp.text = self.model:GetGuildEventOpenTime(self.evt_ac_data.module_id, self.evt_ac_data.module_sub,self.evt_ac_data.ac_sub) end -- 更新对战公会的信息 function GuildEventCSGuildRankView:UpdateGuildData( ) local guild_data = self.model:GetCSGRFightInfo() if not guild_data or IsTableEmpty(guild_data.guilds) then -- 没有对战信息,不显示右侧对战图 self.info_bg_obj:SetActive(false) self.empty_girl_obj:SetActive(true) self.fight_info_btn_obj:SetActive(false) SetAnchoredPositionX(self.reward_btn, 204.5) else self.info_bg_obj:SetActive(true) self.empty_girl_obj:SetActive(false) self.fight_info_btn_obj:SetActive(true) SetAnchoredPositionX(self.reward_btn, 120.9) self.info_lb2_tmp.text = string.format("%s号战场", guild_data.arena_id) local guild_info for i = 1, 3 do guild_info = guild_data.guilds[i] if guild_info then lua_resM:setImageSprite(self, self["guild_icon"..i.."_img"], "guildIcon_asset", "guild_icon" .. guild_info.guild_flag, true) self["guild_icon"..i.."_obj"]:SetActive(true) self["guild_name"..i.."_tmp"].text = string.format("s%s.%s", guild_info.server_num, guild_info.guild_name) else self["guild_icon"..i.."_obj"]:SetActive(false) self["guild_name"..i.."_tmp"].text = "暂无社团信息" end end end end -- 加载活动奖励 function GuildEventCSGuildRankView:UpdateRewardItem( ) local reward_data = DailyModel:getInstance():GetRewardList(self.evt_ac_data.module_id, self.evt_ac_data.module_sub, self.evt_ac_data.ac_sub) self.reward_item_creator = self.reward_item_creator or self:AddUIComponent(UI.ItemListCreator) local info = { data_list = reward_data, item_con = self.reward_con, scroll_view = self.reward_scroll, obj_pool_type = UIObjPool.UIType.AwardItem, item_width = 78, start_x = 7, start_y = -5, space_x = 9, create_frequency = 0.01, alignment = UnityEngine.TextAnchor.UpperLeft, on_update_item = function(item, i, v) local goods_Id, lock = GoodsModel:getInstance():GetMappingTypeId(v[1], v[2]) local goodVo = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_Id) if goodVo then item:SetData(goodVo.type_id, v.count , goodVo.color, nil, lock) end end, } self.reward_item_creator:UpdateItems(info) end function GuildEventCSGuildRankView:__delete( ) end