--单人副本进入界面
|
|
ArenaView = ArenaView or BaseClass(BaseView)
|
|
local ArenaView = ArenaView
|
|
-----------------------扩展模块需要修改的地方--------------------------
|
|
ArenaView.Tab_list = {
|
|
[1] = {id = ArenaConst.TabId.PKRANK, name = "竞技联赛", light_res = "icon_jn1_1", dark_res = "icon_jn1_2", view = "PkRankSubView", bg = "pkrank_bg"},
|
|
[2] = {id = ArenaConst.TabId.ENDLESS, name = "无尽领域", light_res = "icon_jn1_1", dark_res = "icon_jn1_2", view = "EndlessSubView", bg = "endless_sub_bg"},
|
|
-- [3] = {id = ArenaConst.TabId.CSGWAR, name = "国战", light_res = "icon_jn1_1", dark_res = "icon_jn1_2", view = "CSGWarSubView", bg = "window_bg_5"},
|
|
[3] = {id = ArenaConst.TabId.WASTELAND, name = "饥饿游戏", light_res = "icon_jn1_1", dark_res = "icon_jn1_2", view = "WastelandSubView", bg = "wasteland_bg"},
|
|
[4] = {id = ArenaConst.TabId.RAGEWAR, name = "狂战领域", light_res = "icon_jn1_1", dark_res = "icon_jn1_2", view = "RageWarSubView", bg = "arena_ragewar_bg"},
|
|
[5] = {id = ArenaConst.TabId.CLOTHINGVOTE, name = "明日之星", light_res = "icon_jn1_1", dark_res = "icon_jn1_2", view = "ClothingVoteApplyView", bg = "clothing_vote_bg_1"},
|
|
}
|
|
|
|
ArenaView.clothing_vot_tab_list = {
|
|
[1] = {id = ArenaConst.TabId.CLOTHINGVOTE, name = "明日之星", light_res = "icon_jn1_1", dark_res = "icon_jn1_2", view = "ClothingVoteApplyView", bg = "clothing_vote_bg_1"},
|
|
[2] = {id = ArenaConst.TabId.CLOTHINGVOTE, name = "明日之星", light_res = "icon_jn1_1", dark_res = "icon_jn1_2", view = "ClothingVoteVotingView", bg = "clothing_vote_bg_3"},
|
|
}
|
|
|
|
|
|
-- ArenaView.Index2View = {
|
|
-- [1] = {id = 1,view = "PkRankSubView"},
|
|
-- [2] = {id = 3,view = "EndlessSubView"},
|
|
-- [3] = {id = 5,view = "PkBattleEnterView"},
|
|
-- [4] = {id = 4,view = "LeagueWarEnterView"},
|
|
-- [5] = {id = 6,view = "CSPvPMainView"},
|
|
-- [6] = {id = 7,view = "DiamondFightEnterView"},
|
|
-- [7] = {id = 8,view = "CSOnevNEnterView"},
|
|
-- [8] = {id = 9,view = "SpiritWarEnterView"},
|
|
-- }
|
|
|
|
-- ArenaView.Index2Name = {
|
|
-- [1] = {id = 1,name = "竞技场",light_res = "icon_jjc1_1",dark_res = "icon_jjc1_2"},
|
|
-- [2] = {id = 3,name = "巅峰竞技",light_res = "icon_dld1_1",dark_res = "icon_dld1_2"},
|
|
-- [3] = {id = 5,name = "丛林突围",light_res = "icon_dld_h",dark_res = "icon_dld_p"},
|
|
-- [4] = {id = 4,name = "三英会战",light_res = "icon_sx1_1",dark_res = "icon_sx1_2"},
|
|
-- [5] = {id = 6,name = "跨服3V3",light_res = "icon_dld1_1",dark_res = "icon_dld1_2"},
|
|
-- [6] = {id = 7,name = "彩钻大战",light_res = "icon_zs1_1",dark_res = "icon_zs1_2"},
|
|
-- [7] = {id = 8,name = "跨服1vN",light_res = "icon_dld1_1",dark_res = "icon_dld1_2"},
|
|
-- [8] = {id = 9,name = "星灵争霸",light_res = "icon_dld1_1",dark_res = "icon_dld1_2"},
|
|
-- }
|
|
|
|
|
|
function ArenaView:InitEvent()
|
|
local function onRefreshTabDot()
|
|
self:ShowTabRedPointState()
|
|
end
|
|
-- self:BindEvent(PkRankModel:getInstance(), PkRankModel.UPDATE_TAB_DOT, onRefreshTabDot)
|
|
self:BindEvent(self.model, ArenaConst.ANS_ARENA_UPDATE_RED_DOT, onRefreshTabDot)
|
|
|
|
--41600 明日之星切换阶段
|
|
local function on_update_clothing_view()
|
|
--重新初始化一下,更新tab信息,并重新打开明日之星界面
|
|
self:InitTabList()
|
|
|
|
--先把明日之星界面给清掉
|
|
if self.contaner_list[ArenaConst.TabId.CLOTHINGVOTE] then
|
|
self.contaner_list[ArenaConst.TabId.CLOTHINGVOTE]:DeleteMe()
|
|
self.contaner_list[ArenaConst.TabId.CLOTHINGVOTE] = nil
|
|
end
|
|
|
|
--如果是当前在这个明日之星界面,重新open一下
|
|
if self.select_index == ArenaConst.TabId.CLOTHINGVOTE then
|
|
if ClothingVoteModel:getInstance().vote_stage == 0 then--活动状态变成0,不能打开界面
|
|
self:Open(ArenaConst.TabId.PKRANK)
|
|
else
|
|
self:Open(ArenaConst.TabId.CLOTHINGVOTE)
|
|
end
|
|
end
|
|
end
|
|
self:BindEvent(ClothingVoteModel, ClothingVoteConst.INTO_CLOTHING_VOTE_NEXT_STAGE, on_update_clothing_view)
|
|
self:BindEvent(ClothingVoteModel, ClothingVoteConst.UPDATE_CLOTHING_VOTE_SUB_VIEW, on_update_clothing_view)
|
|
end
|
|
|
|
function ArenaView:Remove()
|
|
if self.refresh_red_point_id then
|
|
self.model:UnBind(self.refresh_red_point_id)
|
|
self.refresh_red_point_id = nil
|
|
end
|
|
|
|
for i, view in pairs(self.contaner_list) do
|
|
view:DeleteMe()
|
|
end
|
|
if self.tabWindowComponent then
|
|
self.tabWindowComponent:DeleteMe()
|
|
self.tabWindowComponent = nil
|
|
end
|
|
self.contaner_list = nil
|
|
end
|
|
----------------------------------------------------------------
|
|
|
|
function ArenaView:__init()
|
|
self.base_file = "arena"
|
|
self.layout_file = "ArenaView"
|
|
self.layer_name = "UI"
|
|
self.append_to_ctl_queue = true
|
|
self.use_background = true
|
|
self.hide_maincancas = true
|
|
self.change_scene_close = true
|
|
self.show_tabs = {}
|
|
self.tab_name_list = {}
|
|
self.contaner_list = {}
|
|
self.close_fog = true
|
|
--self.click_bg_toClose = true
|
|
|
|
-- self.blur_activity_bg = true
|
|
-- self.use_show_anim = true
|
|
-- self.use_hide_anim = true
|
|
|
|
self.model = ArenaModel:getInstance()
|
|
|
|
self:InitTabList()
|
|
|
|
self.load_callback = function ()
|
|
self:LoadSuccess()
|
|
self:InitEvent()
|
|
end
|
|
self.open_callback = function ()
|
|
self:SeletedTabbar(self.select_index, true)
|
|
end
|
|
self.close_callback = function ()
|
|
self:Remove()
|
|
end
|
|
end
|
|
|
|
function ArenaView:InitTabList( )
|
|
self.show_tabs = {}
|
|
self.tab_name_list = {}
|
|
|
|
local open_day = ServerTimeModel:getInstance():GetOpenServerDay()
|
|
local playerLv = RoleManager:getInstance():GetMainRoleVo().level
|
|
for i,v in ipairs(ArenaView.Tab_list) do
|
|
|
|
--判断明日之星应该用哪个界面
|
|
if i == ArenaConst.TabId.CLOTHINGVOTE then
|
|
local clothing_vote_stage = ClothingVoteModel:getInstance():GetClothingVoteStage()
|
|
if clothing_vote_stage <= 1 then
|
|
v = ArenaView.clothing_vot_tab_list[1]
|
|
else
|
|
v = ArenaView.clothing_vot_tab_list[2]
|
|
end
|
|
end
|
|
|
|
if i == ArenaConst.TabId.CLOTHINGVOTE then
|
|
if ClothingVoteModel:getInstance():CanClothingVoteOpen() then
|
|
table.insert(self.show_tabs, v)
|
|
table.insert(self.tab_name_list, v)
|
|
end
|
|
else
|
|
if Config.ViewTabbarOpenLevel.Arena[i].open_level <= playerLv and Config.ViewTabbarOpenLevel.Arena[i].open_day <= open_day then
|
|
if not ClientConfig.alpha_mode or (ClientConfig.alpha_mode and (i == 1)) then
|
|
table.insert(self.show_tabs, v)
|
|
table.insert(self.tab_name_list, v)
|
|
-- elseif i == ArenaConst.TabId.CLOTHINGVOTE and ClothingVoteModel:getInstance():CanClothingVoteOpen() then
|
|
-- --某个服务器开服天数不到要求但也必须开启靓丽大赛的情况
|
|
-- table.insert(self.show_tabs, v)
|
|
-- table.insert(self.tab_name_list, v)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function ArenaView:Open(index)
|
|
index = self:GetRealTabIndex(index or 1)
|
|
self.select_index = index or 1
|
|
|
|
if self.select_index == ArenaConst.TabId.CLOTHINGVOTE then--判断如果是明日之星界面,而活动状态是0,不允许打开界面
|
|
if ClothingVoteModel:getInstance().vote_stage == 0 then
|
|
index = ArenaConst.TabId.PKRANK
|
|
self.select_index = index
|
|
end
|
|
else
|
|
--这里是原来的逻辑
|
|
if #self.show_tabs == 0 or not self.show_tabs[self.select_index] then
|
|
Message.show("活动暂未开启~")
|
|
logWarn("ArenaView:Open=>Try to open a index that is not opened 1")
|
|
return
|
|
end
|
|
end
|
|
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
function ArenaView:ReOpen(index)
|
|
index = self:GetRealTabIndex(index or 1)
|
|
self.select_index = index or 1
|
|
|
|
if self.select_index == ArenaConst.TabId.CLOTHINGVOTE then--判断如果是明日之星界面,而活动状态是0,不允许打开界面
|
|
if ClothingVoteModel:getInstance().vote_stage == 0 then
|
|
index = ArenaConst.TabId.PKRANK
|
|
self.select_index = index
|
|
end
|
|
else
|
|
--这里是原来的逻辑
|
|
if #self.show_tabs == 0 or not self.show_tabs[self.select_index] then
|
|
Message.show("活动暂未开启~")
|
|
logWarn("ArenaView:Open=>Try to open a index that is not opened 2 ")
|
|
return
|
|
end
|
|
end
|
|
|
|
self:SeletedTabbar(self.select_index, true)
|
|
self:ShowTabRedPointState()
|
|
end
|
|
|
|
function ArenaView:LoadSuccess()
|
|
self.winCon = self:GetChild("winCon")
|
|
|
|
local select_callback = function(index)
|
|
self:SeletedTabbar(index)
|
|
self:ShowTabRedPointState()
|
|
end
|
|
|
|
local closeWin_callback = function()
|
|
local helpVo = GuideModel:getInstance():GetHelpVo(HelpType.TYPE_PKRANK,3)
|
|
if helpVo or GuideModel:getInstance().need_force_do_task then
|
|
GuideModel:getInstance().need_force_do_task = false
|
|
GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK)
|
|
end
|
|
self:Close()
|
|
end
|
|
|
|
self.tabWindowComponent = UITabWindow.New(self.transform,self.tab_name_list,select_callback,closeWin_callback,self.background_wnd,self.winCon, UITabWindow.SizeSmallHall, false,nil,true)
|
|
|
|
self.tabWindowComponent:SetTitleText("联赛")
|
|
-- self.tabWindowComponent:SetBackgroundRes("default_bg_6")
|
|
-- self.tabWindowComponent = TabWindowComponent.New(self.transform,"战场竞技",self.tab_name_list,1264,632,306,52,
|
|
-- select_callback,closeWin_callback,Vector3(0,-5,0),self.background_wnd,"arena_asset")
|
|
end
|
|
|
|
function ArenaView:SeletedTabbar(index, force)
|
|
local last_select_index = self.select_index or 1
|
|
|
|
if self.select_index == index and not force then
|
|
return
|
|
end
|
|
|
|
self.select_index = index
|
|
|
|
if index == ArenaConst.TabId.CLOTHINGVOTE and ClothingVoteModel:getInstance().vote_stage == 0 then
|
|
index = last_select_index
|
|
self.select_index = index
|
|
if ClothingVoteModel:getInstance().vote_round > 0 then
|
|
Message.show("活动正在结算中,请稍后再来吧~")
|
|
else
|
|
Message.show("明日之星活动尚未开启~")
|
|
end
|
|
end
|
|
|
|
if self.tabWindowComponent ~= nil then
|
|
self.tabWindowComponent:SetTabBarIndex(index)
|
|
self:SwitchBar()
|
|
end
|
|
end
|
|
|
|
function ArenaView:GetRealTabIndex(index)
|
|
return index
|
|
-- for i,v in ipairs(self.show_tabs) do
|
|
-- if v.index == index then
|
|
-- return i
|
|
-- end
|
|
-- end
|
|
end
|
|
|
|
function ArenaView:ShowTabRedPointState()
|
|
self.tabWindowComponent:ShowRedPoint(ArenaConst.TabId.PKRANK, PkRankModel:getInstance():PkRankModelCheckRedDot(false))
|
|
self.tabWindowComponent:ShowRedPoint(ArenaConst.TabId.ENDLESS, EndlessModel:getInstance():CheckEndlessRedDot())
|
|
self.tabWindowComponent:ShowRedPoint(ArenaConst.TabId.WASTELAND, WastelandModel:getInstance():CheckWastelandRedDot())
|
|
-- local csgwar_red_data = CSGWarModel:getInstance():GetCSGWarRedData()
|
|
-- local csgwar_red = csgwar_red_data.one_red or csgwar_red_data.support_red or csgwar_red_data.fight_red or csgwar_red_data.occupy_red
|
|
-- self.tabWindowComponent:ShowRedPoint(ArenaConst.TabId.CSGWAR, csgwar_red)
|
|
self.tabWindowComponent:ShowRedPoint(ArenaConst.TabId.CLOTHINGVOTE, ClothingVoteModel:getInstance():GetClothingVoteMainRed())
|
|
end
|
|
|
|
function ArenaView:SwitchBar()
|
|
local id = self.tabWindowComponent:GetCurrentSelectIndex()
|
|
local cfg = self:GetTabConfigById(id)
|
|
if not cfg then
|
|
print("[ArenaView 185]=> error !! tab cfg is nil, id: ",id)
|
|
return
|
|
end
|
|
self.tabWindowComponent:SetUIBack(
|
|
{
|
|
target = self,
|
|
bg1 = GameResPath.GetViewBigBg(cfg.bg),
|
|
})
|
|
--self.tabWindowComponent:SetBackgroundRes(cfg.bg)
|
|
|
|
local chile_view = self.contaner_list[id]
|
|
|
|
if not chile_view then
|
|
local viewModule = cfg
|
|
if viewModule then
|
|
chile_view = _G[viewModule.view].New(self.winCon)
|
|
self.contaner_list[id] = chile_view
|
|
end
|
|
end
|
|
if chile_view then
|
|
if id == ArenaConst.TabId.CSGWAR
|
|
or id == ArenaConst.TabId.CLOTHINGVOTE
|
|
then
|
|
chile_view:AppendToBackContainer(self)
|
|
end
|
|
if chile_view.SetData then
|
|
chile_view:SetData(self.skill_type,self.auto_click)
|
|
if self.skill_type then --生活技能特殊处理
|
|
local is_live_skill = cfg.id == 4
|
|
if is_live_skill then
|
|
self.skill_type = false
|
|
self.auto_click = false
|
|
end
|
|
end
|
|
end
|
|
self:PopUpChild(chile_view)
|
|
if id == ArenaConst.TabId.CLOTHINGVOTE then--重新打开界面后再刷一次模型
|
|
chile_view:SetData()
|
|
end
|
|
end
|
|
|
|
if id == ArenaConst.TabId.PKRANK then
|
|
local model = PkRankModel.getInstance()
|
|
if model.is_god_fight then
|
|
model.is_god_fight = false
|
|
model:Fire(PkRankModel.OPEN_GOD_VIEW)
|
|
end
|
|
end
|
|
end
|
|
|
|
function ArenaView:GetTabConfigById( id )
|
|
local cfg
|
|
for k,v in pairs(self.show_tabs) do
|
|
if v.id == id then
|
|
cfg = v
|
|
break
|
|
end
|
|
end
|
|
return cfg
|
|
end
|