require("Base/BasePanel") local DynamicActivityPanel = Inherit(BasePanel) local this = DynamicActivityPanel -- Tab管理器 local TabBox = require("Modules/Common/TabBox") local GlobalActConfig = ConfigManager.GetConfig(ConfigName.GlobalActivity) local _CurPageIndex =1 local orginLayer local tabs = { [1] = { --第二周 破阵诛仙 default = "p_pozhengzhuxian_anniu_02", lock = "p_pozhengzhuxian_anniu_02", select = "p_pozhengzhuxian_anniu_01", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [2] = { --第三周 勇冠三军 default = "c_ydsj_anniu_02", lock = "c_ydsj_anniu_02", select = "c_ydsj_anniu_01", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [3] = { --第四周 叱咤风云 default = "c_ccfy_icon2", lock = "c_ccfy_icon2", select = "c_ccfy_icon1", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [4] = { --第五周 丹心碧血 default = "d_danxinbixue_icon2", lock = "d_danxinbixue_icon2", select = "d_danxinbixue_bicon1", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [5] = { --第六周 势不可挡 default = "s_shibukedang_bicon1", lock = "s_shibukedang_bicon1", select = "s_shibukedang_bicon2", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [6] = { --第七周 勇往直前 default = "s_yongwangzhiqian_icon2", lock = "s_yongwangzhiqian_icon2", select = "s_yongwangzhiqian_icon1", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [7] = { --第八周 运筹帷幄 default = "y_yunchouweiwo_anniu02", lock = "y_yunchouweiwo_anniu02", select = "y_yunchouweiwo_anniu01", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [8] = { --第九周 移山倒海 default = "y_yishandaohai_anniu_02", lock = "y_yishandaohai_anniu_02", select = "y_yishandaohai_anniu_01", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [9] = { --第十周 玄机妙算 default = "x_xuanjimiaosuan_icon2", lock = "x_xuanjimiaosuan_icon2", select = "x_xuanjimiaosuan_icon1", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [10] = { --第十一周 降龙伏虎 default = "x_xianglongfuhu_icon2", lock = "x_xianglongfuhu_icon2", select = "x_xianglongfuhu_icon1", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [11] = { --第十二周 旗开得胜 default = "q_qikaidesheng_icon2", lock = "q_qikaidesheng_icon2", select = "q_qikaidesheng_icon1", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [12] = { --第十三周 变幻莫测 default = "b_bianhuanmoce_icon2", lock = "b_bianhuanmoce_icon2", select = "b_bianhuanmoce_icon1", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [13] = { --第十四周 博闻强识 default = "b_bowenduoshi_icon2", lock = "b_bowenduoshi_icon2", select = "b_bowenduoshi_icon1", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [14] = { --第十五周 降龙伏虎 default = "x_xianglongfuhu_icon2", lock = "x_xianglongfuhu_icon2", select = "x_xianglongfuhu_icon1", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [15] = { --第十六周 降龙伏虎 default = "x_xianglongfuhu_icon2", lock = "x_xianglongfuhu_icon2", select = "x_xianglongfuhu_icon1", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [16] = { --第十七周 降龙伏虎 default = "x_xianglongfuhu_icon2", lock = "x_xianglongfuhu_icon2", select = "x_xianglongfuhu_icon1", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [17] = { --第十八周 降龙伏虎 default = "x_xianglongfuhu_icon2", lock = "x_xianglongfuhu_icon2", select = "x_xianglongfuhu_icon1", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [18] = { --第十九周 降龙伏虎 default = "x_xianglongfuhu_icon2", lock = "x_xianglongfuhu_icon2", select = "x_xianglongfuhu_icon1", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [19] = { --第二十周 降龙伏虎 default = "x_xianglongfuhu_icon2", lock = "x_xianglongfuhu_icon2", select = "x_xianglongfuhu_icon1", rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct }, [20] = { --社稷大典 default = "r_guanka_sheji_anniu_02", lock = "r_guanka_sheji_anniu_02", select = "r_guanka_sheji_anniu_01", rpType = RedPointType.Celebration,panelType = PanelType.Celebration,ActType = ActivityTypeDef.Celebration }, [21] = { --易经宝库 default = "y_yijingbaoku_anniu_01", lock = "y_yijingbaoku_anniu_01", select = "y_yijingbaoku_anniu", rpType = RedPointType.YiJingBaoKu,panelType = PanelType.YiJingBaoKu,ActType = ActivityTypeDef.YiJingBaoKu }, [22] = { --限时召唤 default = "x_xianshizaohuan_02", lock = "x_xianshizaohuan_02", select = "x_xianshizaohuan_01", rpType = RedPointType.TimeLimited,panelType = PanelType.TimelimitCall,ActType = ActivityTypeDef.FindFairy }, [23] = { --乾坤宝盒 default = "q_qiankun_baoheanniu_02", lock = "q_qiankun_baoheanniu_02", select = "q_qiankun_baoheanniu_01", rpType = RedPointType.QianKunBox,panelType = PanelType.QianKunBox,ActType = ActivityTypeDef.QianKunBox }, [24] = { --神医天降 default = "s_shenyitianjiang_anniu_02", lock = "s_shenyitianjiang_anniu_02", select = "s_shenyitianjiang_anniu_01", rpType = "",panelType = PanelType.Main,ActType = ActivityTypeDef.ShenYiTianJiang }, [25] = { --灵兽宝阁 default = "l_lingshou_lingshoubaogeanniu02", lock = "l_lingshou_lingshoubaogeanniu02", select = "l_lingshou_lingshoubaogeanniu01", rpType = RedPointType.LingShouBaoGe,panelType = PanelType.LingShouBaoGe,ActType = ActivityTypeDef.LingShouBaoGe }, [26] = { --灵兽特惠 default = "l_lishoutehui_xianshibiao0", lock = "l_lishoutehui_xianshibiao0", select = "l_lishoutehui_anniu", rpType = "",panelType = PanelType.Main,ActType = ActivityTypeDef.LingShowTeHui }, [27] = { --珍奇礼包 default = "z_zhenqibaoge_anniu_02", lock = "z_zhenqibaoge_anniu_02", select = "z_zhenqibaoge_anniu_01", rpType = "",panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct_Treasure }, [28] = { --累计充值 一天一刷 default = "r_huodong_leijichengzhianniu_01", lock = "r_huodong_leijichengzhianniu_01", select = "r_huodong_leijichengzhianniu", rpType = RedPointType.DynamicActRecharge,panelType = PanelType.Main,ActType = ActivityTypeDef.AccumulativeRechargeExper }, [29] = { --累计充值 一周一刷 default = "r_huodong_leijichengzhianniu_01", lock = "r_huodong_leijichengzhianniu_01", select = "r_huodong_leijichengzhianniu", rpType = RedPointType.DynamicActRecharge,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct_recharge }, [30] = { --限时商市 default = "x_xianshishangshi_anniu_02", lock = "x_xianshishangshi_anniu_02", select = "x_xianshishangshi_anniu_01", rpType = "",panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct_TimeLimitShop }, [31] = { --限时兑换 default = "r_xianshiduihuan_anniu_01", lock = "r_xianshiduihuan_anniu_01", select = "r_xianshiduihuan_anniu", rpType = "",panelType = PanelType.Main,ActType = ActivityTypeDef.LimitExchange }, } local _PageInfo = {--后期可以做成tableInsert,icon名字都去读表 [1] = 1,--第二周 破阵诛仙 [2] = 1,--第三周 勇冠三军 [3] = 1,--第四周 叱咤风云 [4] = 1,--第五周 丹心碧血 [5] = 1,--第六周 势不可挡 [6] = 1,--第七周 勇往直前 [7] = 1,--第八周 运筹帷幄 [8] = 1,--第九周 移山倒海 [9] = 1,--第十周 玄机妙算 [10] = 1,--第十一周 降龙伏虎 [11] = 1,--第十二周 旗开得胜 [12] = 1,--第十一周 降龙伏虎 [13] = 1,--第十一周 降龙伏虎 [14] = 1,--第十一周 降龙伏虎 [15] = 1,--第十一周 降龙伏虎 [16] = 1,--第十一周 降龙伏虎 [17] = 1,--第十一周 降龙伏虎 [18] = 1,--第十一周 降龙伏虎 [19] = 1,--第十一周 降龙伏虎 [20] = 2,--社稷大典 [21] = 9,--易经宝库 [22] = 3,--限时召唤 [23] = 4,--乾坤宝盒 [24] = 10,--神衣天降 [25] = 12,--灵兽宝阁 [26] = 11, [27] = 5, [28] = 6, [29] = 6, [30] = 7, [31] = 8, } local curActivityCount = { [1] = require("Modules/DynamicActivity/DynamicTaskPage"), [2] = require("Modules/DynamicActivity/SheJiDaDian"), [3] = require("Modules/DynamicActivity/TimeLimitedCall"), [4] = require("Modules/DynamicActivity/QianKunBox"), [5] = require("Modules/DynamicActivity/ZhenQiYiBaoPage"), [6] = require("Modules/DynamicActivity/LeiJiChongZhiPage"), [7] = require("Modules/DynamicActivity/XianShiShangShi"), [8] = require("Modules/Expert/DynamicActivityExChange"), [9] = require("Modules/DynamicActivity/YiJingBaoKu"), [10] = require("Modules/DynamicActivity/ShengYiTianJiang"), [11] = require("Modules/DynamicActivity/LingShowTeHui"), [12] = require("Modules/DynamicActivity/LingShouBaoGe"), } --初始化组件(用于子类重写) function DynamicActivityPanel:InitComponent() orginLayer = 0 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.PageList = {} for i=1,#curActivityCount do this.PageList[i] = curActivityCount[i].new(self, Util.GetGameObject(self.transform, "bg/pageContent/page"..i)) end -- 上部货币显示 this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform, { showType = UpViewOpenType.ShowLeft}) DynamicActivityManager.ZhenQiBaoGeIndex = #tabs - 4 end --绑定事件(用于子类重写) function DynamicActivityPanel: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() this:ClosePanel() end) end --添加事件监听(用于子类重写) function DynamicActivityPanel:AddListener() Game.GlobalEvent:AddEvent(GameEvent.Activity.OnActivityOpenOrClose, this.RefreshActivityBtn) for i = 1, #this.PageList do if this.PageList[i] then this.PageList[i]:AddListener() end end end --移除事件监听(用于子类重写) function DynamicActivityPanel:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.Activity.OnActivityOpenOrClose, this.RefreshActivityBtn) for i = 1, #this.PageList do if this.PageList[i] then this.PageList[i]:RemoveListener() end end end this.RefreshActivityBtn = function() if not ActivityGiftManager.IsActivityTypeOpen(ActivityTypeDef.DynamicAct) then this:ClosePanel() end end --界面打开时调用(用于子类重写) function DynamicActivityPanel:OnOpen(chooseIndex) -- 初始化tab数据 _CurPageIndex = chooseIndex or 1 this.PageTabCtrl:Init(this.tabbox, tabs,_CurPageIndex) end -- 打开,重新打开时回调 function DynamicActivityPanel:OnShow() if _CurPageIndex then this.PageTabCtrl:ChangeTab(_CurPageIndex) end end ----==========================一级页签相关=========================================== -- tab按钮自定义显示设置 function this.PageTabAdapter(tab, index, status) local img = Util.GetGameObject(tab, "img"):GetComponent("Image") local lock = Util.GetGameObject(tab, "lock") local redpot = Util.GetGameObject(tab, "redpot") img.sprite = Util.LoadSprite(tabs[index][status]) img:SetNativeSize() local islock = status == "lock" Util.SetGray(img.gameObject, islock) lock:SetActive(islock) -- 判断是否需要检测红点 redpot:SetActive(false) if not islock then this.ClearPageRedpot(index) this.BindPageRedpot(index, redpot) end local id = ActivityGiftManager.IsActivityTypeOpen(tabs[index].ActType) if id and id > 0 and ActivityGiftManager.IsQualifiled(tabs[index].ActType) then if GlobalActConfig[id].Type == ActivityTypeDef.DynamicAct then if GlobalActConfig[id].ShowArt and GlobalActConfig[id].ShowArt > 0 then tab:SetActive(GlobalActConfig[id].ShowArt == index) end --限时兑换特殊处理 elseif GlobalActConfig[id].Type == ActivityTypeDef.LimitExchange then tab.gameObject:SetActive(GlobalActConfig[id].ShowArt ~= 1) --累计充值特殊处理 elseif GlobalActConfig[id].Type == ActivityTypeDef.AccumulativeRechargeExper then if GlobalActConfig[id] and GlobalActConfig[id].ShowArt ~= 1 then tab.gameObject:SetActive(true) else tab.gameObject:SetActive(false) end elseif GlobalActConfig[id].Type == ActivityTypeDef.DynamicAct_recharge then tab.gameObject:SetActive(true) else tab.gameObject:SetActive(true) end else tab.gameObject:SetActive(false) end end -- tab可用性检测 function this.PageTabIsLockCheck(index) return false end -- tab改变事件 function this.OnPageTabChange(index) _CurPageIndex = index for i = 1, #this.PageList do if this.PageList[i] then this.PageList[i]:OnHide() this.PageList[i].gameObject:SetActive(false) end end this.PageList[_PageInfo[index]]:OnShow(this.sortingOrder,this,tabs[index].ActType) this.PageList[_PageInfo[index]].gameObject:SetActive(true) this.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = tabs[index].panelType }) end -- 绑定数据 local _PageBindData = {} local _TabBindData = {} function this.BindPageRedpot(page, redpot) local rpType = tabs[page].rpType if not rpType then return end BindRedPointObject(rpType, redpot) _PageBindData[rpType] = redpot end function this.ClearPageRedpot(page) -- 清除红点绑定 if page then -- 清除某个 local rpType = tabs[page].rpType if not rpType then return end ClearRedPointObject(rpType, _PageBindData[rpType]) _PageBindData[rpType] = nil else -- 全部清除 for rpt, redpot in pairs(_PageBindData) do ClearRedPointObject(rpt, redpot) end _PageBindData = {} end end --界面关闭时调用(用于子类重写) function DynamicActivityPanel:OnClose() if _CurPageIndex then this.PageList[_PageInfo[_CurPageIndex]]:OnHide() this.PageList[_PageInfo[_CurPageIndex]].gameObject:SetActive(false) end end --界面销毁时调用(用于子类重写) function DynamicActivityPanel:OnDestroy() SubUIManager.Close(this.UpView) -- 清除红点 this.ClearPageRedpot() -- 这里管理全部子界面的销毁,保证子界面生命周期完整 for _, page in pairs(this.PageList) do if page.OnDestroy then page:OnDestroy() end end end return this