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

511 lines
No EOL
16 KiB
Lua

XEscapeConfigs = XEscapeConfigs or {}
local SHARE_TABLE_PATH = "Share/Fuben/Escape/"
local CLIENT_TABLE_PATH = "Client/Fuben/Escape/"
--章节难度
XEscapeConfigs.Difficulty = {
Normal = 1,
Hard = 2,
}
--关卡层状态
XEscapeConfigs.LayerState = {
Lock = 1, --未开启
Now = 2, --当前可挑战
Pass = 3, --已通关
}
--结算显示的界面布局
XEscapeConfigs.ShowSettlePanel = {
SelfWinInfo = 1, --战后结算
AllWinInfo = 2, --阶段结算
}
--章节结算显示的参数类型
XEscapeConfigs.ChapterSettleCondType = {
RemainTime = 1, --剩余时间
HitTimes = 2, --受击
TrapedTimes = 3, --陷阱受击
}
--战后结算显示的参数类型
XEscapeConfigs.FightSettleCondType = {
StageName = 1, --关卡名
Score = 2, --积分
}
XEscapeConfigs.TacticsClearCount = 1
---@type XConfig
local _ConfigTactics = nil
---@type XConfig
local _ConfigTacticsEffect = nil
---@type XConfig
local _ConfigTacticsEffectGroup = nil
---@type XConfig
local _ConfigTacticsNode = nil
local _EscapeChapterDifficultyDir = {}
function XEscapeConfigs.Init()
XConfigCenter.CreateGetProperties(XEscapeConfigs, {
"EscapeActivity",
"EscapeChapter",
"EscapeLayer",
"EscapeStage",
"EscapeTask",
"EscapeClientConfig",
"EscapeStageColorPrefab",
}, {
"ReadByIntKey", SHARE_TABLE_PATH .. "EscapeActivity.tab", XTable.XTableEscapeActivity, "Id",
"ReadByIntKey", SHARE_TABLE_PATH .. "EscapeChapter.tab", XTable.XTableEscapeChapter, "Id",
"ReadByIntKey", SHARE_TABLE_PATH .. "EscapeLayer.tab", XTable.XTableEscapeLayer, "Id",
"ReadByIntKey", SHARE_TABLE_PATH .. "EscapeStage.tab", XTable.XTableEscapeStage, "StageId",
"ReadByIntKey", CLIENT_TABLE_PATH .. "EscapeTask.tab", XTable.XTableEscapeTask, "Id",
"ReadByStringKey", CLIENT_TABLE_PATH .. "EscapeClientConfig.tab", XTable.XTableEscapeClientConfig, "Key",
"ReadByIntKey", CLIENT_TABLE_PATH .. "EscapeStageColorPrefab.tab", XTable.XTableEscapeStageColorPrefab, "Id",
})
_ConfigTactics = XConfig.New(SHARE_TABLE_PATH.."EscapeTactics.tab", XTable.XTableEscapeTactics, "Id")
_ConfigTacticsEffect = XConfig.New(SHARE_TABLE_PATH.."EscapeTacticsEffect.tab", XTable.XTableEscapeTacticsEffect, "Id")
_ConfigTacticsEffectGroup = XConfig.New(SHARE_TABLE_PATH.."EscapeTacticsEffectGroup.tab", XTable.XTableEscapeTacticsEffectGroup, "Id")
_ConfigTacticsNode = XConfig.New(SHARE_TABLE_PATH.."EscapeTacticsNode.tab", XTable.XTableEscapeTacticsNode, "Id")
XEscapeConfigs._InitEscapeChapterDifficultyList()
end
function XEscapeConfigs.GetEscapeStageIdList()
local configs = XEscapeConfigs.GetEscapeStage()
local stageIdList = {}
for stageId in pairs(configs) do
table.insert(stageIdList, stageId)
end
return stageIdList
end
--机器人Id是否在关卡类型表中
function XEscapeConfigs.IsStageTypeRobot(robotId)
local robotIdList = XFubenConfigs.GetStageTypeRobot(XDataCenter.FubenManager.StageType.Escape)
for _, robotIdCfg in ipairs(robotIdList) do
if robotId == robotIdCfg then
return true
end
end
return false
end
--------------------------EscapeActivity 活动表 begin------------------------
function XEscapeConfigs.GetActivityTimeId(id)
local config = XEscapeConfigs.GetEscapeActivity(id, true)
return config.TimeId
end
function XEscapeConfigs.GetActivityName(id)
local config = XEscapeConfigs.GetEscapeActivity(id, true)
return config.Name
end
function XEscapeConfigs.GetActivityBackground(id)
local config = XEscapeConfigs.GetEscapeActivity(id, true)
return config.Background
end
--------------------------EscapeActivity 活动表 end------------------------
--------------------------EscapeChapter 章节表 begin------------------------
local IsInitEscapeChapterDic = false
local EscapeGroupIdToChapterIdsDic = {} --组Id对应的章节Id列表
local InitTheatreDecorationDic = function()
if IsInitEscapeChapterDic then
return
end
local configs = XEscapeConfigs.GetEscapeChapter()
for chapterId, v in pairs(configs) do
if not EscapeGroupIdToChapterIdsDic[v.GroupId] then
EscapeGroupIdToChapterIdsDic[v.GroupId] = {}
end
table.insert(EscapeGroupIdToChapterIdsDic[v.GroupId], chapterId)
end
for _, chapterIdList in pairs(EscapeGroupIdToChapterIdsDic) do
table.sort(chapterIdList, function(a, b)
local difficultyA = XEscapeConfigs.GetChapterDifficulty(a)
local difficultyB = XEscapeConfigs.GetChapterDifficulty(b)
if difficultyA ~= difficultyB then
return difficultyA < difficultyB
end
return a < b
end)
end
IsInitEscapeChapterDic = true
end
function XEscapeConfigs.GetEscapeChapterGroupIdList()
InitTheatreDecorationDic()
local groupIdList = {}
for groupId in pairs(EscapeGroupIdToChapterIdsDic) do
table.insert(groupIdList, groupId)
end
table.sort(groupIdList, function(a, b)
return a < b
end)
return groupIdList
end
function XEscapeConfigs._InitEscapeChapterDifficultyList()
_EscapeChapterDifficultyDir = {}
local configs = XEscapeConfigs.GetEscapeChapter()
for chapterId, v in pairs(configs) do
if not _EscapeChapterDifficultyDir[v.Difficulty] then
_EscapeChapterDifficultyDir[v.Difficulty] = {}
end
_EscapeChapterDifficultyDir[v.Difficulty][#_EscapeChapterDifficultyDir[v.Difficulty] + 1] = chapterId
end
for _, chapterIdList in pairs(_EscapeChapterDifficultyDir) do
table.sort(chapterIdList, function(a, b)
return a < b
end)
end
end
function XEscapeConfigs.GetEscapeChapterIdListByDifficulty(difficulty)
return _EscapeChapterDifficultyDir[difficulty]
end
function XEscapeConfigs.GetEscapeChapterIdListByGroupId(groupId)
InitTheatreDecorationDic()
return EscapeGroupIdToChapterIdsDic[groupId]
end
function XEscapeConfigs.GetChapterName(id)
local config = XEscapeConfigs.GetEscapeChapter(id, true)
return config.Name
end
function XEscapeConfigs.GetChapterEnName(id)
local config = XEscapeConfigs.GetEscapeChapter(id, true)
return config.EnName
end
function XEscapeConfigs.GetChapterMaxTime(id)
local config = XEscapeConfigs.GetEscapeChapter(id, true)
return config.MaxTime
end
function XEscapeConfigs.GetChapterEnvironmentDesc(id)
local config = XEscapeConfigs.GetEscapeChapter(id, true)
return config.EnvironmentDesc
end
function XEscapeConfigs.GetChapterOpenCondition(id)
local config = XEscapeConfigs.GetEscapeChapter(id, true)
return config.OpenCondition
end
function XEscapeConfigs.GetChapterTimeId(id)
local config = XEscapeConfigs.GetEscapeChapter(id, true)
return config.TimeId
end
function XEscapeConfigs.GetChapterDifficulty(id)
local config = XEscapeConfigs.GetEscapeChapter(id, true)
return config.Difficulty
end
function XEscapeConfigs.GetChapterGroupId(id)
local config = XEscapeConfigs.GetEscapeChapter(id, true)
return config.GroupId
end
function XEscapeConfigs.GetChapterLayerIds(id)
local config = XEscapeConfigs.GetEscapeChapter(id, true)
return config.LayerIds
end
function XEscapeConfigs.GetChapterBuffDesc(id)
local config = XEscapeConfigs.GetEscapeChapter(id, true)
return config.BuffDesc
end
function XEscapeConfigs.GetChapterShowFightEventIds(id)
local config = XEscapeConfigs.GetEscapeChapter(id, true)
return config.ShowFightEventIds
end
function XEscapeConfigs.GetChapterInitialTime(id)
local config = XEscapeConfigs.GetEscapeChapter(id, true)
return config.InitialTime
end
--------------------------EscapeChapter 章节表 end--------------------------
--------------------------EscapeLayer 区域表 begin--------------------------
function XEscapeConfigs.GetLayerClearStageCount(id)
local config = XEscapeConfigs.GetEscapeLayer(id, true)
return config.ClearStageCount
end
function XEscapeConfigs.GetLayerClearTacticsCount(id)
if XTool.IsNumberValid(XEscapeConfigs.GetLayerClearStageCount(id)) then
return 0
end
return XEscapeConfigs.TacticsClearCount
end
function XEscapeConfigs.GetLayerNodeCount(id)
return XEscapeConfigs.GetLayerClearStageCount(id) + XEscapeConfigs.GetLayerClearTacticsCount(id)
end
function XEscapeConfigs.GetLayerStageIds(id)
local config = XEscapeConfigs.GetEscapeLayer(id, true)
return config.StageIds
end
function XEscapeConfigs.GetLayerTacticsNodeIds(id)
local config = XEscapeConfigs.GetEscapeLayer(id, true)
return config.TacticsNodeIds
end
--------------------------EscapeLayer 区域表 end----------------------------
--------------------------EscapeStage 关卡表 begin--------------------------
function XEscapeConfigs.GetStageColor(id)
local config = XEscapeConfigs.GetEscapeStage(id, true)
return config.Color
end
function XEscapeConfigs.GetStageAwardTime(id)
local config = XEscapeConfigs.GetEscapeStage(id, true)
return config.AwardTime
end
function XEscapeConfigs.GetStageGridDesc(id)
local config = XEscapeConfigs.GetEscapeStage(id, true)
return config.GridDesc
end
--------------------------EscapeStage 关卡表 end----------------------------
--------------------------EscapeTask 任务表 begin------------------------
function XEscapeConfigs.GetTaskGroupIdList()
local configs = XEscapeConfigs.GetEscapeTask()
local taskGroupIdList = {}
for id in pairs(configs) do
table.insert(taskGroupIdList, id)
end
return taskGroupIdList
end
function XEscapeConfigs.GetTaskIdList(id)
local config = XEscapeConfigs.GetEscapeTask(id, true)
return config.TaskId
end
function XEscapeConfigs.GetTaskName(id)
local config = XEscapeConfigs.GetEscapeTask(id, true)
return config.Name
end
--------------------------EscapeTask 任务表 end---------------------------
--------------------------EscapeClientConfig begin------------------------
function XEscapeConfigs.GetHelpKey()
local config = XEscapeConfigs.GetEscapeClientConfig("HelpKey", true)
return config.Values[1]
end
function XEscapeConfigs.GetRemainTimeColor()
local config = XEscapeConfigs.GetEscapeClientConfig("RemainTimeColor", true)
return config.Values
end
function XEscapeConfigs.GetRemainTimeShowColor()
local config = XEscapeConfigs.GetEscapeClientConfig("RemainTimeShowColor", true)
return config.Values
end
function XEscapeConfigs.GetChapterSettleCondDesc()
local config = XEscapeConfigs.GetEscapeClientConfig("ChapterSettleCondDesc", true)
return config.Values
end
function XEscapeConfigs.GetChapterSettleRemainTimeGradeImgPath(score)
local gradeIndex = XEscapeConfigs.GetGradeIndexByScore(score)
local gradeConfig = XEscapeConfigs.GetEscapeClientConfig("ChapterSettleRemainTimeGradeImgPath", true)
return gradeConfig.Values[gradeIndex or #gradeConfig.Values]
end
function XEscapeConfigs.GetChapterSettleRemainTimeGrade(score)
local gradeIndex = XEscapeConfigs.GetGradeIndexByScore(score)
local config = XEscapeConfigs.GetEscapeClientConfig("ChapterSettleRemainTimeGrade", true)
return config.Values[gradeIndex or #config.Values]
end
function XEscapeConfigs.GetGradeIndexByScore(score)
local scoreConfig = XEscapeConfigs.GetEscapeClientConfig("ChapterSettleRemainTimeScore", true)
for i, value in ipairs(scoreConfig.Values) do
local scoreCfg = tonumber(value)
if scoreCfg and score >= scoreCfg then
return i
end
end
end
function XEscapeConfigs.GetDifficultyName(difficulty)
local config = XEscapeConfigs.GetEscapeClientConfig("DifficultyName", true)
return config.Values[difficulty] or ""
end
function XEscapeConfigs.GetMainBg(index)
local config = XEscapeConfigs.GetEscapeClientConfig("MainBg", true)
return config.Values[index]
end
function XEscapeConfigs.GetFightSettleCondDesc(index)
local config = XEscapeConfigs.GetEscapeClientConfig("FightSettleCondDesc", true)
return config.Values[index] or config.Values
end
function XEscapeConfigs.GetMainShowRewardId()
local config = XEscapeConfigs.GetEscapeClientConfig("MainShowRewardId", true)
return config.Values[1] or config.Values
end
function XEscapeConfigs.GetMainDifficultyBgUrl(difficulty)
local config = XEscapeConfigs.GetEscapeClientConfig("MainDifficultyBgUrl", true)
return config.Values[difficulty] or config.Values
end
function XEscapeConfigs.GetChapterNumIconUrl(index)
local config = XEscapeConfigs.GetEscapeClientConfig("ChapterNumIconUrl", true)
return config.Values[index] or config.Values
end
function XEscapeConfigs.GetChapterDifficultyBgUrl(difficulty)
local config = XEscapeConfigs.GetEscapeClientConfig("ChapterDifficultyBgUrl", true)
return config.Values[difficulty] or config.Values
end
function XEscapeConfigs.GetChapterDifficultyLockUrl(difficulty)
local config = XEscapeConfigs.GetEscapeClientConfig("ChapterDifficultyLockUrl", true)
return config.Values[difficulty] or config.Values
end
function XEscapeConfigs.GetStageTitleColor(color)
local config = XEscapeConfigs.GetEscapeClientConfig("StageTitleColor", true)
return config.Values[color] or config.Values
end
function XEscapeConfigs.GetStageTitleBg(color)
local config = XEscapeConfigs.GetEscapeClientConfig("StageTitleBg", true)
return config.Values[color] or config.Values
end
---@return string
function XEscapeConfigs.GetSettleTitleIcon(isWin)
local config = XEscapeConfigs.GetEscapeClientConfig("SettleTitleIcon", true)
return config.Values[isWin and 1 or 2] or config.Values
end
---@return string
function XEscapeConfigs.GetSettleTitleText(isWin)
local config = XEscapeConfigs.GetEscapeClientConfig("SettleTitleText", true)
return config.Values[isWin and 1 or 2] or config.Values
end
--------------------------EscapeClientConfig end--------------------------
--------------------------EscapeStageColorPrefab 关卡颜色对应的预制 begin------------------------
function XEscapeConfigs.GetEscapeStageColorPrefabById(id)
local config = XEscapeConfigs.GetEscapeStageColorPrefab(id, true)
return config.Prefab
end
--------------------------EscapeStageColorPrefab end--------------------------
--region Tactics 策略
function XEscapeConfigs.GetAllTactics()
return _ConfigTactics:GetConfigs()
end
---@return string
function XEscapeConfigs.GetTacticsName(id)
return _ConfigTactics:GetProperty(id, "Name")
end
---@return number
function XEscapeConfigs.GetTacticsType(id)
return _ConfigTactics:GetProperty(id, "Type")
end
---@return string
function XEscapeConfigs.GetTacticsDesc(id)
return _ConfigTactics:GetProperty(id, "Desc")
end
---@return string
function XEscapeConfigs.GetTacticsIcon(id)
return _ConfigTactics:GetProperty(id, "Icon")
end
---@return number
function XEscapeConfigs.GetTacticsQuality(id)
return _ConfigTactics:GetProperty(id, "Quality")
end
---@return number
function XEscapeConfigs.GetTacticsUnlockConditionId(id)
return _ConfigTactics:GetProperty(id, "UnlockConditionId")
end
---@return number
function XEscapeConfigs.GetTacticsEffectGroupId(id)
return _ConfigTactics:GetProperty(id, "EffectGroupId")
end
--endregion
--region TacticsEffect
---@return number
function XEscapeConfigs.GetTacticsEffectType(id)
return _ConfigTacticsEffect:GetProperty(id, "Type")
end
---@return string
function XEscapeConfigs.GetTacticsEffectDesc(id)
return _ConfigTacticsEffect:GetProperty(id, "Desc")
end
---@return number[]
function XEscapeConfigs.GetTacticsEffectParams(id)
return _ConfigTacticsEffect:GetProperty(id, "Params")
end
--endregion
--region TacticsEffectGroup
---@return number[]
function XEscapeConfigs.GetTacticsEffectGroupFightEventIds(tacticsEffectGroupId)
return _ConfigTacticsEffectGroup:GetProperty(tacticsEffectGroupId, "FightEventIds")
end
---@return number[]
function XEscapeConfigs.GetTacticsEffectGroupTacticsEffectIds(tacticsEffectGroupId)
return _ConfigTacticsEffectGroup:GetProperty(tacticsEffectGroupId, "TacticsEffectIds")
end
--endregion
--region TacticsNode
function XEscapeConfigs.GetTacticsNodeName(id)
return _ConfigTacticsNode:GetProperty(id, "Name")
end
---@return string
function XEscapeConfigs.GetTacticsNodeBriefDesc(id)
return _ConfigTacticsNode:GetProperty(id, "BrifeDesc")
end
---@return string
function XEscapeConfigs.GetTacticsNodeDesc(id)
return _ConfigTacticsNode:GetProperty(id, "Desc")
end
---@return string
function XEscapeConfigs.GetTacticsNodeShowIcon(id)
return _ConfigTacticsNode:GetProperty(id, "ShowIcon")
end
--endregion