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