PGRData/Script/matrix/xconfig/XConfigCenter.lua

367 lines
17 KiB
Lua
Raw Normal View History

XConfigCenter = XConfigCenter or {}
XConfigCenter.DirectoryType = {
Share = 1,
Client = 2,
}
local IsWindowsEditor = XMain.IsWindowsEditor
local ConfigCenterProfiler = nil
2024-09-01 20:49:41 +00:00
local ConfigCenterDetailProfiler = nil
local function InitConfig(config, key)
if IsWindowsEditor then
2024-09-01 20:49:41 +00:00
local profiler = ConfigCenterDetailProfiler:CreateChild(key)
profiler:Start()
-- XPerformance.RecordLuaMemData(key, function()
config.Init()
-- end)
profiler:Stop()
else
config.Init()
end
end
function XConfigCenter.Init()
ConfigCenterProfiler = XGame.Profiler:CreateChild("XConfigCenter")
ConfigCenterProfiler:Start()
2024-09-01 20:49:41 +00:00
if IsWindowsEditor then
ConfigCenterDetailProfiler = CS.XProfiler.Create("XConfigCenter", false, true)
end
InitConfig(XDlcConfig,"XDlcConfig")
-- 新拆分出的Config
InitConfig(XAssistConfig, "XAssistConfig")
InitConfig(XAutoFightConfig, "XAutoFightConfig")
InitConfig(XFubenBossOnlineConfig, "XFubenBossOnlineConfig")
InitConfig(XFubenUrgentEventConfig, "XFubenUrgentEventConfig")
InitConfig(XLoadingConfig, "XLoadingConfig")
InitConfig(XTeamConfig, "XTeamConfig")
InitConfig(XFunctionConfig, "XFunctionConfig")
InitConfig(XAttribConfigs, "XAttribConfigs")
InitConfig(XUiConfigs, "XUiConfigs")
InitConfig(XGuideConfig, "XGuideConfig")
InitConfig(XItemConfigs, "XItemConfigs")
InitConfig(XCharacterConfigs, "XCharacterConfigs")
InitConfig(XSignBoardConfigs, "XSignBoardConfigs")
InitConfig(XEquipConfig, "XEquipConfig")
2024-09-01 20:49:41 +00:00
InitConfig(XEquipGuideConfigs, "XEquipGuideConfigs")
InitConfig(XComeAcrossConfig, "XComeAcrossConfig")
InitConfig(XFavorabilityConfigs, "XFavorabilityConfigs")
InitConfig(XArenaConfigs, "XArenaConfigs")
InitConfig(XArenaOnlineConfigs, "XArenaOnlineConfigs")
InitConfig(XTrialConfigs, "XTrialConfigs")
InitConfig(XCommunicationConfig, "XCommunicationConfig")
InitConfig(XPrequelConfigs, "XPrequelConfigs")
InitConfig(XTaskConfig, "XTaskConfig")
InitConfig(XFubenConfigs, "XFubenConfigs")
InitConfig(XTaskForceConfigs, "XTaskForceConfigs")
InitConfig(XDrawConfigs, "XDrawConfigs")
InitConfig(XGachaConfigs, "XGachaConfigs")
InitConfig(XFubenMainLineConfigs, "XFubenMainLineConfigs")
InitConfig(XFubenBossSingleConfigs, "XFubenBossSingleConfigs")
InitConfig(XFubenExperimentConfigs, "XFubenExperimentConfigs")
InitConfig(XBfrtConfigs, "XBfrtConfigs")
InitConfig(XBountyTaskConfigs, "XBountyTaskConfigs")
--InitConfig(XHostelConfigs, "XHostelConfigs")
InitConfig(XBaseEquipConfigs, "XBaseEquipConfigs")
InitConfig(XFurnitureConfigs, "XFurnitureConfigs")
InitConfig(XPayConfigs, "XPayConfigs")
InitConfig(XFubenExploreConfigs, "XFubenExploreConfigs")
InitConfig(XFubenActivityBranchConfigs, "XFubenActivityBranchConfigs")
InitConfig(XFubenActivityBossSingleConfigs, "XFubenActivityBossSingleConfigs")
InitConfig(XFubenRepeatChallengeConfigs, "XFubenRepeatChallengeConfigs")
InitConfig(XDormConfig, "XDormConfig")
2024-09-01 20:49:41 +00:00
InitConfig(XDormQuestConfigs, "XDormQuestConfigs")
InitConfig(XMovieConfigs, "XMovieConfigs")
InitConfig(XExhibitionConfigs, "XExhibitionConfigs")
InitConfig(XAutoWindowConfigs, "XAutoWindowConfigs")
InitConfig(XPlayerInfoConfigs, "XPlayerInfoConfigs")
InitConfig(XSignInConfigs, "XSignInConfigs")
InitConfig(XReportConfigs, "XReportConfigs")
InitConfig(XPracticeConfigs, "XPracticeConfigs")
InitConfig(XFubenUnionKillConfigs, "XFubenUnionKillConfigs")
InitConfig(XFubenSpecialTrainConfig, "XFubenSpecialTrainConfig")
InitConfig(XShopConfigs, "XShopConfigs")
InitConfig(XHelpCourseConfig, "XHelpCourseConfig")
InitConfig(XMedalConfigs, "XMedalConfigs")
InitConfig(XArchiveConfigs, "XArchiveConfigs")
InitConfig(XGuildConfig, "XGuildConfig")
InitConfig(XFestivalActivityConfig, "XFestivalActivityConfig")
InitConfig(XFubenBabelTowerConfigs, "XFubenBabelTowerConfigs")
InitConfig(XFubenRogueLikeConfig, "XFubenRogueLikeConfig")
InitConfig(XMarketingActivityConfigs, "XMarketingActivityConfigs")
InitConfig(XFubenAssignConfigs, "XFubenAssignConfigs")
2024-09-01 20:49:41 +00:00
InitConfig(XFubenAwarenessConfigs, "XFubenAwarenessConfigs")
InitConfig(XRegressionConfigs, "XRegressionConfigs")
InitConfig(XPlatformShareConfigs, "XPlatformShareConfigs")
InitConfig(XRewardConfigs, "XRewardConfigs")
InitConfig(XMusicPlayerConfigs, "XMusicPlayerConfigs")
InitConfig(XFubenExtraChapterConfigs, "XFubenExtraChapterConfigs")
InitConfig(XFubenShortStoryChapterConfigs, "XFubenShortStoryChapterConfigs")
InitConfig(XDailyDungeonConfigs, "XDailyDungeonConfigs")
InitConfig(XHeadPortraitConfigs, "XHeadPortraitConfigs")
InitConfig(XGuildBossConfig, "XGuildBossConfig")
InitConfig(XEliminateGameConfig, "XEliminateGameConfig")
InitConfig(XWorldBossConfigs, "XWorldBossConfigs")
InitConfig(XMaintainerActionConfigs, "XMaintainerActionConfigs")
InitConfig(XExpeditionConfig, "XExpeditionConfig")
InitConfig(XRpgTowerConfig, "XRpgTowerConfig")
2024-09-01 20:49:41 +00:00
InitConfig(XRiftConfig, "XRiftConfig")
InitConfig(XCerberusGameConfig, "XCerberusGameConfig")
InitConfig(XColorTableConfigs, "XColorTableConfigs")
InitConfig(XMaverick2Configs, "XMaverick2Configs")
InitConfig(XClickClearGameConfigs, "XClickClearGameConfigs")
InitConfig(XFubenZhouMuConfigs, "XFubenZhouMuConfigs")
InitConfig(XNieRConfigs, "XNieRConfigs")
InitConfig(XMentorSystemConfigs, "XMentorSystemConfigs")
InitConfig(XCollectionWallConfigs, "XCollectionWallConfigs")
InitConfig(XActivityConfigs, "XActivityConfigs")
InitConfig(XPurchaseConfigs, "XPurchaseConfigs")
InitConfig(XActivityBriefConfigs, "XActivityBriefConfigs")
InitConfig(XSetConfigs, "XSetConfigs")
InitConfig(XRedEnvelopeConfigs, "XRedEnvelopeConfigs")
InitConfig(XVideoConfig, "XVideoConfig")
InitConfig(XWeaponFashionConfigs, "XWeaponFashionConfigs")
InitConfig(XFubenInfestorExploreConfigs, "XFubenInfestorExploreConfigs")
InitConfig(XPuzzleActivityConfigs, "XPuzzleActivityConfigs")
InitConfig(XChatConfigs, "XChatConfigs")
InitConfig(XPhotographConfigs, "XPhotographConfigs")
InitConfig(XTRPGConfigs, "XTRPGConfigs")
InitConfig(XPokemonConfigs, "XPokemonConfigs")
InitConfig(XSpringFestivalActivityConfigs, "XSpringFestivalActivityConfigs")
InitConfig(XFubenActivityPuzzleConfigs, "XFubenActivityPuzzleConfigs")
InitConfig(XFubenNewCharConfig, "XFubenNewCharConfig")
InitConfig(XSceneModelConfigs, "XSceneModelConfigs")
InitConfig(XRoomCharFilterTipsConfigs, "XRoomCharFilterTipsConfigs")
InitConfig(XChessPursuitConfig, "XChessPursuitConfig")
InitConfig(XComposeGameConfig, "XComposeGameConfig")
InitConfig(XLottoConfigs, "XLottoConfigs")
InitConfig(XPartnerConfigs, "XPartnerConfigs")
InitConfig(XWhiteValentineConfig, "XWhiteValentineConfig")
InitConfig(XSpecialShopConfigs, "XSpecialShopConfigs")
InitConfig(XFashionConfigs, "XFashionConfigs")
2024-09-01 20:49:41 +00:00
InitConfig(XCharacterUiEffectConfig, "XCharacterUiEffectConfig")
InitConfig(XFingerGuessingConfig, "XFingerGuessingConfig")
2024-09-01 20:49:41 +00:00
InitConfig(XReform2ndConfigs, "XReform2ndConfigs")
InitConfig(XPartnerTeachingConfigs, "XPartnerTeachingConfigs")
InitConfig(XScratchTicketConfig, "XScratchTicketConfig")
InitConfig(XRpgMakerGameConfigs, "XRpgMakerGameConfigs")
InitConfig(XInvertCardGameConfig, "XInvertCardGameConfig")
InitConfig(XMineSweepingConfigs, "XMineSweepingConfigs")
InitConfig(XSuperTowerConfigs, "XSuperTowerConfigs")
InitConfig(XFashionStoryConfigs, "XFashionStoryConfigs")
InitConfig(XPassportConfigs, "XPassportConfigs")
InitConfig(XGuardCampConfig, "XGuardCampConfig")
InitConfig(XFubenSimulatedCombatConfig, "XFubenSimulatedCombatConfig")
InitConfig(XChristmasTreeConfig, "XChristmasTreeConfig")
InitConfig(XCoupletGameConfigs, "XCoupletGameConfigs")
InitConfig(XStrongholdConfigs, "XStrongholdConfigs")
2024-09-01 20:49:41 +00:00
InitConfig(XBrilliantWalkConfigs, "XBrilliantWalkConfigs")
InitConfig(XMoeWarConfig, "XMoeWarConfig")
InitConfig(XMovieAssembleConfig, "XMovieAssembleConfig")
InitConfig(XFubenHackConfig, "XFubenHackConfig")
InitConfig(XFubenCoupleCombatConfig, "XFubenCoupleCombatConfig")
InitConfig(XPokerGuessingConfig, "XPokerGuessingConfig")
InitConfig(XKillZoneConfigs, "XKillZoneConfigs")
InitConfig(XAreaWarConfigs, "XAreaWarConfigs")
InitConfig(XSameColorGameConfigs, "XSameColorGameConfigs")
InitConfig(XActivityCalendarConfigs, "XActivityCalendarConfigs")
InitConfig(XMouthAnimeConfigs, "XMouthAnimeConfigs")
InitConfig(XLivWarmActivityConfigs, "XLivWarmActivityConfigs")
InitConfig(XLivWarmSoundsActivityConfig, "XLivWarmSoundsActivityConfig")
InitConfig(XLivWarmExtActivityConfig, "XLivWarmSoundsActivityConfig")
InitConfig(XLivWarmRaceConfigs, "XLivWarmRaceConfigs")
InitConfig(XSuperSmashBrosConfig, "XSuperSmashBrosConfig")
InitConfig(XPickFlipConfigs, "XPickFlipConfigs")
InitConfig(XNewRegressionConfigs, "XNewRegressionConfigs")
2024-09-01 20:49:41 +00:00
InitConfig(XRegression3rdConfigs, "XRegression3rdConfigs")
InitConfig(XMemorySaveConfig, "XMemorySaveConfig")
InitConfig(XDiceGameConfigs, "XDiceGameConfigs")
InitConfig(XTheatreConfigs, "XTheatreConfigs")
2024-09-01 20:49:41 +00:00
InitConfig(XBiancaTheatreConfigs, "XBiancaTheatreConfigs")
InitConfig(XMaverickConfigs, "XMaverickConfigs")
InitConfig(XAchievementConfigs, "XAchievementConfigs")
InitConfig(XReviewActivityConfigs, "XReviewActivityConfigs")
InitConfig(XDoomsdayConfigs, "XDoomsdayConfigs")
InitConfig(XPivotCombatConfigs, "XPivotCombatConfigs")
InitConfig(XNewYearLuckConfigs, "XNewYearLuckConfigs")
InitConfig(XHitMouseConfigs, "XHitMouseConfigs")
InitConfig(XEscapeConfigs, "XEscapeConfigs")
InitConfig(XBodyCombineGameConfigs, "XBodyCombineGameConfigs")
InitConfig(XGuildWarConfig, "XGuildWarConfig")
InitConfig(XGoldenMinerConfigs, "XGoldenMinerConfigs")
InitConfig(XDoubleTowersConfigs, "XDoubleTowersConfigs")
InitConfig(XAccumulatedConsumeConfig, "XAccumulatedConsumeConfig")
InitConfig(XMultiDimConfig, "XMultiDimConfig")
InitConfig(XTaikoMasterConfigs, "XTaikoMasterConfigs")
InitConfig(XGuildDormConfig, "XGuildDormConfig")
2024-09-01 20:49:41 +00:00
InitConfig(XTwoSideTowerConfigs, "XTwoSideTowerConfigs")
InitConfig(XUiPcConfig, "XUiPcConfig")
InitConfig(XCourseConfig, "XCourseConfig")
InitConfig(XNewbieTaskConfigs, "XNewbieTaskConfigs")
InitConfig(XSummerSignInConfigs, "XSummerSignInConfigs")
InitConfig(XSkinVoteConfigs, "XSkinVoteConfigs")
InitConfig(XRestaurantConfigs, "XRestaurantConfigs")
InitConfig(XFubenCharacterTowerConfigs, "XFubenCharacterTowerConfigs")
InitConfig(XFightPasswordConfigs, "XFightPasswordConfigs")
InitConfig(XDlcHuntConfigs,"XDlcHuntConfigs")
InitConfig(XDlcHuntAttrConfigs,"XDlcHuntAttrConfigs")
InitConfig(XDlcHuntCharacterConfigs,"XDlcHuntCharacterConfigs")
InitConfig(XDlcHuntSkillConfigs,"XDlcHuntSkillConfigs")
InitConfig(XDlcHuntChipConfigs,"XDlcHuntChipConfigs")
InitConfig(XDlcHuntWorldConfig,"XDlcHuntWorldConfig")
InitConfig(XPlanetConfigs,"XPlanetConfigs")
InitConfig(XPlanetStageConfigs,"XPlanetStageConfigs")
InitConfig(XPlanetTalentConfigs,"XPlanetTalentConfigs")
InitConfig(XPlanetWorldConfigs,"XPlanetWorldConfigs")
InitConfig(XPlanetCameraConfigs,"XPlanetCameraConfigs")
InitConfig(XMazeConfig,"XMazeConfig")
InitConfig(XCharacterCuteConfig,"XCharacterCuteConfig")
InitConfig(XPlanetCharacterConfigs,"XPlanetCharacterConfigs")
InitConfig(XPlanetExploreConfigs,"XPlanetExploreConfigs")
InitConfig(XFightBrilliantwalkConfigs, "XFightBrilliantwalkConfigs")
InitConfig(XMonsterCombatConfigs,"XMonsterCombatConfigs")
InitConfig(XSlotMachineConfigs, "XSlotMachineConfigs")
2024-09-01 20:49:41 +00:00
InitConfig(XNewActivityCalendarConfigs, "XNewActivityCalendarConfigs")
InitConfig(XFightCommonImageConfigs, "XFightCommonImageConfigs")
ConfigCenterProfiler:Stop()
2024-09-01 20:49:41 +00:00
if IsWindowsEditor then
XLog.Debug("ConfigCenterDetailProfiler:\n" .. tostring(ConfigCenterDetailProfiler))
end
end
2024-09-01 20:49:41 +00:00
-- 方法已废弃读取配置方式可考虑使用CreateTableConfig
-- 创建配置表属性,主要是为了封装方法延时调用加载表
function XConfigCenter.CreateGetPropertyByFunc(config, name, readFunc)
config["Get" .. name] = function(key, showTip)
if config[name] == nil then
config[name] = readFunc()
end
if key then
return XConfigCenter.GetValueByKey(key, showTip, config, name)
end
return config[name]
end
end
2024-09-01 20:49:41 +00:00
-- 方法已废弃读取配置方式可考虑使用CreateTableConfig
function XConfigCenter.CreateGetPropertyByArgs(config, name, funcName, path, tableConfig, readId)
config[name] = nil
config["Get" .. name] = function(key, showTip)
if config[name] == nil then
config[name] = XTableManager[funcName](path, tableConfig, readId)
end
if key then
return XConfigCenter.GetValueByKey(key, showTip, config, name, path, readId)
end
return config[name]
end
end
2024-09-01 20:49:41 +00:00
-- 方法已废弃读取配置方式可考虑使用CreateTableConfig
function XConfigCenter.GetValueByKey(key, showTip, config, name, path, readId)
local result = config[name][key]
if not result and showTip then
XLog.ErrorTableDataNotFound(
string.format("XConfigCenter.Get%s", name) ,
string.format("配置%s_%s", name, readId),
path or "",
readId or "",
tostring(key))
end
return result
end
2024-09-01 20:49:41 +00:00
-- 方法已废弃读取配置方式可考虑使用CreateTableConfig
function XConfigCenter.CreateGetProperties(config, names, args)
local beginIndex = 1
for i, name in ipairs(names) do
beginIndex = i + 3 * (i - 1)
XConfigCenter.CreateGetPropertyByArgs(config, name, args[beginIndex], args[beginIndex + 1], args[beginIndex + 2], args[beginIndex + 3])
end
end
2024-09-01 20:49:41 +00:00
function XConfigCenter.ReadTableByTableConfig(tableConfig, directoryName, tableName, tableDefindName)
local readFuncName = tableConfig.ReadFuncName or "ReadByIntKey"
local readKeyName = tableConfig.ReadKeyName or "Id"
local tablePath = "Share"
if tableConfig.DirType == XConfigCenter.DirectoryType.Client then
tablePath = "Client"
end
2024-09-01 20:49:41 +00:00
if tableDefindName == nil then
tableDefindName = "XTable" .. tableName
end
tablePath = string.format("%s/%s/%s.tab", tablePath, directoryName, tableName)
2024-09-01 20:49:41 +00:00
return XTableManager[readFuncName](tablePath, XTable[tableDefindName], readKeyName)
end
2024-09-01 20:49:41 +00:00
--=============
--创建配置
--value : table主要用来避免重复创建目前看来好像没什么必要后面可以考虑省略掉即可
--name : string主要用来报错提示目前看来可以考虑省略掉用参数3代替也能找到唯一值
--directoryName : string表格在Table/Client或Table/Share中的路径
--=============
function XConfigCenter.CreateTableConfig(value, name, directoryName)
if value then return value end
local config = {}
2024-09-01 20:49:41 +00:00
if directoryName then
config.DirectoryName = directoryName
end
setmetatable(config, {
__index = {
--=============
--给定配置表Key获取该配置表全部配置
--=============
GetAllConfigs = function(tableKey)
if not tableKey then
XLog.Error("The tableKey given is not exist. tableKey : " .. tostring(tableKey))
return {}
end
config.__Configs = config.__Configs or {}
local result = config.__Configs[tableKey]
if result == nil then
result = XConfigCenter.ReadTableByTableConfig(tableKey, config.DirectoryName
2024-09-01 20:49:41 +00:00
, tableKey.TableName or config.TableKey[tableKey], tableKey.TableDefindName)
config.__Configs[tableKey] = result
end
return result
end,
--=============
--给定配置表Key和Id获取该配置表指定Id的配置
--tableKey : 配置表的Key
--idKey : 该配置表的主键Id或Key
--noTips : 若没有查找到对应项,是否要打印错误日志
--=============
GetCfgByIdKey = function(tableKey, idKey, noTips)
if not tableKey or not idKey then
XLog.Error(string.format("%s.GetCfgByIdKey error: tableKey or idKey is null!", name))
return {}
end
local allCfgs = config.GetAllConfigs(tableKey)
if not allCfgs then
return {}
end
local cfg = allCfgs[idKey]
if not cfg then
if not noTips then
XLog.ErrorTableDataNotFound(
string.format( "%s.GetCfgByIdKey", name),
tableKey.LogKey or "唯一Id",
tableKey.TableName or config.TableKey[tableKey],
tableKey.LogKey or "唯一Id",
tostring(idKey))
end
return {}
end
return cfg
end
}
})
return config
end