PGRData/Script/matrix/xconfig/XPracticeConfigs.lua

522 lines
No EOL
16 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.

XPracticeConfigs = XPracticeConfigs or {}
local CLIENT_PRACTICE_CHAPTERDETAIL = "Client/Fuben/Practice/PracticeChapterDetail.tab"
local CLIENT_PRACTICE_SKILLDETAIL = "Client/Fuben/Practice/PracticeSkillDetails.tab"
local SHARE_PRACTICE_CHAPTER_LOCAL = "Client/Fuben/Practice/PracticeChapterLocal.tab"
local CLIENT_PRACTICE_GROUP_DETAIL = "Client/Fuben/Practice/PracticeGroupDetail.tab"
local SHARE_PRACTICE_CHAPTER = "Share/Fuben/Practice/PracticeChapter.tab"
local SHARE_PRACTICE_ACTIVITY = "Share/Fuben/Practice/PracticeActivity.tab"
local SHARE_PRACTICE_GROUP = "Share/Fuben/Practice/PracticeGroup.tab"
--拟真boss
local SHARE_SIMULATE_TRAIN_ATK = "Share/Fuben/SimulateTrain/SimulateTrainAtk.tab"
local SHARE_SIMULATE_TRAIN_HP = "Share/Fuben/SimulateTrain/SimulateTrainHp.tab"
local SHARE_SIMULATE_TRAIN_MONSTER = "Share/Fuben/SimulateTrain/SimulateTrainMonster.tab"
local CLIENT_SIMULATE_TRAIN_GROUP = "Client/Fuben/SimulateTrain/SimulateTrainGroup.tab"
local PracticeChapterDetails = {}
local PracticeSkillDetails = {}
local PracticeActivityInfo = {}
local SimulateTrainAtk = {}
local SimulateTrainHp = {}
local SimulateTrainMonster = {}
local SimulateTrainGroup = {}
local PracticeChapters = {}
local SimulateTrainStageIdToMonsterIdDic = {}
local PracticeCharacterId2GroupId = {}
local PracticeChapterId2GroupId = {}
local PracticeGroup = {}
local PracticeGroupDetail = {}
XPracticeConfigs.PracticeType = {
Basics = 1,
Advanced = 2,
Character = 3,
Boss = 4,
}
--角色类型对应按钮页签
XPracticeConfigs.CharacterTabIndex = {
SLevelNormal = 4, --S级泛用机体
ALevelNormal = 5, --A级泛用机体
Isomer = 6, --独域机体SP角色
Ganged = 7, --联动机体
}
XPracticeConfigs.PanelType = {
PanelBoss = 6,
PanelElite = 7,
}
local InitSimulateTrainStageIdToMonsterIdDic = function()
for id, v in pairs(SimulateTrainMonster) do
SimulateTrainStageIdToMonsterIdDic[v.StageId] = id
end
end
local InitPracticeTeachDict = function()
for groupId, value in pairs(PracticeGroupDetail) do
if XTool.IsNumberValid(value.CharacterId) then
PracticeCharacterId2GroupId[value.CharacterId] = groupId
end
end
for id, value in pairs(PracticeChapters) do
for _, groupId in ipairs(value.Groups or {}) do
PracticeChapterId2GroupId[groupId] = id
end
end
end
function XPracticeConfigs.Init()
PracticeChapterDetails = XTableManager.ReadByIntKey(CLIENT_PRACTICE_CHAPTERDETAIL, XTable.XTablePracticeChapterDetail, "Id")
PracticeSkillDetails = XTableManager.ReadByIntKey(CLIENT_PRACTICE_SKILLDETAIL, XTable.XTablePracticeSkillDetails, "StageId")
local practiceChaptersServer = XTableManager.ReadByIntKey(SHARE_PRACTICE_CHAPTER, XTable.XTablePracticeChapter, "Id")
local practiceChaptersLocal = XTableManager.ReadByIntKey(SHARE_PRACTICE_CHAPTER_LOCAL, XTable.XTablePracticeChapterLocal, "Id")
PracticeChapters = XTool.MergeArray(practiceChaptersServer,practiceChaptersLocal)
PracticeActivityInfo = XTableManager.ReadByIntKey(SHARE_PRACTICE_ACTIVITY, XTable.XTablePracticeActivity, "StageId")
--拟真boss
SimulateTrainAtk = XTableManager.ReadByIntKey(SHARE_SIMULATE_TRAIN_ATK, XTable.XTableSimulateTrainAtk, "AtkLevel")
SimulateTrainHp = XTableManager.ReadByIntKey(SHARE_SIMULATE_TRAIN_HP, XTable.XTableSimulateTrainHp, "HpLevel")
SimulateTrainMonster = XTableManager.ReadByIntKey(SHARE_SIMULATE_TRAIN_MONSTER, XTable.XTableSimulateTrainMonster, "Id")
SimulateTrainGroup = XTableManager.ReadByIntKey(CLIENT_SIMULATE_TRAIN_GROUP, XTable.XTableSimulateTrainGroup, "GroupId")
PracticeGroup = XTableManager.ReadByIntKey(SHARE_PRACTICE_GROUP, XTable.XTablePracticeGroup, "GroupId")
PracticeGroupDetail = XTableManager.ReadByIntKey(CLIENT_PRACTICE_GROUP_DETAIL, XTable.XTablePracticeGroupDetail, "GroupId")
InitSimulateTrainStageIdToMonsterIdDic()
InitPracticeTeachDict()
end
function XPracticeConfigs.GetPracticeChapters()
return PracticeChapters
end
function XPracticeConfigs.GetPracticeChapterById(id)
local currentChapter = PracticeChapters[id]
if not currentChapter then
XLog.ErrorTableDataNotFound("XPracticeConfigs.GetPracticeChapterById", "currentChapter", SHARE_PRACTICE_CHAPTER, "id", tostring(id))
return
end
return currentChapter
end
function XPracticeConfigs.GetPracticeChapterConditionById(id)
local currentChapter = XPracticeConfigs.GetPracticeChapterById(id)
return currentChapter.ConditionId
end
function XPracticeConfigs.GetPracticeChapterStageIdById(id)
local currentChapter = XPracticeConfigs.GetPracticeChapterById(id)
return currentChapter.StageId or {}
end
function XPracticeConfigs.GetPracticeChapterIdByStageId(stageId)
for id, v in ipairs(PracticeChapters) do
if not XTool.IsTableEmpty(v.StageId) then
for _, sId in ipairs(v.StageId) do
if sId == stageId then
return id
end
end
end
for _, groupId in ipairs(v.Groups or {}) do
local stageIds = XPracticeConfigs.GetPracticeStageIdsByGroupId(groupId)
for _, sId in ipairs(stageIds or {}) do
if sId == stageId then
return id
end
end
end
end
return 0
end
function XPracticeConfigs.GetPracticeChapterDetails()
return PracticeChapterDetails
end
function XPracticeConfigs.GetPracticeChapterDetailById(id)
local currentChapterDetail = PracticeChapterDetails[id]
if not currentChapterDetail then
XLog.ErrorTableDataNotFound("XPracticeConfigs.GetPracticeChapterDetailById", "currentChapterDetail", CLIENT_PRACTICE_CHAPTERDETAIL, "id", tostring(id))
return
end
return currentChapterDetail
end
function XPracticeConfigs.GetPracticeDescriptionById(id)
local details = XPracticeConfigs.GetPracticeChapterDetailById(id)
if not details then return "" end
return details.Description or ""
end
function XPracticeConfigs.GetPracticeChapterTypeById(id)
local details = XPracticeConfigs.GetPracticeChapterDetailById(id)
if not details then return end
return details.Type
end
function XPracticeConfigs.GetPracticeSubTagById(id)
local details = XPracticeConfigs.GetPracticeChapterDetailById(id)
if not details then return 0 end
return details.SubTag or 0
end
function XPracticeConfigs.GetPracticeActivityInfo(stageId)
return PracticeActivityInfo[stageId]
end
function XPracticeConfigs.GetPracticeSkillDetailById(id)
local currentDetail = PracticeSkillDetails[id]
if not currentDetail then
XLog.ErrorTableDataNotFound("XPracticeConfigs.GetPracticeSkillDetailById", "currentDetail", CLIENT_PRACTICE_SKILLDETAIL, "id", tostring(id))
return
end
return currentDetail
end
function XPracticeConfigs.GetPracticeChapterIdListByType(type)
local config = XPracticeConfigs.GetPracticeChapterDetails()
local chapterIdList = {}
for _, v in pairs(config) do
if v.Type == type then
table.insert(chapterIdList, v.Id)
end
end
return chapterIdList
end
---------------拟真boss begin------------------------
local GetSimulateTrainAtkById = function(id)
if not SimulateTrainAtk[id] then
XLog.Error("没有找到相关配置,请检查配置表:>>>>", SHARE_SIMULATE_TRAIN_ATK)
return {}
end
return SimulateTrainAtk[id]
end
local GetSimulateTrainHpById = function(id)
if not SimulateTrainHp[id] then
XLog.Error("没有找到相关配置,请检查配置表:>>>>", SHARE_SIMULATE_TRAIN_HP)
return {}
end
return SimulateTrainHp[id]
end
local GetSimulateTrainMonsterById = function(id)
if not SimulateTrainMonster[id] then
XLog.Error("没有找到相关配置,请检查配置表:>>>>", SHARE_SIMULATE_TRAIN_MONSTER)
return {}
end
return SimulateTrainMonster[id]
end
local GetSimulateTrainGroupById = function(id)
if not SimulateTrainGroup[id] then
XLog.Error("没有找到相关配置,请检查配置表:>>>>", CLIENT_SIMULATE_TRAIN_GROUP)
return {}
end
return SimulateTrainGroup[id]
end
--Atk
function XPracticeConfigs.GetSimulateTrainAtkAtkBuffId(id)
local cfg = GetSimulateTrainAtkById(id)
return cfg.AtkBuffId or 0
end
function XPracticeConfigs.GetSimulateTrainAtkAtkAttributeCe(id)
local cfg = GetSimulateTrainAtkById(id)
return cfg.AtkAttributeCe or 0
end
function XPracticeConfigs.GetSimulateTrainAtkAtkAddPercent(id)
local cfg = GetSimulateTrainAtkById(id)
return cfg.AtkAddPercent or 0
end
function XPracticeConfigs.GetSimulateTrainAtkLength()
local cfg = SimulateTrainAtk
return #cfg or 0
end
--atk end
--hp
function XPracticeConfigs.GetSimulateTrainHpHpBuffId(id)
local cfg = GetSimulateTrainHpById(id)
return cfg.HpBuffId or 0
end
function XPracticeConfigs.GetSimulateTrainHpHpAttributeCe(id)
local cfg = GetSimulateTrainHpById(id)
return cfg.HpAttributeCe or 0
end
function XPracticeConfigs.GetSimulateTrainHpHpAddPercent(id)
local cfg = GetSimulateTrainHpById(id)
return cfg.HpAddPercent or 0
end
function XPracticeConfigs.GetSimulateTrainHpLength()
local cfg = SimulateTrainHp
return #cfg or 0
end
--hp end
--Monster start
function XPracticeConfigs.CheckSimulateTrainMonsterExist(id)
if not SimulateTrainMonster[id] then
return false
end
return true
end
function XPracticeConfigs.GetSimulateTrainMonsterTimeId(id)
local cfg = GetSimulateTrainMonsterById(id)
return cfg.TimeId
end
function XPracticeConfigs.GetSimulateTrainMonsterType(id)
local cfg = GetSimulateTrainMonsterById(id)
return cfg.Type or 0
end
function XPracticeConfigs.GetSimulateTrainMonsterStageId(id)
local cfg = GetSimulateTrainMonsterById(id)
return cfg.StageId or 0
end
function XPracticeConfigs.GetSimulateTrainMonsterNpcId(id)
local cfg = GetSimulateTrainMonsterById(id)
return cfg and cfg.NpcId or {}
end
function XPracticeConfigs.GetSimulateTrainMonsterStageName(id)
local cfg = GetSimulateTrainMonsterById(id)
return cfg.StageName or {}
end
function XPracticeConfigs.GetSimulateTrainMonsterMaxPeriod(id)
local cfg = GetSimulateTrainMonsterById(id)
local maxPeriod = 1
for i, v in pairs(cfg.PeriodBuffId) do
if i > maxPeriod then
maxPeriod = i
end
end
return maxPeriod
end
function XPracticeConfigs.GetSimulateTrainMonsterFirstRewardId(id)
local cfg = GetSimulateTrainMonsterById(id)
return cfg.FirstRewardId or 0
end
function XPracticeConfigs.GetSimulateTrainMonsterDefaultAtkLevel(id)
local cfg = GetSimulateTrainMonsterById(id)
return cfg.DefaultAtkLevel or 0
end
function XPracticeConfigs.GetSimulateTrainMonsterDefaultHpLevel(id)
local cfg = GetSimulateTrainMonsterById(id)
return cfg.DefaultHpLevel or 1
end
function XPracticeConfigs.GetSimulateTrainMonsterSortId(id)
local cfg = GetSimulateTrainMonsterById(id)
return cfg.SortId or 1
end
function XPracticeConfigs.GetSimulateTrainMonsterGroupId(id)
local cfg = GetSimulateTrainMonsterById(id)
return cfg.GroupId or 1
end
function XPracticeConfigs.GetSimulateTrainMonsterStageRatioCe(id)
local cfg = GetSimulateTrainMonsterById(id)
return cfg.StageRatioCe or {}
end
function XPracticeConfigs.GetSimulateTrainMonsterStageBasicCe(id)
local cfg = GetSimulateTrainMonsterById(id)
return cfg.StageBasicCe or {}
end
function XPracticeConfigs.GetSimulateTrainArchiveIdByStageId(stageId)
local id = XPracticeConfigs.GetSimulateTrainMonsterId(stageId)
return id or 0
end
function XPracticeConfigs.GetSimulateTrainNpcIdIdByStageId(stageId)
local id = XPracticeConfigs.GetSimulateTrainMonsterId(stageId)
if not id then
return
end
local npcIdList = XPracticeConfigs.GetSimulateTrainMonsterNpcId(id)
return npcIdList
end
function XPracticeConfigs.GetSimulateTrainMonsterStageNameByStageId(stageId, index)
local id = XPracticeConfigs.GetSimulateTrainMonsterId(stageId)
if not id then
return
end
local stageNameList = XPracticeConfigs.GetSimulateTrainMonsterStageName(id)
return stageNameList[index] or ""
end
function XPracticeConfigs.GetSimulateTrainMonsterId(stageId)
return SimulateTrainStageIdToMonsterIdDic[stageId]
end
--monster end
--region 赛利卡教学相关
-- characterId -> groupId
function XPracticeConfigs.GetGroupIdByCharacterId(characterId)
return PracticeCharacterId2GroupId[characterId]
end
-- groupId -> chapterId
function XPracticeConfigs.GetChapterIdByGroupId(groupId)
return PracticeChapterId2GroupId[groupId]
end
--endregion
--group start
function XPracticeConfigs.GetSimulateTrainGroupGroupName(id)
local cfg = GetSimulateTrainGroupById(id)
return cfg.GroupName or 0
end
function XPracticeConfigs.GetSimulateTrainGroupIds(chapterId)
local ids = {}
local insertIdDic = {}
local stageIdList = XPracticeConfigs.GetPracticeChapterStageIdById(chapterId)
local simulateTrainMonsterId
local groupId
for _, stageId in ipairs(stageIdList) do
simulateTrainMonsterId = XPracticeConfigs.GetSimulateTrainMonsterId(stageId)
groupId = XPracticeConfigs.GetSimulateTrainMonsterGroupId(simulateTrainMonsterId)
if GetSimulateTrainGroupById(groupId) and not insertIdDic[groupId] then
table.insert(ids, groupId)
insertIdDic[groupId] = true
end
end
return ids
end
--group end
---------------拟真boss end------------------------
--region PracticeGroup.tab
local function GetPracticeGroup(groupId)
local config = PracticeGroup[groupId]
if not config then
XLog.Error("XPracticeConfigs GetPracticeGroup error:配置不存在, groupId:" .. groupId .. ",path: " .. SHARE_PRACTICE_GROUP)
return
end
return config
end
function XPracticeConfigs.GetPracticeStageIdsByGroupId(groupId)
local config = GetPracticeGroup(groupId)
if config then
return config.StageIds
end
return nil
end
--endregion
--region PracticeGroupDetail.tab
local function GetPracticeGroupDetail(groupId)
local config = PracticeGroupDetail[groupId]
if not config then
XLog.Error("XPracticeConfigs GetPracticeGroupDetail error:配置不存在, groupId:" .. groupId .. ",path: " .. CLIENT_PRACTICE_GROUP_DETAIL)
return
end
return config
end
function XPracticeConfigs.GetPracticeGroupName(groupId)
local config = GetPracticeGroupDetail(groupId)
if config then
return config.Name
end
return ""
end
function XPracticeConfigs.GetPracticeGroupIcon(groupId)
local config = GetPracticeGroupDetail(groupId)
if config then
return config.Icon
end
return ""
end
function XPracticeConfigs.GetPracticeGroupBackGroundImage(groupId)
local config = GetPracticeGroupDetail(groupId)
if config then
return config.BackGroundImage
end
return ""
end
function XPracticeConfigs.GetPracticeGroupCharacterId(groupId)
local config = GetPracticeGroupDetail(groupId)
if config then
return config.CharacterId
end
return 0
end
function XPracticeConfigs.GetPracticeGroupPrefabName(groupId)
local config = GetPracticeGroupDetail(groupId)
if config then
return config.PrefabName
end
return ""
end
function XPracticeConfigs.GetPracticeGroupActivityTimeId(groupId)
local config = GetPracticeGroupDetail(groupId)
if config then
return config.ActivityTimeId
end
return 0
end
function XPracticeConfigs.GetPracticeGroupActivityCondition(groupId)
local config = GetPracticeGroupDetail(groupId)
if config then
return config.ActivityCondition
end
return nil
end
function XPracticeConfigs.GetPracticeGroupOpenCondition(groupId)
local config = GetPracticeGroupDetail(groupId)
if config then
return config.OpenCondition
end
return nil
end
--endregion