99 lines
3.3 KiB
Lua
99 lines
3.3 KiB
Lua
|
XDlcHuntSkillConfigs = XDlcHuntSkillConfigs or {}
|
||
|
|
||
|
---@type XConfig
|
||
|
local _ConfigSkill
|
||
|
|
||
|
---@type XConfig
|
||
|
local _ConfigSkillLevelEffect
|
||
|
|
||
|
---@type XConfig
|
||
|
local _ConfigSkillType
|
||
|
|
||
|
---@type XConfig
|
||
|
local _ConfigSkillGate
|
||
|
|
||
|
---@type XConfig
|
||
|
local _ConfigSkillTypeInfo
|
||
|
|
||
|
---@type XConfig
|
||
|
local _ConfigSkillUpgradeDes
|
||
|
|
||
|
---@type XConfig
|
||
|
local _ConfigSkillTeach
|
||
|
|
||
|
function XDlcHuntSkillConfigs.Init()
|
||
|
_ConfigSkillGate = XConfig.New("Client/DlcHunt/Character/Skill/DlcHuntSkillGate.tab", XTable.XTableDlcHuntSkillGate, "Id")
|
||
|
_ConfigSkillTypeInfo = XConfig.New("Client/DlcHunt/Character/Skill/DlcHuntSkillTypeInfo.tab", XTable.XTableDlcHuntSkillTypeInfo, "Type")
|
||
|
_ConfigSkillUpgradeDes = XConfig.New("Client/DlcHunt/Character/Skill/DlcHuntSkillUpgradeDes.tab", XTable.XTableDlcHuntSkillUpgradeDes, "Id")
|
||
|
_ConfigSkillTeach = XConfig.New("Client/DlcHunt/Character/Skill/DlcHuntSkillTeach.tab", XTable.XTableDlcHuntSkillTeach, "Id")
|
||
|
_ConfigSkill = XConfig.New("Share/DlcHunt/Character/Skill/DlcHuntCharacterSkill.tab", XTable.XTableDlcHuntCharacterSkill, "CharacterId")
|
||
|
_ConfigSkillLevelEffect = XConfig.New("Share/DlcHunt/Character/Skill/DlcHuntCharacterSkillLevelEffect.tab", XTable.XTableDlcHuntCharacterSkillLevelEffect, "Id")
|
||
|
_ConfigSkillType = XConfig.New("Share/DlcHunt/Character/Skill/DlcHuntCharacterSkillType.tab", XTable.XTableDlcHuntCharacterSkillType, "Id")
|
||
|
end
|
||
|
|
||
|
local _DescConfig = false
|
||
|
local function GetSkillDescConfig(skillId)
|
||
|
if not _DescConfig then
|
||
|
_DescConfig = {}
|
||
|
for _, config in pairs(_ConfigSkillUpgradeDes:GetConfigs()) do
|
||
|
local skillId = config.SkillId
|
||
|
_DescConfig[skillId] = config
|
||
|
end
|
||
|
end
|
||
|
return _DescConfig[skillId]
|
||
|
end
|
||
|
|
||
|
---@param character XDlcHuntCharacter
|
||
|
function XDlcHuntSkillConfigs.GetData4Display(character)
|
||
|
local characterId = character:GetCharacterId()
|
||
|
local skillList = _ConfigSkill:GetProperty(characterId, "SkillIds")
|
||
|
local posList = _ConfigSkill:GetProperty(characterId, "Pos")
|
||
|
|
||
|
local skillData = {}
|
||
|
|
||
|
-- 先分大类
|
||
|
local gateConfigs = _ConfigSkillGate:GetConfigs()
|
||
|
for i = 1, #gateConfigs do
|
||
|
local gate = gateConfigs[i]
|
||
|
skillData[i] = {
|
||
|
Name = gate.Name,
|
||
|
Icon = gate.Icon,
|
||
|
Skills = {}
|
||
|
}
|
||
|
end
|
||
|
|
||
|
-- 将技能塞进去
|
||
|
for i = 1, #skillList do
|
||
|
local skillId = skillList[i]
|
||
|
local descConfig = GetSkillDescConfig(skillId)
|
||
|
if descConfig then
|
||
|
local pos = posList[i]
|
||
|
|
||
|
local data = skillData[pos]
|
||
|
if data then
|
||
|
local list = data.Skills
|
||
|
--local type = _ConfigSkillType:GetProperty(skillId, "Type")
|
||
|
--local typeDesc = _ConfigSkillTypeInfo:GetProperty(type, "Name")
|
||
|
list[#list + 1] = {
|
||
|
Name = descConfig.Name,
|
||
|
Icon = descConfig.Icon,
|
||
|
Title = descConfig.Title,
|
||
|
BriefDes = descConfig.BriefDes,
|
||
|
SpecificDes = descConfig.SpecificDes,
|
||
|
TypeDes = descConfig.TypeDes,
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- 将空的大类移除
|
||
|
for i = #skillData, 1, -1 do
|
||
|
local data = skillData[i]
|
||
|
if #data.Skills == 0 then
|
||
|
table.remove(skillData, i)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return skillData
|
||
|
end
|