forked from endernon/PGRData
85 lines
No EOL
3 KiB
Lua
85 lines
No EOL
3 KiB
Lua
XDlcConfig = XDlcConfig or {}
|
||
|
||
local TABLE_DLC_LIST_PATH = "Client/DlcRes/DlcList.tab"
|
||
local TABLE_PATHC_CONFIG_PATH = "Client/DlcRes/PatchConfig.tab"
|
||
local TABLE_UNPATCH_CONFIG_PATH = "Client/DlcRes/UnPatchConfig.tab"
|
||
|
||
local DlcListConfig = nil
|
||
local PatchConfig = nil
|
||
local UnPatchConfig = nil
|
||
|
||
local EntryDlcIdMap = nil
|
||
local StageIdMap = nil
|
||
|
||
local EntryType = {
|
||
MainChapter = 1, -- 主线,参数:章节id(chapterMain.Id),配置在 Share/Fuben/MainLine/ChapterMain.tab
|
||
ExtraChapter = 2, -- 外篇,参数:章节id(chapterId),配置在 Share/Fuben/ExtraChapter/ChapterExtra.tab
|
||
Chanllenge = 3, -- 挑战,参数:挑战类型(XFubenManager.ChapterType),定义在 Share/Fuben/FubenChallengeBanner.tab
|
||
Bfrt = 4, -- 据点,参数:章节id(chapterId),配置在 Share/Fuben/Bfrt/BfrtChapter.tab
|
||
}
|
||
XDlcConfig.EntryType = EntryType
|
||
|
||
function XDlcConfig.Init()
|
||
DlcListConfig = XTableManager.ReadByIntKey(TABLE_DLC_LIST_PATH, XTable.XTableDlcList, "Id")
|
||
PatchConfig = XTableManager.ReadByIntKey(TABLE_PATHC_CONFIG_PATH, XTable.XTablePatchConfig, "Id")
|
||
UnPatchConfig = XTableManager.ReadByIntKey(TABLE_UNPATCH_CONFIG_PATH, XTable.XTableUnPatchConfig, "Id")
|
||
|
||
EntryDlcIdMap = {}
|
||
for id, config in pairs(DlcListConfig) do
|
||
if not EntryDlcIdMap[config.EntryType] then
|
||
EntryDlcIdMap[config.EntryType] = {}
|
||
end
|
||
EntryDlcIdMap[config.EntryType][config.EntryParam] = id
|
||
end
|
||
StageIdMap = {}
|
||
end
|
||
|
||
function XDlcConfig.GetDlcListConfig()
|
||
return DlcListConfig
|
||
end
|
||
|
||
function XDlcConfig.GetPatchConfig()
|
||
return PatchConfig
|
||
end
|
||
|
||
function XDlcConfig.GetUnPatchConfig()
|
||
return UnPatchConfig
|
||
end
|
||
|
||
function XDlcConfig.GetListConfigById(id)
|
||
local config = DlcListConfig[id]
|
||
if not config then
|
||
XLog.ErrorTableDataNotFound("XDlcConfig.GetListConfigById",
|
||
"DlcList", TABLE_DLC_LIST_PATH, "Id", tostring(id))
|
||
end
|
||
return config
|
||
end
|
||
|
||
-- 根据功能入口获取分包id
|
||
function XDlcConfig.GetDlcIdsByEntry(entryType, entryParam)
|
||
if EntryDlcIdMap[entryType] then
|
||
local dlcId = EntryDlcIdMap[entryType][entryParam]
|
||
if dlcId then
|
||
return DlcListConfig[dlcId].PatchConfigIds
|
||
end
|
||
end
|
||
XLog.Debug("尝试根据[功能入口]或取分包id, 失败: entryType:" .. tostring(entryType) .. ", entryParam:" .. tostring(entryParam))
|
||
end
|
||
|
||
-- 根据关卡id获取分包id
|
||
function XDlcConfig.GetDlcIdsByStageId(stageId)
|
||
local dlcId = StageIdMap[stageId]
|
||
if not StageIdMap[stageId] then
|
||
for id, config in pairs(DlcListConfig) do
|
||
-- 主线和外篇入口参数使用stageId
|
||
if config.EntryType == EntryType.MainChapter or config.EntryType == EntryType.ExtraChapter and stageId == config.EntryParam then
|
||
dlcId = id
|
||
StageIdMap[stageId] = id
|
||
end
|
||
end
|
||
end
|
||
if dlcId then
|
||
return DlcListConfig[dlcId].PatchConfigIds
|
||
end
|
||
XLog.Debug("尝试根据[stageId]获取分包id, 失败: stageId:" .. tostring(stageId))
|
||
end |