miduo_client/Assets/ManagedResources/~Lua/Modules/DynamicActivity/DynamicActivityPanel.lua

305 lines
13 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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 = "s_shibukedang_bicon1", lock = "s_shibukedang_bicon1", select = "s_shibukedang_bicon2",
rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct
},
[9] = { --第十周
default = "s_shibukedang_bicon1", lock = "s_shibukedang_bicon1", select = "s_shibukedang_bicon2",
rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct
},
[10] = { --第十一周
default = "s_shibukedang_bicon1", lock = "s_shibukedang_bicon1", select = "s_shibukedang_bicon2",
rpType = RedPointType.DynamicActTask,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct
},
[11] = { --社稷大典
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
},
[12] = { --限时召唤
default = "x_xianshizaohuan_02", lock = "x_xianshizaohuan_02", select = "x_xianshizaohuan_01",
rpType = RedPointType.TimeLimited,panelType = PanelType.TimelimitCall,ActType = ActivityTypeDef.FindFairy
},
[13] = { --乾坤宝盒
default = "q_qiankun_baoheanniu_02", lock = "q_qiankun_baoheanniu_02", select = "q_qiankun_baoheanniu_01",
rpType = RedPointType.QianKunBox,panelType = PanelType.QianKunBox,ActType = ActivityTypeDef.QianKunBox
},
[14] = { --珍奇礼包
default = "z_zhenqibaoge_anniu_02", lock = "z_zhenqibaoge_anniu_02", select = "z_zhenqibaoge_anniu_01",
rpType = "",panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct_Treasure
},
[15] = { --累计充值 一天一刷
default = "r_huodong_leijichengzhianniu_01", lock = "r_huodong_leijichengzhianniu_01", select = "r_huodong_leijichengzhianniu",
rpType = RedPointType.DynamicActRecharge,panelType = PanelType.Main,ActType = ActivityTypeDef.AccumulativeRechargeExper
},
[16] = { --累计充值 一周一刷
default = "r_huodong_leijichengzhianniu_01", lock = "r_huodong_leijichengzhianniu_01", select = "r_huodong_leijichengzhianniu",
rpType = RedPointType.DynamicActRecharge,panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct_recharge
},
[17] = { --限时商市
default = "x_xianshishangshi_anniu_02", lock = "x_xianshishangshi_anniu_02", select = "x_xianshishangshi_anniu_01",
rpType = "",panelType = PanelType.Main,ActType = ActivityTypeDef.DynamicAct_TimeLimitShop
},
[18] = { --限时兑换
default = "r_xianshiduihuan_anniu_01", lock = "r_xianshiduihuan_anniu_01", select = "r_xianshiduihuan_anniu",
rpType = "",panelType = PanelType.Main,ActType = ActivityTypeDef.LimitExchange
},
[19] = { --易经宝库
default = "y_yijingbaoku_anniu_01", lock = "y_yijingbaoku_anniu_01", select = "y_yijingbaoku_anniu",
rpType = RedPointType.YiJingBaoKu,panelType = PanelType.YiJingBaoKu,ActType = ActivityTypeDef.QianKunBox
},
}
local _PageInfo = {--后期可以做成tableInserticon名字都去读表
[1] = 1,
[2] = 1,
[3] = 1,
[4] = 1,
[5] = 1,
[6] = 1,
[7] = 1,
[8] = 1,
[9] = 1,
[10] = 1,
[11] = 2,
[12] = 3,
[13] = 4,
[14] = 5,
[15] = 6,
[16] = 6,
[17] = 7,
[18] = 8,
[19] = 9,
}
local TimeLimitedCall = require("Modules/DynamicActivity/TimeLimitedCall")
local QianKunBox = require("Modules/DynamicActivity/QianKunBox")
local DynamicActPage=require("Modules/DynamicActivity/DynamicTaskPage")
local ZhenQiYiBaoPage=require("Modules/DynamicActivity/ZhenQiYiBaoPage")
local LeiJiChongZhiPage=require("Modules/DynamicActivity/LeiJiChongZhiPage")
local XianShiShangShi=require("Modules/DynamicActivity/XianShiShangShi")
local SheJiDaDian=require("Modules/DynamicActivity/SheJiDaDian")
local XianShiDuiHuan=require("Modules/Expert/DynamicActivityExChange")
local YiJingBaoKu=require("Modules/DynamicActivity/YiJingBaoKu")
--初始化组件(用于子类重写)
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 = {
[1] = DynamicActPage.new(self, Util.GetGameObject(self.transform, "bg/pageContent/page_3")),
[2] = SheJiDaDian.new(self, Util.GetGameObject(self.transform, "bg/pageContent/page_8")),
[3] = TimeLimitedCall.new(self, Util.GetGameObject(self.transform, "bg/pageContent/page_1")),
[4] = QianKunBox.new(self, Util.GetGameObject(self.transform, "bg/pageContent/page_2")),
[5] = ZhenQiYiBaoPage.new(self, Util.GetGameObject(self.transform, "bg/pageContent/page_4")),
[6] = LeiJiChongZhiPage.new(self, Util.GetGameObject(self.transform, "bg/pageContent/page_5")),
[7] = XianShiShangShi.new(self, Util.GetGameObject(self.transform, "bg/pageContent/page_6")),
[8] = XianShiDuiHuan.new(self, Util.GetGameObject(self.transform, "bg/pageContent/page_7")),
[9] = YiJingBaoKu.new(self, Util.GetGameObject(self.transform, "bg/pageContent/page_9")),
}
-- 上部货币显示
this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform, { showType = UpViewOpenType.ShowLeft})
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 then
if GlobalActConfig[id].ShowArt and GlobalActConfig[id].ShowArt > 0 then
tab:SetActive(GlobalActConfig[id].ShowArt == index)
else
tab.gameObject:SetActive(true)
end
--限时兑换特殊处理
if GlobalActConfig[id].Type == ActivityTypeDef.LimitExchange then
tab.gameObject:SetActive(GlobalActConfig[id].ShowArt ~= 1)
end
--累计充值特殊处理
if 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)
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