370 lines
12 KiB
Lua
370 lines
12 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()
|
|
--basicPart
|
|
self.BtnRole = Util.GetGameObject(self.gameObject, "Down/btnPlayer")
|
|
self.BtnChengYuan = Util.GetGameObject(self.gameObject, "Down/btnChengYuan")
|
|
self.BtnDiffMonster = Util.GetGameObject(self.gameObject, "Down/btnYiYao")
|
|
self.BtnMainCity = Util.GetGameObject(self.gameObject, "Down/btnMainCity")
|
|
self.BtnCangKu = Util.GetGameObject(self.gameObject, "Down/btnCangKu")
|
|
self.BtnJieLing = Util.GetGameObject(self.gameObject, "Down/btnJieLing")
|
|
self.BtnTalent = Util.GetGameObject(self.gameObject, "Down/btnTalent")
|
|
self.BtnCarbon = Util.GetGameObject(self.gameObject, "Down/btnCarbon") -- 副本
|
|
|
|
--红点
|
|
self.bagRedPoint = Util.GetGameObject(self.gameObject, "Down/btnCangKu/redPoint")
|
|
self.chengYuanRedPoint = Util.GetGameObject(self.gameObject, "Down/btnChengYuan/redPoint")
|
|
self.pokemonRedPoint = Util.GetGameObject(self.gameObject, "Down/btnYiYao/redPoint")
|
|
self.roleRedPoint = Util.GetGameObject(self.BtnRole,"redPoint")
|
|
self.jieLingRed = Util.GetGameObject(self.BtnJieLing,"redPoint")
|
|
self.talentRed = Util.GetGameObject(self.BtnTalent,"redPoint")
|
|
self.carbonRed = Util.GetGameObject(self.BtnCarbon,"redPoint")
|
|
|
|
-- 永久性隐藏主角红点
|
|
self.roleRedPoint:SetActive(false)
|
|
|
|
-- 主城与副本的新字
|
|
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.lockList = {
|
|
[22] = Util.GetGameObject(self.BtnChengYuan, "lock"),
|
|
[3] = Util.GetGameObject(self.BtnDiffMonster, "lock"),
|
|
[23] = Util.GetGameObject(self.BtnCangKu, "lock"),
|
|
[29] = Util.GetGameObject(self.BtnRole, "lock"),
|
|
[49] = Util.GetGameObject(self.BtnMainCity, "lock"),
|
|
[50] = Util.GetGameObject(self.BtnJieLing, "lock"),
|
|
[101] = Util.GetGameObject(self.BtnTalent, "lock"),
|
|
[17] = Util.GetGameObject(self.BtnCarbon, "lock"),
|
|
}
|
|
|
|
|
|
self.selectList = {}
|
|
self:InitSelectList()
|
|
|
|
self.funcList = {}
|
|
self.funcList[22] = {go = self.BtnChengYuan, sortId = 2}
|
|
self.funcList[3] = {go = self.BtnDiffMonster, sortId = 3}
|
|
self.funcList[23] = {go = self.BtnCangKu, sortId = 5}
|
|
self.funcList[29] = {go = self.BtnRole, sortId = 1}
|
|
self.funcList[49] = {go = self.BtnMainCity, sortId = 9}
|
|
self.funcList[50] = {go = self.BtnJieLing, sortId = 10}
|
|
self.funcList[101] = {go = self.BtnTalent, sortId = 11}
|
|
self.funcList[17] = {go = self.BtnCarbon, sortId = 12}
|
|
|
|
self.selectBtn = nil
|
|
|
|
|
|
self.unSelectList = {
|
|
[1] = self.BtnRole,
|
|
[2] = self.BtnChengYuan,
|
|
[3] = self.BtnDiffMonster,
|
|
[5] = self.BtnCangKu,
|
|
[9] = self.BtnMainCity,
|
|
[10] = self.BtnJieLing,
|
|
[11] = self.BtnTalent,
|
|
[17] = self.BtnCarbon,
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
--绑定事件(用于子类重写)
|
|
function this:BindEvent()
|
|
-- 功能开启列表
|
|
local modefunc = {
|
|
[22] = self.OpenChengYuan,
|
|
[3] = self.OpenDemon,
|
|
[23] = self.OpenCangKu,
|
|
[29] = self.OpenRole,
|
|
[49] = self.OPenMainCity,
|
|
[50] = self.OpenJieling,
|
|
[101] = self.OpenTalent,
|
|
[17] = self.OpenCarbon,
|
|
}
|
|
|
|
for i, v in pairs(self.funcList) do
|
|
Util.AddClick(v.go, function()
|
|
if self.selectBtn == v.sortId then return end
|
|
self:SetBtnShowState(v.go, i, modefunc[i])
|
|
end)
|
|
end
|
|
|
|
-- 绑定红点
|
|
--BindRedPointObject(RedPointType.DiffMonster, self.pokemonRedPoint)
|
|
--BindRedPointObject(RedPointType.Role, self.roleRedPoint)
|
|
BindRedPointObject(RedPointType.Bag, self.bagRedPoint)
|
|
BindRedPointObject(RedPointType.SecretTer, self.jieLingRed)
|
|
BindRedPointObject(RedPointType.ExploreMain, self.carbonRed)
|
|
|
|
end
|
|
|
|
--添加事件监听(用于子类重写)
|
|
function this:AddListener()
|
|
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.FunctionCtrl.OnFunctionOpen, self.RefreshBtnState, self)
|
|
Game.GlobalEvent:RemoveEvent(GameEvent.FunctionCtrl.OnFunctionClose, self.RefreshBtnState, self)
|
|
Game.GlobalEvent:RemoveEvent(GameEvent.Equip.EquipChange, self.RefreshRedPoint, self)
|
|
end
|
|
|
|
---@param context table
|
|
-- context: {
|
|
-- sortOrder = int,
|
|
-- panelType = int,
|
|
-- }
|
|
|
|
--界面打开时调用(用于子类重写)
|
|
function this:OnOpen(context)
|
|
|
|
if context then
|
|
self:SetOrderStatus(context)
|
|
self:SetSelectTarget(context)
|
|
end
|
|
self:RefreshRedPoint()
|
|
-- 刷新显示状态
|
|
self:RefreshBtnState()
|
|
|
|
end
|
|
|
|
function this:RefreshBtnState()
|
|
for i, v in pairs(self.funcList) do
|
|
if i ~= 50 then
|
|
local isOpen = false
|
|
if i == 17 then
|
|
isOpen = ActTimeCtrlManager.SingleFuncState(i) or ActTimeCtrlManager.SingleFuncState(18) or
|
|
ActTimeCtrlManager.IsQualifiled(46) or ActTimeCtrlManager.SingleFuncState(30)
|
|
|
|
else
|
|
isOpen = ActTimeCtrlManager.SingleFuncState(i)
|
|
end
|
|
Util.SetGray(v.go, not isOpen)
|
|
self.lockList[i]:SetActive(not isOpen)
|
|
end
|
|
end
|
|
|
|
self:InitNewOpenShow()
|
|
self:CheckMainCityNew()
|
|
self:SetAnimState()
|
|
|
|
end
|
|
|
|
|
|
function this:SetBtnShowState(btn, id, btnFunc)
|
|
if id ~= 50 then
|
|
local isOpen = false
|
|
local str = ""
|
|
if id == 17 then
|
|
isOpen = ActTimeCtrlManager.SingleFuncState(id) or ActTimeCtrlManager.SingleFuncState(18) or
|
|
ActTimeCtrlManager.IsQualifiled(46) or ActTimeCtrlManager.SingleFuncState(30)
|
|
str = ActTimeCtrlManager.CarbonOpenTip()
|
|
else
|
|
isOpen = ActTimeCtrlManager.SingleFuncState(id)
|
|
str = ActTimeCtrlManager.GetFuncTip(id)
|
|
end
|
|
|
|
if isOpen then
|
|
if btnFunc then
|
|
btnFunc(self)
|
|
end
|
|
else
|
|
PopupTipPanel.ShowTip(str)
|
|
end
|
|
else
|
|
if btnFunc then
|
|
btnFunc(self)
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
--- 显示隐藏新字
|
|
---- @param btn 需要设置的按钮
|
|
function this:SetBtnNewIcon(btn, state)
|
|
--for i, v in pairs(self.btnText) do
|
|
-- if i == btnType then
|
|
-- v:SetActive(state)
|
|
-- end
|
|
--end
|
|
|
|
if btn then
|
|
local textGo = Util.GetGameObject(btn.transform, "xin")
|
|
if textGo then
|
|
textGo:SetActive(state)
|
|
end
|
|
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()
|
|
--ClearRedPointObject(RedPointType.DiffMonster, self.pokemonRedPoint)
|
|
--ClearRedPointObject(RedPointType.Role, self.roleRedPoint)
|
|
ClearRedPointObject(RedPointType.Bag, self.bagRedPoint)
|
|
ClearRedPointObject(RedPointType.SecretTer, self.jieLingRed)
|
|
ClearRedPointObject(RedPointType.ExploreMain, self.carbonRed)
|
|
bagPanelUI = nil
|
|
RoleListPanelUI = nil
|
|
end
|
|
|
|
--初始化选中列表
|
|
function this:InitSelectList()
|
|
self:InsertTable(self.BtnMainCity, PanelTypeView.MainCity)
|
|
self:InsertTable(self.BtnRole, PanelTypeView.RolePanel)
|
|
self:InsertTable(self.BtnChengYuan, PanelTypeView.MemberPanel)
|
|
self:InsertTable(self.BtnDiffMonster, PanelTypeView.DiffMonsterPanel)
|
|
self:InsertTable(self.BtnCangKu, PanelTypeView.BagPanel)
|
|
self:InsertTable(self.BtnJieLing, PanelTypeView.JieLing)
|
|
self:InsertTable(self.BtnTalent, PanelTypeView.Talent)
|
|
self:InsertTable(self.BtnCarbon, PanelTypeView.Carbon)
|
|
end
|
|
|
|
function this:InsertTable(_go, _panelType)
|
|
table.insert(self.selectList, { panelType = _panelType, gameObject = Util.GetGameObject(_go, "btnSelect") })
|
|
end
|
|
|
|
-- 打开异妖界面
|
|
function this:OpenDemon()
|
|
--if self.selectBtn and self.selectBtn == PanelTypeView.DiffMonsterPanel then
|
|
-- return
|
|
--end
|
|
if ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.DIFFER_DEMONS) then
|
|
UIManager.OpenPanel(UIName.DiffMonsterPanel)
|
|
else
|
|
PopupTipPanel.ShowTip(ActTimeCtrlManager.GetFuncTip(FUNCTION_OPEN_TYPE.DIFFER_DEMONS))
|
|
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:OpenRole()
|
|
PopupTipPanel.ShowTip("功能尚未开启!!!")
|
|
end
|
|
|
|
function this:OPenMainCity()
|
|
if not UIManager.IsOpen(UIName.MainPanel) then
|
|
UIManager.OpenPanel(UIName.MainPanel)
|
|
end
|
|
end
|
|
|
|
function this:OpenJieling()
|
|
--UIManager.OpenPanel(UIName.TalentPanel, { tabIndex = 1 })
|
|
UIManager.OpenPanel(UIName.FightPointPassMainPanel)
|
|
end
|
|
|
|
function this:OpenTalent()
|
|
UIManager.OpenPanel(UIName.WorkShowTechnologPanel, 1)
|
|
end
|
|
|
|
-- 打开副本选择界面
|
|
function this:OpenCarbon()
|
|
-- UIManager.OpenPanel(UIName.CarbonTypePanel)
|
|
UIManager.OpenPanel(UIName.CarbonTypePanelV2)
|
|
end
|
|
|
|
function this:RefreshRedPoint()
|
|
Log(" ----------- 2 GameEvent.Equip.EquipChange ")
|
|
self.chengYuanRedPoint:SetActive(LengthOfTable(RedPointManager.GetRedPointRoleIsUpEquip()) > 0)
|
|
CheckRedPointStatus(RedPointType.DiffMonster)
|
|
end
|
|
|
|
--设定层级
|
|
function this:SetOrderStatus(context)
|
|
if not context.sortOrder then
|
|
return
|
|
end
|
|
self.transform:GetComponent("Canvas").sortingOrder = context.sortOrder + 1
|
|
end
|
|
|
|
--设定选中
|
|
function this:SetSelectTarget(context)
|
|
if not context.panelType then
|
|
return
|
|
end
|
|
|
|
self.selectBtn = context.panelType
|
|
table.walk(self.selectList, function(selectInfo)
|
|
selectInfo.gameObject:SetActive(selectInfo.panelType == context.panelType)
|
|
if self.unSelectList[selectInfo.panelType] then
|
|
if selectInfo.panelType == context.panelType then
|
|
self.unSelectList[selectInfo.panelType]:GetComponent("Image").enabled = false
|
|
else
|
|
self.unSelectList[selectInfo.panelType]:GetComponent("Image").enabled = true
|
|
end
|
|
end
|
|
|
|
end)
|
|
|
|
FightPointPassManager.isOutFight = context.panelType == PanelTypeView.JieLing
|
|
|
|
end
|
|
|
|
return BtView
|