|
|
- 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 .. " <color=#2CF86F>" .. start_time .."-"..end_time.."</color>,限时开启"
- 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
|