PGRData/Script/matrix/xconfig/XActivityBriefConfigs.lua
2024-09-01 22:49:41 +02:00

427 lines
No EOL
17 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local TABLE_ACTIVITY_PATH = "Client/ActivityBrief/ActivityBrief.tab"
local TABLE_ACTIVITY_SHOP = "Client/ActivityBrief/ActivityBriefShop.tab"
local TABLE_ACTIVITY_SHOP_GOODS_SORT = "Client/ActivityBrief/ActivityBriefShopGoodsSort.tab"
local TABLE_ACTIVITY_TASK = "Client/ActivityBrief/ActivityBriefTask.tab"
local TABLE_ACTIVITY_GROUP_PATH = "Client/ActivityBrief/ActivityBriefGroup.tab"
local TABLE_ACTIVITY_SPECIAL = "Client/ActivityBrief/SpecialActivity.tab"
local TABLE_ACTIVITY_Story = "Share/ActivityBrief/ActivityBriefStory.tab"
local ParseToTimestamp = XTime.ParseToTimestamp
local ActivityTemplates = {}
local ActivityShopTemplates = {}
local ActivityShopGoodsSortTemplates = {}
local ActivityTaskTemplates = {}
local ActivityGroupTemplates = {}
local SpecialActivityTemplates = {}
local ActivityStoryTemplates = {}
local SkipIdToRedPointConditionsDic = {}
local SkipIdToRedPointParamDic = {}
XActivityBriefConfigs = XActivityBriefConfigs or {}
-- 活动名称Id有需要新增勿删改注意与TABLE_ACTIVITY_GROUP_PATH路径表同步
XActivityBriefConfigs.ActivityGroupId = {
MainLine = 1, --主线活动
Branch = 2, --支线活动
BossSingle = 3, --单机Boss活动(超难关)
BossOnline = 4, --联机Boss活动
Prequel = 5, --间章故事-角色A
BabelTower = 6, --巴别塔
RougueLike = 7, --爬塔
RepeatChallenge = 8, --复刷关
ArenaOnline = 9, --区域联机
UnionKill = 10, --狙击战
ShortStories = 11, --短篇故事
Prequel2 = 12, --间章故事-角色B
Labyrinth = 13, --迷宫
Society = 14, --公会
Resource = 15, --资源
BigWar = 16, --大作战
Extra = 17, --番外-普通
WorldBoss = 18, --世界Boss
Expedition = 19, --自走棋
FubenBossSingle = 20, --幻痛囚笼
ActivityBriefShop = 21, --活动商店
Extra2 = 22, --番外-隐藏
MaintainerAction = 23, --大富翁
RpgTower = 24, --RPG玩法
ActivityDrawCard = 25, --活动抽卡
TRPGMainLine = 26, --终焉福音-主线跑团活动
NewCharActivity = 27, -- 新角色教学活动
FubenActivityTrial = 28, -- 试玩关
ShiTu = 29, -- 师徒系统
Nier = 30, -- 尼尔玩法
Pokemon = 31, -- 口袋战双
Pursuit = 32, -- 追击玩法
StrongHold = 33, --超级据点
Simulate = 34, -- 模拟战
Partner = 35, --伙伴系统
MoeWar = 38, --萌战
PetCard = 39, --宠物抽卡
PetTrial = 40, --新宠物活动
PokerGuessing = 41, --翻牌小游戏
Hack = 42, --骇客
RpgMaker = 43, --端午活动
Reform = 44, --改造玩法
CoupleCombat = 45, --双人同行
SuperTower = 46, --超级爬塔
SummerSeries = 47, --夏活系列关
KillZone = 48, --杀戮无双
Expedition = 49, --虚像地平线
SameColorGame = 50, --三消游戏
AreaWar = 51, --全服对决
SuperSmashBros = 52, --超限乱斗
TeachingSkin = 53, --教学关内涂装试玩
Maverick = 54, --射击玩法 异构阵线 孤胆枪手
MemorySave = 55, --意识营救战
Theatre = 56, --肉鸽玩法
DoomsDay = 57, --免疫之城
PivotCombat = 58, --Sp战力验证
Escape = 59, --大逃杀玩法
FubenShortStory = 60, --故事集
DoubleTowers = 61, --动作塔防
SecondActivityBriefShop = 62, --活动商店
SecondBriefPanel = 63, --副面板
GuildWar = 64, --工会战
GoldenMiner = 65, --黄金矿工
QiGuan = 66, --春节七关
TaikoMaster = 67, -- 音游小游戏
MultiDim = 68, -- 多维挑战
Festival = 69, -- 节日剧情 端午节
GuildBoss = 70, -- 拟真围剿
TwoSideTower = 71, -- 正逆塔
QixiFestival = 73, --节日剧情 七夕节
BiancaTheatre = 74, --肉鸽2.0
MoonFestival = 75, --节日剧情 中秋节
CharacterTower = 76, --角色塔(本我回廊)
Rift = 77, --战双大秘境
ColorTable = 78, -- 调色板战争
BrilliantWalk = 79, -- 光辉同行
FubenAwareness = 80, -- 意识公约(危机公约)
Restaurant = 81, -- 春节餐厅(战双餐厅)
YuanXiao2023 = 82, -- 特训关 2023元宵
SpringFestival = 83, -- 节日剧情 春节
}
--跳转id
XActivityBriefConfigs.SkipId =
{
LivWarmExtActivity = 11767, --丽芙宣发活动
LivWarmRace = 20097, --二周年预热-赛跑小游戏
Doomsday = 82050, --免疫之城
NewYearLuck = 20112, --元旦奖券小游戏
BodyCombineGame = 20118, --接头霸王(哈卡玛预热小游戏)
AccumulateConsume = 20120, --累消活动
WhiteValentine = 20133, --白情活动
InvertCardGame = 20134, --翻牌小游戏(二期)
MineSweepingGame = 20140, --扫雷小游戏
Puzzle = 20149, --拼图
}
-- 面板类型
XActivityBriefConfigs.PanelType = {
Main = 1, -- 主面板
Second = 2, -- 副面板
}
-- v1.31 特殊入场动效播放检测类型
XActivityBriefConfigs.EnterAniCheckType = {
None = 0, -- 本期无特殊入场动画
OnlyFirst = 1, -- 活动期间内首次打开
EveryDay = 2, -- 活动期间内每天首次打开
EveryLogin = 3, -- 活动期间内每次登录首次打开
}
-- v2.0 活动面板添加
XActivityBriefConfigs.BgType = {
Spine = 1, -- Spine动画
Scene = 2, -- Scene TimeLine动画
Video = 3, -- 视频动画
TimeLine = 4, -- Ui TimeLine动画
}
local ActivityRedPointType = {
None = 0, -- 无红点
Normal = 1, -- 不带参数红点
Special = 2, -- 带参数红点
}
local InitSkipIdToRedPointConditionsDic = function()
-- V1.31该方法添加红点已废弃,请在SpecialActivity.tab配置里添加对应活动的红点
SkipIdToRedPointConditionsDic[11739] = {XRedPointConditions.Types.CONDITION_GUARD_CAMP_RED}
SkipIdToRedPointConditionsDic[80011] = {XRedPointConditions.Types.CONDITION_WHITEVALENTINE2021_ENTRYRED}
SkipIdToRedPointConditionsDic[11753] = {XRedPointConditions.Types.CONDITION_FINGERGUESSING_TASK}
SkipIdToRedPointConditionsDic[11757] = {XRedPointConditions.Types.CONDITION_MOVIE_ASSEMBLE_01}
SkipIdToRedPointConditionsDic[11761] = {XRedPointConditions.Types.CONDITION_FASHION_STORY_HAVE_STAGE}
SkipIdToRedPointConditionsDic[81103] = {XRedPointConditions.Types.CONDITION_RPG_MAKER_GAME_RED}
SkipIdToRedPointConditionsDic[20091] = {XRedPointConditions.Types.CONDITION_LIV_WARM_ACTIVITY}
SkipIdToRedPointConditionsDic[20107] = {XRedPointConditions.Types.CONDITION_DICEGAME_RED}
SkipIdToRedPointConditionsDic[20147] = {XRedPointConditions.Types.CONDITION_ACTIVITY_DRAGON_BOAT_FESTIVAL}
SkipIdToRedPointConditionsDic[20156] = {XRedPointConditions.Types.CONDITION_SUMMER_SIGNIN_ACTIVITY}
SkipIdToRedPointConditionsDic[XActivityBriefConfigs.SkipId.LivWarmExtActivity] = {XRedPointConditions.Types.CONDITION_LIV_WARM_EXT_ACTIVITY}
SkipIdToRedPointConditionsDic[XActivityBriefConfigs.SkipId.LivWarmRace] = {XRedPointConditions.Types.CONDITION_LIV_WARM_RACE_REWARD}
SkipIdToRedPointConditionsDic[XActivityBriefConfigs.SkipId.Doomsday] = {XRedPointConditions.Types.XRedPointConditionDoomsdayActivity}
SkipIdToRedPointConditionsDic[XActivityBriefConfigs.SkipId.NewYearLuck] = {XRedPointConditions.Types.CONDITION_NEW_YEAR_LUCK_RULE_RED}
SkipIdToRedPointConditionsDic[XActivityBriefConfigs.SkipId.BodyCombineGame] = {XRedPointConditions.Types.CONDITION_BODYCOMBINEGAME_MAIN}
SkipIdToRedPointConditionsDic[XActivityBriefConfigs.SkipId.AccumulateConsume] = {XRedPointConditions.Types.CONDITION_CONSUME_ACTIVITY}
SkipIdToRedPointConditionsDic[XActivityBriefConfigs.SkipId.WhiteValentine] = {XRedPointConditions.Types.CONDITION_ACTIVITY_WHITE_VALENTINE}
SkipIdToRedPointConditionsDic[XActivityBriefConfigs.SkipId.InvertCardGame] = {XRedPointConditions.Types.CONDITION_INVERTCARDGAME_RED}
SkipIdToRedPointConditionsDic[XActivityBriefConfigs.SkipId.MineSweepingGame] = {XRedPointConditions.Types.CONDITION_MINSWEEPING_RED}
SkipIdToRedPointConditionsDic[XActivityBriefConfigs.SkipId.Puzzle] = {XRedPointConditions.Types.CONDITION_DRAG_PUZZLE_GAME_SWITCH}
SkipIdToRedPointConditionsDic[1400008] = {XRedPointConditions.Types.CONDITION_SLOTMACHINE_RED}
SkipIdToRedPointConditionsDic[1400009] = {XRedPointConditions.Types.CONDITION_SLOTMACHINE_REDL}
-- 读取配置
for _, config in pairs(SpecialActivityTemplates) do
if config.ActivityType == ActivityRedPointType.None then
goto CONTINUE
end
if config.RedPointConditions then
SkipIdToRedPointConditionsDic[config.SkipId] = {config.RedPointConditions}
end
if config.ActivityType == ActivityRedPointType.Special then
if config.Param then
SkipIdToRedPointParamDic[config.SkipId] = config.Param
end
end
:: CONTINUE ::
end
end
function XActivityBriefConfigs.Init()
ActivityTemplates = XTableManager.ReadByIntKey(TABLE_ACTIVITY_PATH, XTable.XTableBriefActivity, "Id")
ActivityShopTemplates= XTableManager.ReadByIntKey(TABLE_ACTIVITY_SHOP, XTable.XTableActivityBriefShop, "Id")
ActivityShopGoodsSortTemplates= XTableManager.ReadByIntKey(TABLE_ACTIVITY_SHOP_GOODS_SORT, XTable.XTableActivityBriefShopGoodsSort, "Id")
ActivityTaskTemplates= XTableManager.ReadByIntKey(TABLE_ACTIVITY_TASK, XTable.XTableActivityBriefTask, "Id")
ActivityGroupTemplates = XTableManager.ReadByIntKey(TABLE_ACTIVITY_GROUP_PATH, XTable.XTableActivityBriefGroup, "Id")
SpecialActivityTemplates = XTableManager.ReadByIntKey(TABLE_ACTIVITY_SPECIAL, XTable.XTableSpecialActivity, "Id")
ActivityStoryTemplates = XTableManager.ReadByIntKey(TABLE_ACTIVITY_Story, XTable.XTableActivityBriefStory, "Id")
InitSkipIdToRedPointConditionsDic()
end
function XActivityBriefConfigs.GetActivityBeginTime()
local config = XActivityBriefConfigs.GetActivityConfig()
return XFunctionManager.GetStartTimeByTimeId(config.TimeId)
end
function XActivityBriefConfigs.GetActivityEndTime()
local config = XActivityBriefConfigs.GetActivityConfig()
return XFunctionManager.GetEndTimeByTimeId(config.TimeId)
end
function XActivityBriefConfigs.GetActivityConfig()
return ActivityTemplates[1]
end
function XActivityBriefConfigs.GetActivityModels()
local config = XActivityBriefConfigs.GetActivityConfig()
return config.UIModelId or {}
end
function XActivityBriefConfigs.GetSpinePath(index)
local config = XActivityBriefConfigs.GetActivityConfig()
return config.SpinePath[index] or ""
end
---v1.27 活动面板优化:根据活动主题主副面板Id和SpineIndex获取SpinePath
---@param panelType integer
---@param index integer
---@return string
function XActivityBriefConfigs.GetSpinePathByType(panelType, index)
local config = ActivityTemplates[panelType]
return config.SpinePath[index] or ""
end
---v1.27 活动面板优化:根据活动主题主副面板Id获取当前的 SpinePath List
---@param panelType integer
---@return table
function XActivityBriefConfigs.GetSpinePathList(panelType)
local config = ActivityTemplates[panelType]
return config.SpinePath or {}
end
function XActivityBriefConfigs.GetActivityBgType(panelType)
local config = ActivityTemplates[panelType]
if XTool.IsTableEmpty(config) then return nil end
return config.BgType or nil
end
---v2.2 根据活动主题主副面板Id第一次播放完动画是否默认选择跳过动画
---@param panelType integer
---@return boolean
function XActivityBriefConfigs.GetIsAfterFirstAnimSetSkip(panelType)
local config = ActivityTemplates[panelType]
if XTool.IsTableEmpty(config) then return false end
return XTool.IsNumberValid(config.IsAfterFirstAnimSetSkip)
end
---v1.29 活动面板:根据活动主题主副面板Id获取当前的 Main3DBg
---@param panelType integer
---@return string|nil
function XActivityBriefConfigs.GetMain3DBgPath(panelType)
local config = ActivityTemplates[panelType]
if XTool.IsTableEmpty(config) then return nil end
return config.Main3DBg or nil
end
---v1.31 根据活动主题主副面板Id获取当前的 Main3DBgModel
---@param panelType integer
---@return string|nil
function XActivityBriefConfigs.GetMain3DBgModelPath(panelType)
local config = ActivityTemplates[panelType]
if XTool.IsTableEmpty(config) then return nil end
return config.Main3DBgModel or nil
end
function XActivityBriefConfigs.GetSpecialEnterAnimName(panelType)
local config = ActivityTemplates[panelType]
if XTool.IsTableEmpty(config) then return nil end
return config.SpecialEnterAnimName or nil
end
---v1.31 根据活动主题主副面板Id获取当前的 EnterAniCheckType
---@param panelType integer
---@return integer
function XActivityBriefConfigs.GetEnterAniCheckType(panelType)
local config = ActivityTemplates[panelType]
if XTool.IsTableEmpty(config) then return XActivityBriefConfigs.EnterAniCheckType.None end
return config.EnterAniCheckType or XActivityBriefConfigs.EnterAniCheckType.None
end
function XActivityBriefConfigs.GetEnterAnimName(panelType)
local config = ActivityTemplates[panelType]
if XTool.IsTableEmpty(config) then return nil end
return config.EnterAnimName or nil
end
function XActivityBriefConfigs.GetLoopAnimName(panelType)
local config = ActivityTemplates[panelType]
if XTool.IsTableEmpty(config) then return nil end
return config.LoopAnimName or nil
end
function XActivityBriefConfigs.GetVideoEnterSoundCueId(panelType)
local config = ActivityTemplates[panelType]
if XTool.IsTableEmpty(config) then return nil end
return config.VideoEnterSoundCueId or nil
end
function XActivityBriefConfigs.GetVideoLoopSoundCueId(panelType)
local config = ActivityTemplates[panelType]
if XTool.IsTableEmpty(config) then return nil end
return config.VideoLoopSoundCueId or nil
end
---v1.27 活动面板优化:根据活动主题主副面板Id获取当前的 GroupId List
---@param panelType integer
---@return table
function XActivityBriefConfigs.GetGroupIdList(panelType)
local config = ActivityTemplates[panelType]
return config.GroupIdList or {}
end
function XActivityBriefConfigs.GetActivityEntrySkipId(id)
return SpecialActivityTemplates[id].SkipId
end
function XActivityBriefConfigs.GetAllActivityEntryConfig()
return SpecialActivityTemplates
end
function XActivityBriefConfigs.GetActivityShopByInfoId(id)
return ActivityShopTemplates[id]
end
function XActivityBriefConfigs.GetActivityShopGoodsSortById(id)
return ActivityShopGoodsSortTemplates[id]
end
function XActivityBriefConfigs.GetActivityTaskByInfoId(id)
return ActivityTaskTemplates[id]
end
function XActivityBriefConfigs.GetActivityGroupConfig(groupId)
local groupConfig = ActivityGroupTemplates[groupId]
if not groupConfig then
XLog.ErrorTableDataNotFound("XActivityBriefConfigs.GetActivityGroupConfig",
"根据groupId获取的配置表项", TABLE_ACTIVITY_GROUP_PATH, "groupId", tostring(groupId))
return
end
return groupConfig
end
---v1.27 活动面板优化:根据活动GroupId获取该Btn点击事件绑定函数名
---@param groupId integer
---@return string|nil
function XActivityBriefConfigs.GetActivityGroupBtnInitMethodName(groupId)
local groupConfig = ActivityGroupTemplates[groupId]
if not groupConfig then
XLog.ErrorTableDataNotFound("XActivityBriefConfigs.GetActivityGroupBtnInitMethodName",
"根据groupId获取的配置表项", TABLE_ACTIVITY_GROUP_PATH, "groupId", tostring(groupId))
return
end
return groupConfig.BtnInitMethodName or nil
end
function XActivityBriefConfigs.TestOpenActivity()
local newTemplate = {}
for id, template in pairs(ActivityTemplates) do
if id ~= 1 then
newTemplate[id] = template
else
newTemplate[id] = XTool.Clone(template)
newTemplate[id].TimeId = 24
end
end
ActivityTemplates = newTemplate
end
function XActivityBriefConfigs.GetTableActivityPath()
return TABLE_ACTIVITY_PATH
end
function XActivityBriefConfigs.GetActivityStoryConfig()
return ActivityStoryTemplates
end
function XActivityBriefConfigs.GetActivityBriefGroup(id)
local config = XActivityBriefConfigs.GetActivityGroupConfig(id)
return config.Name
end
function XActivityBriefConfigs.GetRedPointConditionsBySkipId(skipId)
return skipId and SkipIdToRedPointConditionsDic[skipId]
end
function XActivityBriefConfigs.GetRedPointParamBySkipId(skipId)
return skipId and SkipIdToRedPointParamDic[skipId]
end
function XActivityBriefConfigs.GetActivityBriefGroupTimeId(groupId)
local config = XActivityBriefConfigs.GetActivityGroupConfig(groupId)
return config and config.TimeId or 0
end
function XActivityBriefConfigs.GetActivityBriefGroupIsRemindWhenOpen(groupId)
local config = XActivityBriefConfigs.GetActivityGroupConfig(groupId)
return config and config.IsRemindWhenOpen or 0
end
function XActivityBriefConfigs.GetActivityBriefGroupRemindPriority(groupId)
local config = XActivityBriefConfigs.GetActivityGroupConfig(groupId)
return config and config.RemindPriority or 0
end
function XActivityBriefConfigs.GetActivityBriefGroupTagCondition(groupId)
local config = XActivityBriefConfigs.GetActivityGroupConfig(groupId)
return config and config.TagCondition or ""
end
function XActivityBriefConfigs.GetActivityBriefGroupTagOffset(groupId)
local config = XActivityBriefConfigs.GetActivityGroupConfig(groupId)
return config and config.TagOffset or 0
end