require("Base/BasePanel") local ActivityMainPanel = Inherit(BasePanel) local this = ActivityMainPanel -- Tab管理器 local TabBox = require("Modules/Common/TabBox") local GlobalActConfig = ConfigManager.GetConfig(ConfigName.GlobalActivity) local _CurPageIndex = 0 local orginLayer local redPointTypeList = {} local tabs = {} local subViewList = {} --初始化组件(用于子类重写) function ActivityMainPanel:InitComponent() this.spLoader = SpriteLoader.New() orginLayer = 0 this.mask = Util.GetGameObject(self.gameObject,"mask") this.mask:SetActive(false) this.tabbox = Util.GetGameObject(self.gameObject, "bg/tabbox") this.btnBack = Util.GetGameObject(self.gameObject, "bg/btnBack") this.content = Util.GetGameObject(self.gameObject, "bg/pageContent") this.upView = SubUIManager.Open(SubUIConfig.UpView,self.gameObject.transform) end --绑定事件(用于子类重写) function ActivityMainPanel:BindEvent() -- 初始化Tab管理器 this.PageTabCtrl = TabBox.New() this.PageTabCtrl:SetTabAdapter(this.PageTabAdapter) this.PageTabCtrl:SetTabIsLockCheck(this.PageTabIsLockCheck) this.PageTabCtrl:SetChangeTabCallBack(this.OnPageTabChange) -- 关闭界面打开主城 Util.AddClick(this.btnBack, function() DynamicActivityManager.NiuQiIndex = 1 ShopManager.SetSelectIndex(0,{}) DynamicActivityManager.RemoveUIList() if #DynamicActivityManager.OpenUIList > 0 then -- LogRed("jump ") JumpManager.GoJump(DynamicActivityManager.OpenUIList[#DynamicActivityManager.OpenUIList],function() DynamicActivityManager.RemoveUIList() end) else -- LogRed("close ") this:ClosePanel() end end) end --添加事件监听(用于子类重写) function ActivityMainPanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.Activity.OnActivityOpenOrClose, this.onActivityOpenOrClose) end --移除事件监听(用于子类重写) function ActivityMainPanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.Activity.OnActivityOpenOrClose, this.onActivityOpenOrClose) end -- function ActivityMainPanel.onActivityOpenOrClose() this:OnOpen(this.activityType,_CurPageIndex,true) end function ActivityMainPanel:CheckActOpen(_index) for i = 1, #tabs do if tabs[i].Sort == _index then _index = i end end if tabs[_index].IsRecharge == 1 and (not RECHARGEABLE) then return end if tabs[_index].IfBack == 1 then if tabs[_index].ActiveType > 0 then local id = ActivityGiftManager.IsActivityTypeOpen(tabs[_index].ActiveType) if id and id > 0 and ActivityGiftManager.IsQualifiled(tabs[_index].ActiveType) then if GlobalActConfig[id].ShowArt and GlobalActConfig[id].ShowArt > 0 then if tabs[_index].ActiveType == ActivityTypeDef.DynamicAct or tabs[_index].ActiveType == ActivityTypeDef.LimitUpHero or tabs[_index].ActiveType == ActivityTypeDef.DynamicActShop or tabs[_index].ActiveType == ActivityTypeDef.NiuQi then _CurPageIndex = _index elseif GlobalActConfig[id].ShowArt == this.activityType then _CurPageIndex = _index end else _CurPageIndex = _index end end elseif tabs[_index].FunType > 0 then if ActTimeCtrlManager.SingleFuncState(tabs[_index].FunType) then _CurPageIndex = _index end else _CurPageIndex = _index end else if tabs[_index].ActiveType > 0 then local id = ActivityGiftManager.IsActivityTypeOpen(tabs[_index].ActiveType) if id and id > 0 and ActivityGiftManager.IsQualifiled(tabs[_index].ActiveType) then _CurPageIndex = _index end elseif tabs[_index].FunType > 0 then if ActTimeCtrlManager.SingleFuncState(tabs[_index].FunType) then _CurPageIndex = _index end elseif tabs[_index].ShopData and tabs[_index].ShopData[1][1] == -9999 then local id = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.DynamicAct) if id and id > 0 and ActivityGiftManager.IsQualifiled(ActivityTypeDef.DynamicAct) and GlobalActConfig[id].ShowArt == tabs[_index].ActId then _CurPageIndex = _index end else _CurPageIndex = _index end end end --界面打开时调用(用于子类重写) function ActivityMainPanel:OnOpen(_activityType,_index,change) SoundManager.PlaySound(SoundConfig.UI_Hddakai) this.activityType = _activityType DynamicActivityManager.curActivityType = this.activityType tabs = DynamicActivityManager.GetActivityTableDataByPageInde(this.activityType) _CurPageIndex = 0 if change then _index = tabs[_index].Sort end if _index and _index > 0 then self:CheckActOpen(_index) end for index = 1, #tabs do if _CurPageIndex < 1 then self:CheckActOpen(tabs[index].Sort) else break end end if _CurPageIndex < 1 then DynamicActivityManager.RemoveUIList() if #DynamicActivityManager.OpenUIList > 0 then JumpManager.GoJump(DynamicActivityManager.OpenUIList[#DynamicActivityManager.OpenUIList],function() DynamicActivityManager.RemoveUIList() end) else this:ClosePanel() end end end -- 限时引导小手 function ActivityMainPanel:ShowGuideGo(guideType) -- if subViewList[_CurPageIndex] and subViewList[_CurPageIndex].sub and subViewList[_CurPageIndex].sub.ShowGuideGo then subViewList[_CurPageIndex].sub:ShowGuideGo(guideType) end end -- 打开,重新打开时回调 function ActivityMainPanel:OnShow() SoundManager.PlayMusic(SoundConfig.BGM_Main) orginLayer = self.sortingOrder Log("_CurPageIndex OnShow:".._CurPageIndex) if _CurPageIndex and (_CurPageIndex > #tabs or _CurPageIndex < 1) then _CurPageIndex = #tabs end this.PageTabCtrl:Init(this.tabbox.gameObject, tabs,_CurPageIndex) end function this:OnSortingOrderChange() orginLayer = self.sortingOrder for k,v in pairs(subViewList) do v.sub:OnSortingOrderChange(self.sortingOrder) end end function ActivityMainPanel:OnFocus() for k,v in pairs(subViewList) do if v.sub.OnFocus then v.sub:OnFocus() end end end ----==========================一级页签相关=========================================== -- tab按钮自定义显示设置 function this.PageTabAdapter(tab, index, status) tab.gameObject.name = "tab"..tabs[index].Id local img = Util.GetGameObject(tab, "img"):GetComponent("Image") local lock = Util.GetGameObject(tab, "lock") local redpot = Util.GetGameObject(tab, "redpot") local text=Util.GetGameObject(tab,"text"):GetComponent("Text") local select=Util.GetGameObject(tab,"select") if status == "lock" then lock.gameObject:SetActive(true) Util.SetGray(tab.gameObject, true) else Util.SetGray(tab.gameObject, false) lock.gameObject:SetActive(false) end --设置红点 redpot.gameObject:SetActive(false) if status ~= "lock" then if redPointTypeList[tabs[index].RpType] then ClearRedPointObject(tabs[index].RpType,redPointTypeList[tabs[index].RpType]) redPointTypeList[tabs[index].RpType] = nil end if not tabs[index].RpType or tabs[index].RpType < 1 then redpot.gameObject:SetActive(false) else BindRedPointObject(tabs[index].RpType,redpot) redPointTypeList[tabs[index].RpType] = redpot end end --设置图片 local sprite = nil if tabs[index].ActiveType > 0 then local id = ActivityGiftManager.IsActivityTypeOpen(tabs[index].ActiveType) if id and id > 0 then local actConfig local actConfig = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.ActivityGroups,"ActId",GlobalActConfig[id].ShowArt,"PageType",this.activityType,"ActiveType",tabs[index].ActiveType) if not actConfig then actConfig = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.ActivityGroups,"ActId",id,"PageType",this.activityType,"ActiveType",tabs[index].ActiveType) end if actConfig then sprite = actConfig.Icon[1]--(status == "select" and actConfig.Icon[2] or actConfig.Icon[1]) text.text=actConfig.Sesc end end end -- if not sprite then -- sprite = (status == "select" and tabs[index].Icon[2] or tabs[index].Icon[1]) -- end if sprite==nil or sprite=="" then local num=1 if index %5==0 then num=1 else num=index%5 end sprite="UI_hz_gonghui_3"..num end img.sprite = this.spLoader:LoadSprite(sprite) -- img:SetNativeSize() select:SetActive(status == "select") text.text=tabs[index].Sesc --设置显示隐藏 if not DynamicActivityManager.IsQualifiled(tabs[index].Id) then tab.gameObject:SetActive(false) return end if tabs[index].IsRecharge == 1 and not RECHARGEABLE then tab.gameObject:SetActive(false) return end local isshow = false if tabs[index].IfBack == 1 then if tabs[index].ActiveType > 0 then local id = ActivityGiftManager.IsActivityTypeOpen(tabs[index].ActiveType) if id and id > 0 and ActivityGiftManager.IsQualifiled(tabs[index].ActiveType) then if GlobalActConfig[id].ShowArt and GlobalActConfig[id].ShowArt > 0 then if tabs[index].ActiveType == ActivityTypeDef.DynamicAct or tabs[index].ActiveType == ActivityTypeDef.LimitUpHero or tabs[index].ActiveType == ActivityTypeDef.DynamicActShop or tabs[index].ActiveType == ActivityTypeDef.NiuQi then isshow = true elseif GlobalActConfig[id].ShowArt == this.activityType then isshow = true end else isshow = true end end elseif tabs[index].FunType > 0 then isshow = ActTimeCtrlManager.SingleFuncState(tabs[index].FunType) else isshow = true end else if tabs[index].ActiveType == ActivityTypeDef.FuXingGaoZhao then--福星高照特殊处理 local ActData = ActivityGiftManager.GetActivityTypeInfo(ActivityTypeDef.FuXingGaoZhao) if ActData then isshow = ActData.value ~= 2 if ActData.value == 0 then local data = string.split(ConfigManager.GetConfigDataByKey(ConfigName.SpecialConfig,"Id",109).Value,"#") local time = ActData.startTime + tonumber(data[1])*86400 - GetTimeStamp() if time <= 0 then isshow = false end end else isshow = false end elseif tabs[index].ActiveType > 0 then isshow = ActivityGiftManager.IsQualifiled(tabs[index].ActiveType) elseif tabs[index].FunType > 0 then isshow = ActTimeCtrlManager.IsQualifiled(tabs[index].FunType) elseif tabs[index].ShopData and tabs[index].ShopData[1][1] == -9999 then local id = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.DynamicAct) if id and id > 0 and ActivityGiftManager.IsQualifiled(ActivityTypeDef.DynamicAct) and GlobalActConfig[id].ShowArt == tabs[index].ActId then isshow = true else isshow = false end else isshow = true end end tab.gameObject:SetActive(isshow) end -- tab 加锁 页签是否需要加锁显示 function this.PageTabIsLockCheck(index) -- --充值 每日礼包页签 需要加锁显示 -- if tabs[index].ActiveType and tabs[index].ActiveType == 10004 then -- if not OperatingManager.HasGoodsByShowType(14) then -- return true -- end -- end -- return false end -- tab改变事件 function this.OnPageTabChange(index) -- if index == _CurPageIndex then -- return -- end if subViewList[_CurPageIndex] and subViewList[_CurPageIndex].config and subViewList[_CurPageIndex].sub then subViewList[_CurPageIndex].sub:OnClose() end if subViewList[index] and subViewList[index].config and subViewList[index].sub then --每日每周任务页签拆分用u if tabs[index].ShopData and tabs[index].ShopData[1][1] == -9999 then CommonActPageManager.DynamicActType = tabs[index].Sort - 1 end subViewList[index].sub:OnShow(orginLayer) else subViewList[index] = {} if tabs[index].UIName then subViewList[index].config = SubUIConfig[tabs[index].UIName[1]] subViewList[index].sub = SubUIManager.Open(subViewList[index].config,this.content.transform,tabs[index],index,this) --每日每周任务页签拆分用 if tabs[index].ShopData and tabs[index].ShopData[1][1] == -9999 then CommonActPageManager.DynamicActType = tabs[index].Sort - 1 end subViewList[index].sub:OnShow(orginLayer) end end this.SetUpView(tabs[index]) DynamicActivityManager.ChangeUIList(tabs[index].Jump) _CurPageIndex = index end function this.SetUpView(_data) local data = _data if _data.ActiveType == ActivityTypeDef.DynamicActShop then local actId = ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.DynamicActShop) if actId then data = ConfigManager.GetConfigDataByDoubleKey(ConfigName.ActivityGroups,"ActId",actId,"ActiveType",ActivityTypeDef.DynamicActShop) end end if data.UpView and #data.UpView > 0 then this.upView:OnOpen({showType = data.UpView[1][1], panelType = data.UpView[2] }) this.upView.gameObject:SetActive(true) else this.upView.gameObject:SetActive(false) end end --界面关闭时调用(用于子类重写) function ActivityMainPanel:OnClose() CommonActPageManager.DynamicActType = 0 if UIManager.IsOpen(UIName.RewardItemSingleShowPopup) then UIManager.ClosePanel(UIName.RewardItemSingleShowPopup) end if UIManager.IsOpen(UIName.HelpPopup) then UIManager.ClosePanel(UIName.HelpPopup) end --清除红点 for k,v in pairs(redPointTypeList) do ClearRedPointObject(k,v) end redPointTypeList = {} --关闭弹窗界面 for k,v in pairs(subViewList) do v.sub:OnDestroy() SubUIManager.Close(v.sub) end subViewList = {} DynamicActivityManager.curActivityType = 0 end --界面销毁时调用(用于子类重写) function ActivityMainPanel:OnDestroy() --清除红点 for k,v in pairs(redPointTypeList) do ClearRedPointObject(k,v) end redPointTypeList = {} --关闭弹窗界面 for k,v in pairs(subViewList) do --UIManager.ClosePanel(k) v.sub:OnDestroy() this.spLoader:Destroy() SubUIManager.Close(v.sub) end subViewList = {} DynamicActivityManager.curActivityType = 0 tabs = {} SubUIManager.Close(this.upView) this.upView = nil _CurPageIndex = 0 end return this