miduo_client/Assets/ManagedResources/~Lua/Modules/Arena/ArenaMainPanel.lua

211 lines
6.2 KiB
Lua

require("Base/BasePanel")
local ArenaMainPanel = Inherit(BasePanel)
local this = ArenaMainPanel
-- Tab管理器
local TabBox = require("Modules/Common/TabBox")
local _TabImgData = {select = "r_tongyong_xiaanniu_01", default = "r_tongyong_xiaanniu_02",}
local _TabFontColor = { default = Color.New(130 / 255, 128 / 255, 120 / 255, 1),
select = Color.New(243 / 255, 235 / 255, 202 / 255, 1) }
local _TabData = {
[1]= {txt = Language[10072]},
-- [2]= {txt = "排名"},
[2]= {txt = Language[10073]},
[3]= {txt = Language[10074]},
}
-- 内容数据
local _ViewData = {
[1] = {script = "Modules/Arena/View/ArenaView"},
-- [2] = {script = "Modules/Arena/View/RewardView"},
}
--初始化组件(用于子类重写)
function ArenaMainPanel:InitComponent()
this.spLoader = SpriteLoader.New()
this.tabbox = Util.GetGameObject(self.gameObject, "tabbox")
this.btnBack = Util.GetGameObject(self.gameObject, "rightUp/btnBack")
this.content = Util.GetGameObject(self.gameObject, "content")
this.ViewList = {}
this.ViewList[1] = Util.GetGameObject(self.gameObject, "content/ArenaView")
-- this.ViewList[2] = Util.GetGameObject(self.gameObject, "content/RewardView")
this.ViewLogicList = {}
-- 上部货币显示
this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.transform, { showType = UpViewOpenType.ShowLeft})
end
--绑定事件(用于子类重写)
function ArenaMainPanel:BindEvent()
-- 初始化Tab管理器
this.TabCtrl = TabBox.New()
this.TabCtrl:SetTabAdapter(this.TabAdapter)
this.TabCtrl:SetChangeTabCallBack(this.OnTabChange)
this.TabCtrl:Init(this.tabbox, _TabData)
Util.AddClick(this.btnBack, function()
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
this:ClosePanel()
end)
end
--添加事件监听(用于子类重写)
function ArenaMainPanel:AddListener()
end
--移除事件监听(用于子类重写)
function ArenaMainPanel:RemoveListener()
end
--界面打开时调用(用于子类重写)
function ArenaMainPanel:OnOpen(...)
-- 参数保存
local args = {...}
this._CurTabIndex = args[1] or 1
end
-- 打开,重新打开时回调
function ArenaMainPanel:OnShow()
if this.TabCtrl then
this.TabCtrl:ChangeTab(this._CurTabIndex)
end
--if this._CurLogicIndex then
-- this.OpenView(this._CurLogicIndex)
--end
SoundManager.PlayMusic(SoundConfig.BGM_Arena)
end
function ArenaMainPanel:OnSortingOrderChange()
for index, logic in pairs(this.ViewLogicList) do
if logic.OnSortingOrderChange then
logic:OnSortingOrderChange(self.sortingOrder)
end
end
end
--界面关闭时调用(用于子类重写)
function ArenaMainPanel:OnClose()
if this._CurLogicIndex then
this.CloseView(this._CurLogicIndex)
end
end
--界面销毁时调用(用于子类重写)
function ArenaMainPanel:OnDestroy()
SubUIManager.Close(this.UpView)
-- 清除红点
-- ClearRedPointObject(RedPointType.Arena_Shop)
-- 调用销毁方法
for index, logic in pairs(this.ViewLogicList) do
if logic.OnDestroy then
logic:OnDestroy()
end
this.spLoader:Destroy()
end
if this.shopView then
this.shopView.gameObject:SetActive(true) -- 重置一下显示状态,避免其他界面打开时状态错误
this.shopView = SubUIManager.Close(this.shopView)
this.shopView = nil
end
end
-- tab按钮自定义显示设置
function this.TabAdapter(tab, index, status)
local img = Util.GetGameObject(tab, "Image")
local txt = Util.GetGameObject(tab, "Text")
img:GetComponent("Image").sprite = this.spLoader:LoadSprite(_TabImgData[status])
txt:GetComponent("Text").text = _TabData[index].txt
txt:GetComponent("Text").color = _TabFontColor[status]
-- 判断是否需要检测红点
-- local redpot = Util.GetGameObject(tab, "redpot")
-- if index == 3 then
-- BindRedPointObject(RedPointType.Arena_Shop, redpot)
-- end
end
-- tab改变回调事件
function this.OnTabChange(index, lastIndex)
if lastIndex then
this.CloseView(lastIndex)
end
this.OpenView(index)
end
--
function this.OpenView(index)
this._CurLogicIndex = index
this._CurTabIndex = index
this.tabbox:SetActive(index ~= 1)--竞技场界面关闭tabbox
-- 商店界面特殊处理
-- if index == 3 then
-- if not this.shopView then
-- this.shopView = SubUIManager.Open(SubUIConfig.ShopView, this.content.transform)
-- end
-- this.shopView.gameObject:SetActive(true)
-- this.shopView:ShowShop(SHOP_TYPE.ARENA_SHOP, this.sortingOrder)
-- this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.ArenaShop })
-- return
-- end
local logic = this.ViewLogicList[index]
if not logic then
this.ViewLogicList[index] = reimport(_ViewData[index].script)
logic = this.ViewLogicList[index]
logic.gameObject = this.ViewList[index]
logic.transform = this.ViewList[index].transform
if logic.InitComponent then
logic:InitComponent()
end
if logic.BindEvent then
logic:BindEvent()
end
end
if logic.AddListener then
logic:AddListener()
end
if logic.OnOpen then
logic:OnOpen(this.sortingOrder,self)
end
logic.gameObject:SetActive(true)
-- 货币界面
this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Arena })
end
function this.CloseView(index)
if this._CurLogicIndex ~= index then return end
-- 商店界面特殊处理
if index == 3 then
if this.shopView then
this.shopView.gameObject:SetActive(false)
end
return
end
local logic = this.ViewLogicList[index]
if logic then
if logic.RemoveListener then
logic:RemoveListener()
end
if logic.OnClose then
logic:OnClose()
end
logic.gameObject:SetActive(false)
end
end
--跳转显示新手提示圈
function this.ShowGuideGo()
JumpManager.ShowGuide(UIName.ArenaMainPanel,Util.GetGameObject(this.gameObject, "content/ArenaView/challengebox/enemy_1/challenge"))
end
return ArenaMainPanel