GuildEventWarView = GuildEventWarView or BaseClass(BaseItem) local GuildEventWarView = GuildEventWarView function GuildEventWarView:__init() self.base_file = "guild" self.layout_file = "GuildEventWarView" self.model = GuildModel:getInstance() self.model:Fire(GuildModel.REQUEST_CCMD_EVENT,40500) self.select_pool_id = false self:Load() end GuildEventWarView.POOL_MAX_SHOW = 5 GuildEventWarView.WIFE = { [1] = {min = 0,max = 20, res = "guild_event_war_item_wifi_4" }, [2] = {min = 21,max = 30, res = "guild_event_war_item_wifi_3" }, [3] = {min = 31,max = 40, res = "guild_event_war_item_wifi_2" }, } function GuildEventWarView:Load_callback() self.nodes = { "bg:raw", "event_time:tmp",--活动时间 "reddot:obj", -- 活动奖励容器 "reward_scroll", "reward_scroll/Viewport/reward_con", -- 入口按钮 "enter_btn:obj", "help_btn:obj", "title_txt_img:img", "guild_text:tmp", "leader_text:tmp", "vip:img", "server_group/server_back:obj", "server_group/server_scroll", "server_group/serber_bg:img", "server_group:obj", "server_group/server_scroll/Viewport/server_con", "cur_server_name:tmp", "cur_server_wifi:img", "cur_server_select_btn:obj", "cur_server_select_tips:obj", "open_tips_btn:obj", "open_tips_btn/open_tips_red:obj", } self:GetChildren(self.nodes) lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("guild_event_war_bg"), false) lua_resM:setOutsideImageSprite(self,self.title_txt_img_img,GameResPath.GetGuildImage("guild_event_war_txt1_pointfilter")) self:AddEvents() if self.need_refresh_evt_time then self:UpdateEventTime() self:UpdateView() end self.vip.transform.localScale = Vector3(0.8, 0.8, 0.8) self:RequestInfo() end function GuildEventWarView:AddEvents( ) local on_click = function ( click_obj ) if self.enter_btn_obj == click_obj then -- 进入本服团战 self.model:Fire(GuildModel.ENTER_GUILD_WAR_SCENE, self.select_pool_id) elseif click_obj == self.help_btn_obj then EventSystem.Fire(GlobalEventSystem,EventName.OPEN_INSTRUCTION_VIEW, 40501) elseif click_obj == self.cur_server_select_btn_obj then self:SetSelectServerGroup(true) elseif click_obj == self.server_back_obj then self:SetSelectServerGroup(false) elseif click_obj == self.open_tips_btn_obj then self.model:SetWarActiveRedDot(405, 1, false) GuildModel.getInstance():Fire(GuildModel.OPEN_ACTIVE_OPEN_TIPS_VIEW, true) end end AddClickEvent(self.enter_btn_obj, on_click, LuaSoundManager.SOUND_UI.NONE) AddClickEvent(self.help_btn_obj, on_click, LuaSoundManager.SOUND_UI.NONE) AddClickEvent(self.server_back_obj, on_click, LuaSoundManager.SOUND_UI.NONE) AddClickEvent(self.cur_server_select_btn_obj, on_click, LuaSoundManager.SOUND_UI.NONE) AddClickEvent(self.open_tips_btn_obj, on_click, LuaSoundManager.SOUND_UI.NONE) local function updatePartyRed(type) if type == GuildEventType.GuildWar then self:UpdateRedDot() end end self:BindEvent(self.model, GuildModel.UPDATE_RED_DOT_BY_TYPE, updatePartyRed) local function updateMvp() self:UpdateLastMvp() end self:BindEvent(self.model, GuildModel.GUILD_WAR_LAST_MVP, updateMvp) local function updateServer() self:SelectServer(self.select_pool_id) end self:BindEvent(self.model, GuildModel.GUILD_WAR_BASE_INFO, updateServer) local function openSelectServer() self:SetSelectServerGroup(true) end self:BindEvent(self.model, GuildModel.OPEN_SELECT_SERVER, openSelectServer) local function onShowACtiveOpenTipsRed() self.open_tips_red_obj:SetActive(self.model:GetWarActiveRedDot(405, 1)) end self:BindEvent(self.model, GuildModel.SHOW_ACTIVE_OPEN_TIPS_RED, onShowACtiveOpenTipsRed) self.open_tips_red_obj:SetActive(self.model:GetWarActiveRedDot(405, 1)) end function GuildEventWarView:UpdateView( ) self:UpdateLastMvp() self:UpdateRewardItem() self:UpdateRedDot() end -- 这里只传入活动日历中的活动时间相关数据,活动协议内容界面自己获取 function GuildEventWarView:SetEventAcData( evt_time_data) self.evt_time_data = evt_time_data if self.is_loaded then self.need_refresh_evt_time = false self:UpdateView() self:UpdateEventTime() self:UpdateRedDot() else self.need_refresh_evt_time = true end end -- 获取本服团战开发时间(通用那边读的是日常的时间,所以要重写) function GuildEventWarView:GetGuildEventOpenTime( evt_time_data) local time = false local key = self.evt_time_data.module_id .. "@" .. self.evt_time_data.module_sub .. "@" .. self.evt_time_data.ac_sub local cfg = Config.Ac[key] if cfg then local weekList = DailyModel.getInstance():GetParseList(cfg.week) local time_region = stringtotable(cfg.time_region) local week_time = "" if #weekList == 7 or #weekList == 0 then week_time = "每周" else for i,v in ipairs(weekList) do if week_time == "" then week_time = "周" .. TimeUtil:GetWeekStrNum(tonumber(v)) else week_time = week_time .. "、" .. TimeUtil:GetWeekStrNum(tonumber(v)) end end end local start_time local end_time if time_region and time_region[1] and time_region[1][1] and time_region[1][2] then local t1 = time_region[1][1] local t2 = time_region[1][2] start_time = t1[1] .. ":" .. t1[2] end_time = t2[1] .. ":" .. t2[2] else return false end time = week_time .. " " .. start_time .."-"..end_time..",限时开启" end return time end -- 设置活动的开始时间 function GuildEventWarView:UpdateEventTime( ) self.event_time_tmp.text = self:GetGuildEventOpenTime() or self.model:GetGuildEventOpenTime(self.evt_time_data.module_id, self.evt_time_data.module_sub, self.evt_time_data.ac_sub) end function GuildEventWarView:UpdateRewardItem( ) local reward_data = DailyModel.Instance:GetRewardList(405,1,1) 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 = 88, item_height = 88, 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 GuildEventWarView:UpdateRedDot( ) -- self.reddot_obj:SetActive(self.model:GetGuildEventTabRed("405@1")) -- 2021.3.23 优化需求:社团活动页签不再给红点 self.reddot_obj:SetActive(false) end function GuildEventWarView:__delete( ) if self.vipItem then self.vipItem:DeleteMe() self.vipItem = nil end end function GuildEventWarView:RequestInfo( ) if not self.is_request then self.is_request = true self.model:Fire(GuildModel.REQUEST_CCMD_EVENT,40509) end end function GuildEventWarView:UpdateLastMvp( ) local d = self.model.guild_war_info.last_mvp if d and Trim(d.name) ~= "" then self.leader_text_tmp.text = Trim(d.name) self.guild_text_tmp.text = Trim(d.guild_name) if not self.vipItem then self.vipItem = RoleVipItem.New(self.vip_img.transform) end self.vipItem:SetData(d.vip_flag,d.sup_vip_type) if d.vip_flag ~= 0 then SetAnchoredPositionX(self.leader_text.transform, 253) else SetAnchoredPositionX(self.leader_text.transform, 226) end else self.leader_text_tmp.text = "虚位以待" self.guild_text_tmp.text = "虚位以待" SetAnchoredPositionX(self.leader_text.transform, 226) end end function GuildEventWarView:SetSelectServerGroup(show) if show then local d = self.model.guild_war_info.max_pool if not d or #d == 0 then return end local data_list = self.model.guild_war_info.max_pool self.server_group_obj:SetActive(true) SetLocalScale(self.cur_server_select_tips, 1, -1, 1) local item_size = #data_list <= GuildEventWarView.POOL_MAX_SHOW and #data_list or GuildEventWarView.POOL_MAX_SHOW SetSizeDeltaY(self.server_scroll, 37 *item_size) SetSizeDeltaY(self.serber_bg, 5 + 37 * item_size) self.server_list_creator = self.server_list_creator or self:AddUIComponent(UI.ItemListCreator) local info = { data_list = data_list, item_con = self.server_con, scroll_view = self.server_scroll, item_class = GuildEventWarItem, item_width = 225, item_height = 37, start_x = 111, start_y = -20, space_x = 0, space_y = 0, create_frequency = 0.01, show_col = 1, is_enable = #data_list > GuildEventWarView.POOL_MAX_SHOW, alignment = UnityEngine.TextAnchor.UpperLeft, on_update_item = function(item, i, v) local function call_back(pool_id) self:SetSelectServerGroup(false) self:SelectServer(pool_id) end item:SetData(v, i) item:SetCallBack(call_back) end, } self.server_list_creator:UpdateItems(info) else self.server_group_obj:SetActive(false) SetLocalScale(self.cur_server_select_tips, 1, 1, 1) end end function GuildEventWarView:SelectServer(pool_id) local d = self.model.guild_war_info.max_pool if not d or #d == 0 then self.cur_server_name_tmp.text = "本服战区" lua_resM:setImageSprite(self, self.cur_server_wifi_img, "guild_asset", "guild_event_war_item_wifi_1", true) return end local info = false for i,v in ipairs(d) do if v.pool_id == pool_id or not pool_id then info = v break end end if not info then return end self.select_pool_id = info.pool_id self.cur_server_name_tmp.text = string.format("本服%d区", info.pool_id) local res = "guild_event_war_item_wifi_4" for i,v in ipairs(GuildEventWarView.WIFE) do if info.num >= v.min and info.num <= v.max then res = v.res break end end lua_resM:setImageSprite(self, self.cur_server_wifi_img, "guild_asset", res, true) end