源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

313 行
11 KiB

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