286 lines
9.5 KiB
Lua
286 lines
9.5 KiB
Lua
BtView = {}
|
|
local this = BtView
|
|
local bagPanelUI
|
|
local RoleListPanelUI
|
|
--- 静态数据
|
|
local static_openId = 0
|
|
|
|
|
|
function BtView:New(gameObject)
|
|
local b = {}
|
|
b.gameObject = gameObject
|
|
b.transform = gameObject.transform
|
|
setmetatable(b, { __index = BtView })
|
|
return b
|
|
end
|
|
|
|
--初始化组件(用于子类重写)
|
|
function this:InitComponent()
|
|
self.spLoader = SpriteLoader.New()
|
|
--basicPart
|
|
self.BtnMainCity = Util.GetGameObject(self.gameObject, "Down/btnMainCity")
|
|
self.BtnChengYuan = Util.GetGameObject(self.gameObject, "Down/btnChengYuan")
|
|
self.BtnCangKu = Util.GetGameObject(self.gameObject, "Down/btnCangKu")
|
|
self.BtnJieLing = Util.GetGameObject(self.gameObject, "Down/btnJieLing")
|
|
self.BtnCarbon = Util.GetGameObject(self.gameObject, "Down/btnCarbon") -- 副本
|
|
self.BtnGongHui = Util.GetGameObject(self.gameObject, "Down/btnGongHui")
|
|
-- self.BtnTeQuan = Util.GetGameObject(self.gameObject, "Down/btnTeQuan")
|
|
self.BtnPractice = Util.GetGameObject(self.gameObject, "Down/btnPractice")
|
|
|
|
|
|
-- 主城与副本的新字
|
|
self.mainCityNew = Util.GetGameObject(self.BtnMainCity, "xin")
|
|
self.carbonNew = Util.GetGameObject(self.BtnCarbon, "xin")
|
|
self.btnText = {
|
|
-- [PanelTypeView.Carbon] = self.carbonNew,
|
|
[PanelTypeView.MainCity] = self.mainCityNew,
|
|
}
|
|
self.AnimRoot = Util.GetGameObject(self.gameObject, "Down")
|
|
|
|
|
|
|
|
self._BtnConfig = {
|
|
[PanelTypeView.MainCity] = {node = self.BtnMainCity, funcId = {49}, rpType = nil, clickFunc = self.OPenMainCity},
|
|
[PanelTypeView.MemberPanel] = {node = self.BtnChengYuan, funcId = {23}, rpType = RedPointType.Role, clickFunc = self.OpenChengYuan},
|
|
[PanelTypeView.BagPanel] = {node = self.BtnCangKu, funcId = {23}, rpType = RedPointType.Bag, clickFunc = self.OpenCangKu},
|
|
[PanelTypeView.JieLing] = {node = self.BtnJieLing, funcId = {}, rpType = RedPointType.SecretTer, clickFunc = self.OpenJieling},
|
|
[PanelTypeView.Carbon] = {node = self.BtnCarbon, funcId = {30, 44,46, 64,67,74,107}, rpType = RedPointType.ExploreMain, clickFunc = self.OpenCarbon},
|
|
[PanelTypeView.GongHui] = {node = self.BtnGongHui, funcId = {4}, rpType = RedPointType.Guild, clickFunc = self.OpenGuild},
|
|
-- [PanelTypeView.TeQuan] = {node = self.BtnTeQuan, funcId = {}, rpType = RedPointType.VipPrivilege, clickFunc = self.OpenVIP},
|
|
[PanelTypeView.Practice] = {node = self.BtnPractice, funcId = {108}, rpType = RedPointType.Practice_main, clickFunc = self.OpenPractice},
|
|
}
|
|
|
|
end
|
|
|
|
-- 主城
|
|
function this:OPenMainCity()
|
|
if not UIManager.IsOpen(UIName.MainPanel) then
|
|
UIManager.OpenPanel(UIName.MainPanel)
|
|
end
|
|
end
|
|
--打开英雄列表界面
|
|
function this:OpenChengYuan()
|
|
if not UIManager.IsOpen(UIName.RoleListPanel) or (RoleListPanelUI and RoleListPanelUI .isFirstOpen == false)then
|
|
HeroManager.heroListPanelSortID = 1
|
|
HeroManager.heroListPanelProID = 0
|
|
RoleListPanelUI = UIManager.OpenPanel(UIName.RoleListPanel)
|
|
end
|
|
end
|
|
--打开仓库界面
|
|
function this:OpenCangKu()
|
|
if not UIManager.IsOpen(UIName.BagPanel) or (bagPanelUI and bagPanelUI.isFristOpen == false) then
|
|
bagPanelUI = UIManager.OpenPanel(UIName.BagPanel)
|
|
end
|
|
end
|
|
-- 挂机界面
|
|
function this:OpenJieling()
|
|
UIManager.OpenPanel(UIName.FightPointPassMainPanel)
|
|
end
|
|
-- 打开副本选择界面
|
|
function this:OpenCarbon()
|
|
-- PlayerManager.carbonType = 1
|
|
-- UIManager.OpenPanel(UIName.CarbonTypePanelV2)
|
|
UIManager.OpenPanel(UIName.CarbonsPanel)
|
|
|
|
end
|
|
function this:OpenGuild()
|
|
JumpManager.GoJump(4001)
|
|
end
|
|
-- function this:OpenVIP()
|
|
-- UIManager.OpenPanel(UIName.VipPanelV2)
|
|
-- end
|
|
function this:OpenPractice()
|
|
UIManager.OpenPanel(UIName.PracticePanel)
|
|
end
|
|
|
|
--绑定事件(用于子类重写)
|
|
function this:BindEvent()
|
|
for pt, data in pairs(self._BtnConfig) do
|
|
Util.AddClick(data.node, function()
|
|
if self.panelType == pt then return end
|
|
self:OnBtnClick(pt)
|
|
end)
|
|
-- 绑定红点
|
|
if data.rpType then
|
|
BindRedPointObject(data.rpType, Util.GetGameObject(data.node,"redPoint"))
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
--添加事件监听(用于子类重写)
|
|
function this:AddListener()
|
|
Game.GlobalEvent:AddEvent(GameEvent.Player.OnLevelChange, self.RefreshBtnState, self)
|
|
Game.GlobalEvent:AddEvent(GameEvent.FunctionCtrl.OnFunctionOpen, self.RefreshBtnState, self)
|
|
Game.GlobalEvent:AddEvent(GameEvent.FunctionCtrl.OnFunctionClose, self.RefreshBtnState, self)
|
|
Game.GlobalEvent:AddEvent(GameEvent.Equip.EquipChange, self.RefreshRedPoint, self)
|
|
end
|
|
|
|
--移除事件监听(用于子类重写)
|
|
function this:RemoveListener()
|
|
Game.GlobalEvent:RemoveEvent(GameEvent.Player.OnLevelChange, self.RefreshBtnState, self)
|
|
Game.GlobalEvent:RemoveEvent(GameEvent.FunctionCtrl.OnFunctionOpen, self.RefreshBtnState, self)
|
|
Game.GlobalEvent:RemoveEvent(GameEvent.FunctionCtrl.OnFunctionClose, self.RefreshBtnState, self)
|
|
Game.GlobalEvent:RemoveEvent(GameEvent.Equip.EquipChange, self.RefreshRedPoint, self)
|
|
end
|
|
function this:RefreshRedPoint()
|
|
CheckRedPointStatus(RedPointType.Role)
|
|
end
|
|
|
|
|
|
---@param context table
|
|
-- context: {
|
|
-- sortOrder = int,
|
|
-- panelType = int,
|
|
-- }
|
|
--界面打开时调用(用于子类重写)
|
|
function this:OnOpen(rootPanel, context)
|
|
self.rootPanel = rootPanel
|
|
-- if not _CurPanel and UIManager.IsOpen(UIName.FightPointPassMainPanel) then
|
|
-- _CurPanel = UIName.FightPointPassMainPanel
|
|
-- end
|
|
if context then
|
|
self:SetOrderStatus(context)
|
|
self:SetSelectTarget(context)
|
|
end
|
|
-- 刷新显示状态
|
|
self:RefreshBtnState()
|
|
--检测成员红点
|
|
CheckRedPointStatus(RedPointType.Role)
|
|
end
|
|
|
|
function this:RefreshBtnState()
|
|
--
|
|
for pt, data in pairs(self._BtnConfig) do
|
|
local isOpen = self:CheckIsOpen(pt)
|
|
Util.SetGray(data.node, not isOpen)
|
|
Util.GetGameObject(data.node, "lock"):SetActive(not isOpen)
|
|
end
|
|
|
|
self:InitNewOpenShow()
|
|
self:CheckMainCityNew()
|
|
self:SetAnimState()
|
|
self:RedPointTimer()
|
|
end
|
|
|
|
function this:RedPointTimer()
|
|
if this.timer then
|
|
this.timer:Stop()
|
|
this.timer = nil
|
|
end
|
|
local t = 0
|
|
this.timer = Timer.New(function ()
|
|
t = t + 1
|
|
if t%5 == 1 then
|
|
if (PrivilegeManager.GetPrivilegeRemainValue(PRIVILEGE_TYPE.GUILD_CAR_DELEAY_CHALLENGE) > 0 or PrivilegeManager.GetPrivilegeRemainValue(PRIVILEGE_TYPE.GUILD_CAR_DELEAY_LOOT) > 0) then--车迟的红点
|
|
CheckRedPointStatus(RedPointType.LegendExplore)
|
|
end
|
|
end
|
|
end,1,-1,true)
|
|
this.timer:Start()
|
|
end
|
|
|
|
-- 检测是否开启
|
|
function this:CheckIsOpen(pt)
|
|
local isOpen = false
|
|
local data = self._BtnConfig[pt]
|
|
if #data.funcId ~= 0 then
|
|
for _, id in ipairs(data.funcId) do
|
|
if ActTimeCtrlManager.SingleFuncState(id) then
|
|
isOpen = true
|
|
break
|
|
end
|
|
end
|
|
else
|
|
isOpen = true
|
|
end
|
|
return isOpen
|
|
end
|
|
|
|
-- 按钮点击事件
|
|
function this:OnBtnClick(pt)
|
|
local isOpen = self:CheckIsOpen(pt)
|
|
if isOpen then
|
|
-- 关闭当前界面
|
|
if pt ~= PanelTypeView.GongHui or PlayerManager.familyId ~= 0 then
|
|
self.rootPanel:ClosePanel()
|
|
end
|
|
-- 打开新界面
|
|
local btnFunc = self._BtnConfig[pt].clickFunc
|
|
if btnFunc then
|
|
btnFunc(self)
|
|
end
|
|
else
|
|
local str = ""
|
|
if pt == PanelTypeView.Carbon then
|
|
str = ActTimeCtrlManager.CarbonOpenTip()
|
|
else
|
|
local id = self._BtnConfig[pt].funcId[1]
|
|
str = ActTimeCtrlManager.GetFuncTip(id)
|
|
end
|
|
PopupTipPanel.ShowTip(str)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
-- 初始化新字显示, 先只检查副本
|
|
function this:InitNewOpenShow()
|
|
-- local isOpen = FunctionOpenMananger.GetRootState(PanelTypeView.Carbon)
|
|
-- Util.GetGameObject(self.BtnCarbon.transform, "xin"):SetActive(isOpen)
|
|
end
|
|
|
|
-- 检测主城
|
|
function this:CheckMainCityNew()
|
|
local isOpen = FunctionOpenMananger.GetRootState(PanelTypeView.MainCity)
|
|
Util.GetGameObject(self.BtnMainCity.transform, "xin"):SetActive(isOpen)
|
|
end
|
|
|
|
function this:SetAnimState()
|
|
local mainCityOpen = FunctionOpenMananger.GetRootState(PanelTypeView.MainCity)
|
|
local carbonOpen = FunctionOpenMananger.GetRootState(PanelTypeView.Carbon)
|
|
local isUseAnim = mainCityOpen or carbonOpen
|
|
if isUseAnim then
|
|
PlayUIAnim(self.AnimRoot)
|
|
else
|
|
PlayUIAnimBack(self.AnimRoot)
|
|
end
|
|
end
|
|
--界面关闭时调用(用于子类重写)
|
|
function this:OnClose()
|
|
self.spLoader:Destroy()
|
|
for pt, data in pairs(self._BtnConfig) do
|
|
if data.rpType then
|
|
ClearRedPointObject(data.rpType, Util.GetGameObject(data.node,"redPoint"))
|
|
end
|
|
end
|
|
bagPanelUI = nil
|
|
RoleListPanelUI = nil
|
|
end
|
|
|
|
|
|
--设定层级
|
|
function this:SetOrderStatus(context)
|
|
if not context.sortOrder then
|
|
return
|
|
end
|
|
self.transform:GetComponent("Canvas").sortingOrder = context.sortOrder + 1
|
|
for pt, selectInfo in pairs(self._BtnConfig) do
|
|
Util.SetParticleSortLayer(Util.GetGameObject(selectInfo.node, "btnSelect/Effect_UI_ZhuCheng_xuanzhong"),context.sortOrder + 1)
|
|
end
|
|
end
|
|
|
|
--设定选中
|
|
function this:SetSelectTarget(context)
|
|
if not context.panelType then
|
|
return
|
|
end
|
|
self.panelType = context.panelType
|
|
for pt, selectInfo in pairs(self._BtnConfig) do
|
|
Util.GetGameObject(selectInfo.node, "btnSelect"):SetActive(pt == context.panelType)
|
|
end
|
|
FightPointPassManager.isOutFight = context.panelType == PanelTypeView.JieLing
|
|
|
|
end
|
|
|
|
return BtView |