PGRData/Script/matrix/xconfig/XConfigCenter.lua

306 lines
14 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.

XConfigCenter = XConfigCenter or {}
XConfigCenter.DirectoryType = {
Share = 1,
Client = 2,
}
local IsWindowsEditor = XMain.IsWindowsEditor
local ConfigCenterProfiler = nil
local function InitConfig(config, key)
if IsWindowsEditor then
local profiler = ConfigCenterProfiler: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()
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")
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(XMailConfigs, "XMailConfigs")
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")
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")
InitConfig(XRegressionConfigs, "XRegressionConfigs")
InitConfig(XPlatformShareConfigs, "XPlatformShareConfigs")
InitConfig(XRewardConfigs, "XRewardConfigs")
InitConfig(XMusicPlayerConfigs, "XMusicPlayerConfigs")
InitConfig(XFubenExtraChapterConfigs, "XFubenExtraChapterConfigs")
InitConfig(XFubenShortStoryChapterConfigs, "XFubenShortStoryChapterConfigs")
InitConfig(XDailyDungeonConfigs, "XDailyDungeonConfigs")
InitConfig(XCharacterUiEffectConfig, "XCharacterUiEffectConfig")
InitConfig(XHeadPortraitConfigs, "XHeadPortraitConfigs")
InitConfig(XGuildBossConfig, "XGuildBossConfig")
InitConfig(XEliminateGameConfig, "XEliminateGameConfig")
InitConfig(XWorldBossConfigs, "XWorldBossConfigs")
InitConfig(XMaintainerActionConfigs, "XMaintainerActionConfigs")
InitConfig(XExpeditionConfig, "XExpeditionConfig")
InitConfig(XRpgTowerConfig, "XRpgTowerConfig")
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")
InitConfig(XFingerGuessingConfig, "XFingerGuessingConfig")
InitConfig(XReformConfigs, "XReformConfigs")
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")
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")
InitConfig(XMemorySaveConfig, "XMemorySaveConfig")
InitConfig(XDiceGameConfigs, "XDiceGameConfigs")
InitConfig(XTheatreConfigs, "XTheatreConfigs")
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")
InitConfig(XSlotMachineConfigs, "XSlotMachineConfigs")
ConfigCenterProfiler:Stop()
end
-- 创建配置表属性,主要是为了封装方法延时调用加载表
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
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
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
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
function XConfigCenter.ReadTableByTableConfig(tableConfig, directoryName, tableName)
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
tablePath = string.format("%s/%s/%s.tab", tablePath, directoryName, tableName)
return XTableManager[readFuncName](tablePath, XTable["XTable" .. tableName], readKeyName)
end
function XConfigCenter.CreateTableConfig(value, name)
if value then return value end
local config = {}
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
, tableKey.TableName or config.TableKey[tableKey])
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