forked from endernon/PGRData
85 lines
3 KiB
Lua
85 lines
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
|