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
|