forked from endernon/PGRData
630 lines
No EOL
20 KiB
Lua
630 lines
No EOL
20 KiB
Lua
XPartnerConfigs = XPartnerConfigs or {}
|
||
|
||
local TABLE_PARTNER = "Share/Partner/Partner.tab"
|
||
local TABLE_PARTNER_LEVELUP_PATH = "Share/Partner/LevelUpTemplate"
|
||
local TABLE_PARTNER_BREAK_THROIGH = "Share/Partner/PartnerBreakThrough.tab"
|
||
local TABLE_PARTNER_QUALITY = "Share/Partner/PartnerQuality.tab"
|
||
local TABLE_PARTNER_SKILL = "Share/Partner/PartnerSkill.tab"
|
||
local TABLE_PARTNER_MAINSKILL_GROUP = "Share/Partner/PartnerMainSkillGroup.tab"
|
||
local TABLE_PARTNER_PASSIVESKILL_GROUP = "Share/Partner/PartnerPassiveSkillGroup.tab"
|
||
local TABLE_PARTNER_SKILLEFFECT = "Share/Partner/PartnerSkillEffect.tab"
|
||
local TABLE_PARTNER_SKILLINFO = "Client/Partner/PartnerSkillInfo.tab"
|
||
local TABLE_PARTNER_MODEL = "Client/Partner/PartnerModel.tab"
|
||
local TABLE_PARTNER_MODELCONTROL = "Client/Partner/PartnerModelControl.tab"
|
||
local TABLE_PARTNER_ITEM_SKIP = "Client/Partner/PartnerItemSkipId.tab"
|
||
local TABLE_PARTNER_UI_EFFECT = "Client/Partner/PartnerUiEffect.tab"
|
||
|
||
local PartnerTemplateCfg = {}
|
||
local PartnerBreakthroughCfg = {}
|
||
local PartnerQualityCfg = {}
|
||
local PartnerSkillCfg = {}
|
||
local PartnerMainSkillGroupCfg = {}
|
||
local PartnerPassiveSkillGroupCfg = {}
|
||
local PartnerSkillEffectCfg = {}
|
||
local PartnerSkillInfoCfg = {}
|
||
local PartnerModelCfg = {}
|
||
local PartnerModelControlCfg = {}
|
||
local PartnerItemSkipIdCfg = {}
|
||
local PartnerUiEffectCfg = nil
|
||
|
||
local PartnerBreakthroughDic = {}
|
||
local PartnerQualityDic = {}
|
||
local PartnerSkillEffectDic = {}
|
||
local PartnerSkillInfoDic = {}
|
||
local PartnerMainSkillGroupDic = {}
|
||
local PartnerPassiveSkillGroupDic = {}
|
||
local LevelUpTemplates = {}
|
||
local PartnerModelControlDic = {}
|
||
local PartnerUiEffectDic = nil
|
||
|
||
XPartnerConfigs.SkillType = {
|
||
MainSkill = 1,
|
||
PassiveSkill = 2,
|
||
}
|
||
|
||
XPartnerConfigs.SkillElement = {
|
||
Physics = 1,
|
||
Fire = 2,
|
||
Ice = 3,
|
||
Thunder = 4,
|
||
Dark = 5,
|
||
}
|
||
|
||
XPartnerConfigs.SortType = {
|
||
Ability = 1,--战力
|
||
Quality = 2,--品质
|
||
Breakthrough = 3,--突破
|
||
Level = 4,--等级
|
||
SkillLevel = 5,--技能等级
|
||
Lock = 6,--上锁
|
||
Priority = 7,--优先级
|
||
Stack = 8,--堆叠
|
||
CanCompose = 9,--可以合成
|
||
Carry = 10,--是否佩戴
|
||
}
|
||
|
||
XPartnerConfigs.MainUiState = {
|
||
None = 0,
|
||
Overview = 1,--总览
|
||
Compose = 2,--合成
|
||
Property = 3,--养成
|
||
}
|
||
|
||
XPartnerConfigs.PartnerState = {
|
||
Standby = 1,--待机模式
|
||
Combat = 2,--战斗模式
|
||
}
|
||
|
||
XPartnerConfigs.PartnerType = {
|
||
All = 0,
|
||
Normal = 1,
|
||
Isomer = 2,
|
||
}
|
||
|
||
XPartnerConfigs.CameraType = {
|
||
Standby = 1,
|
||
Combat = 2,
|
||
Overview = 2,
|
||
Compose = 3,
|
||
Level = 4,
|
||
Quality = 5,
|
||
Skill = 6,
|
||
Story = 7,
|
||
StandbyNoSelect = 8,
|
||
CombatNoSelect = 9,
|
||
}
|
||
|
||
XPartnerConfigs.DataSyncType = {
|
||
Obtain = 1,
|
||
Skill = 2,
|
||
Carry = 3,
|
||
UnlockSkillGroup = 4,
|
||
QualityUp = 5,
|
||
}
|
||
|
||
XPartnerConfigs.AttrSortType = {
|
||
XNpcAttribType.AttackNormal,
|
||
}
|
||
|
||
XPartnerConfigs.BagShowType = {
|
||
View = 1,
|
||
Decompose = 2,
|
||
}
|
||
|
||
XPartnerConfigs.BagSortType = {
|
||
[0] = XPartnerConfigs.SortType.Quality,
|
||
[1] = XPartnerConfigs.SortType.Breakthrough,
|
||
[2] = XPartnerConfigs.SortType.Level,
|
||
}
|
||
|
||
XPartnerConfigs.QualityString = {
|
||
[1] = "B",
|
||
[2] = "A",
|
||
[3] = "S",
|
||
[4] = "SS",
|
||
[5] = "SSS",
|
||
[6] = "SSS+",
|
||
}
|
||
|
||
XPartnerConfigs.PriorityTabType = {
|
||
Level = 1,
|
||
Quality = 2,
|
||
Skill = 3,
|
||
Story = 4,
|
||
}
|
||
|
||
local PartnerBreakThroughIcon = {
|
||
[0] = CS.XGame.ClientConfig:GetString("PartnerBreakThrough0"),
|
||
[1] = CS.XGame.ClientConfig:GetString("PartnerBreakThrough1"),
|
||
[2] = CS.XGame.ClientConfig:GetString("PartnerBreakThrough2"),
|
||
[3] = CS.XGame.ClientConfig:GetString("PartnerBreakThrough3"),
|
||
}
|
||
|
||
local QualityBgPath = {
|
||
CS.XGame.ClientConfig:GetString("CommonBagGold"),
|
||
CS.XGame.ClientConfig:GetString("CommonBagGold"),
|
||
CS.XGame.ClientConfig:GetString("CommonBagRed"),
|
||
CS.XGame.ClientConfig:GetString("CommonBagRed"),
|
||
CS.XGame.ClientConfig:GetString("CommonBagRed"),
|
||
CS.XGame.ClientConfig:GetString("CommonBagRed"),
|
||
}
|
||
|
||
XPartnerConfigs.DefaultNodeName = "Self_ModelRoot"
|
||
|
||
XPartnerConfigs.MainSkillCount = 1
|
||
|
||
XPartnerConfigs.PassiveSkillCount = 5
|
||
|
||
|
||
function XPartnerConfigs.Init()
|
||
PartnerTemplateCfg = XTableManager.ReadByIntKey(TABLE_PARTNER, XTable.XTablePartner, "Id")
|
||
PartnerBreakthroughCfg = XTableManager.ReadByIntKey(TABLE_PARTNER_BREAK_THROIGH, XTable.XTablePartnerBreakThrough, "Id")
|
||
PartnerQualityCfg = XTableManager.ReadByIntKey(TABLE_PARTNER_QUALITY, XTable.XTablePartnerQuality, "Id")
|
||
PartnerSkillCfg = XTableManager.ReadByIntKey(TABLE_PARTNER_SKILL, XTable.XTablePartnerSkill, "PartnerId")
|
||
PartnerMainSkillGroupCfg = XTableManager.ReadByIntKey(TABLE_PARTNER_MAINSKILL_GROUP, XTable.XTablePartnerMainSkillGroup, "Id")
|
||
PartnerPassiveSkillGroupCfg = XTableManager.ReadByIntKey(TABLE_PARTNER_PASSIVESKILL_GROUP, XTable.XTablePartnerPassiveSkillGroup, "Id")
|
||
PartnerSkillEffectCfg = XTableManager.ReadByIntKey(TABLE_PARTNER_SKILLEFFECT, XTable.XTablePartnerSkillEffect, "Id")
|
||
PartnerSkillInfoCfg = XTableManager.ReadByIntKey(TABLE_PARTNER_SKILLINFO, XTable.XTablePartnerSkillInfo, "Id")
|
||
PartnerModelCfg = XTableManager.ReadByIntKey(TABLE_PARTNER_MODEL, XTable.XTablePartnerModel, "Id")
|
||
PartnerModelControlCfg = XTableManager.ReadByIntKey(TABLE_PARTNER_MODELCONTROL, XTable.XTablePartnerModelControl, "Id")
|
||
PartnerItemSkipIdCfg = XTableManager.ReadByIntKey(TABLE_PARTNER_ITEM_SKIP, XTable.XTablePartnerItemSkipId, "PartnerId")
|
||
|
||
local paths = CS.XTableManager.GetPaths(TABLE_PARTNER_LEVELUP_PATH)
|
||
XTool.LoopCollection(paths, function(path)
|
||
local key = tonumber(XTool.GetFileNameWithoutExtension(path))
|
||
LevelUpTemplates[key] = XTableManager.ReadByIntKey(path, XTable.XTablePartnerLevelUp, "Level")
|
||
end)
|
||
|
||
XPartnerConfigs.CreatePartnerBreakthroughDic()
|
||
XPartnerConfigs.CreatePartnerQualityDic()
|
||
XPartnerConfigs.CreatePartnerSkillEffectDic()
|
||
XPartnerConfigs.CreatePartnerSkillInfoDic()
|
||
XPartnerConfigs.CreateMainSkillGroupDic()
|
||
XPartnerConfigs.CreatePassiveSkillGroupDic()
|
||
XPartnerConfigs.CreatePartnerModelControlDic()
|
||
end
|
||
|
||
function XPartnerConfigs.CreatePartnerBreakthroughDic()
|
||
PartnerBreakthroughDic = {}
|
||
for _,breakThrough in pairs(PartnerBreakthroughCfg) do
|
||
PartnerBreakthroughDic[breakThrough.PartnerId] =
|
||
PartnerBreakthroughDic[breakThrough.PartnerId] or {}
|
||
|
||
PartnerBreakthroughDic[breakThrough.PartnerId][breakThrough.BreakTimes] =
|
||
PartnerBreakthroughDic[breakThrough.PartnerId][breakThrough.BreakTimes] or breakThrough
|
||
end
|
||
end
|
||
|
||
function XPartnerConfigs.CreatePartnerQualityDic()
|
||
PartnerQualityDic = {}
|
||
for _,qualityInfo in pairs(PartnerQualityCfg) do
|
||
PartnerQualityDic[qualityInfo.PartnerId] =
|
||
PartnerQualityDic[qualityInfo.PartnerId] or {}
|
||
|
||
PartnerQualityDic[qualityInfo.PartnerId][qualityInfo.Quality] =
|
||
PartnerQualityDic[qualityInfo.PartnerId][qualityInfo.Quality] or qualityInfo
|
||
end
|
||
end
|
||
|
||
function XPartnerConfigs.CreatePartnerSkillEffectDic()
|
||
PartnerSkillEffectDic = {}
|
||
for _,effect in pairs(PartnerSkillEffectCfg) do
|
||
PartnerSkillEffectDic[effect.SkillId] =
|
||
PartnerSkillEffectDic[effect.SkillId] or {}
|
||
|
||
PartnerSkillEffectDic[effect.SkillId][effect.Level] =
|
||
PartnerSkillEffectDic[effect.SkillId][effect.Level] or effect
|
||
end
|
||
end
|
||
|
||
function XPartnerConfigs.CreatePartnerSkillInfoDic()
|
||
PartnerSkillInfoDic = {}
|
||
for _,Info in pairs(PartnerSkillInfoCfg) do
|
||
PartnerSkillInfoDic[Info.SkillId] =
|
||
PartnerSkillInfoDic[Info.SkillId] or {}
|
||
|
||
PartnerSkillInfoDic[Info.SkillId][Info.Level] =
|
||
PartnerSkillInfoDic[Info.SkillId][Info.Level] or Info
|
||
end
|
||
end
|
||
|
||
function XPartnerConfigs.CreateMainSkillGroupDic()
|
||
PartnerMainSkillGroupDic = {}
|
||
for _,groupInfo in pairs(PartnerMainSkillGroupCfg) do
|
||
for _,skillId in pairs(groupInfo.SkillId) do
|
||
if not PartnerMainSkillGroupDic[skillId] then
|
||
PartnerMainSkillGroupDic[skillId] = groupInfo.Id
|
||
else
|
||
XLog.Error("skillId id Reuse in tab:"..TABLE_PARTNER_MAINSKILL_GROUP)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function XPartnerConfigs.CreatePassiveSkillGroupDic()
|
||
PartnerPassiveSkillGroupDic = {}
|
||
for _,groupInfo in pairs(PartnerPassiveSkillGroupCfg) do
|
||
for _,skillId in pairs(groupInfo.SkillId) do
|
||
if not PartnerPassiveSkillGroupDic[skillId] then
|
||
PartnerPassiveSkillGroupDic[skillId] = groupInfo.Id
|
||
else
|
||
XLog.Error("skillId id Reuse in tab:"..TABLE_PARTNER_PASSIVESKILL_GROUP)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function XPartnerConfigs.CreatePartnerModelControlDic()
|
||
PartnerModelControlDic = {}
|
||
for _,modelControl in pairs(PartnerModelControlCfg) do
|
||
PartnerModelControlDic[modelControl.Model] = PartnerModelControlDic[modelControl.Model] or {}
|
||
if string.IsNilOrEmpty(modelControl.NodeName) then
|
||
PartnerModelControlDic[modelControl.Model][XPartnerConfigs.DefaultNodeName] = modelControl
|
||
else
|
||
PartnerModelControlDic[modelControl.Model][modelControl.NodeName] = modelControl
|
||
end
|
||
|
||
end
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerTemplateCfg()
|
||
return PartnerTemplateCfg
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerBreakthroughCfg()
|
||
return PartnerBreakthroughCfg
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerQualityCfg()
|
||
return PartnerQualityCfg
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerTemplateById(id)
|
||
if not PartnerTemplateCfg[id] then
|
||
XLog.Error("id is not exist in "..TABLE_PARTNER.." id = " .. id)
|
||
return
|
||
end
|
||
return PartnerTemplateCfg[id]
|
||
end
|
||
|
||
function XPartnerConfigs.GeQualityBgPath(quality)
|
||
if not quality then
|
||
XLog.Error("XPartnerConfigs.GeQualityBgPath 函数错误: 参数quality不能为空")
|
||
return
|
||
end
|
||
return QualityBgPath[quality]
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerTemplateName(id)
|
||
return XPartnerConfigs.GetPartnerTemplateById(id).Name
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerTemplateIcon(id)
|
||
return XPartnerConfigs.GetPartnerTemplateById(id).Icon
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerTemplateLiHuiPath(id)
|
||
return XPartnerConfigs.GetPartnerTemplateById(id).LiHuiPath
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerTemplateQuality(id)
|
||
return XPartnerConfigs.GetPartnerTemplateById(id).InitQuality
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerTemplateGoodsDesc(id)
|
||
return XPartnerConfigs.GetPartnerTemplateById(id).GoodsDesc
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerTemplateGoodsWorldDesc(id)
|
||
return XPartnerConfigs.GetPartnerTemplateById(id).GoodsWorldDesc
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerSkillById(id)
|
||
if not PartnerSkillCfg[id] then
|
||
XLog.Error("id is not exist in "..TABLE_PARTNER_SKILL.." id = " .. id)
|
||
return
|
||
end
|
||
return PartnerSkillCfg[id]
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerMainSkillGroupById(id)
|
||
if not PartnerMainSkillGroupCfg[id] then
|
||
XLog.Error("id is not exist in "..TABLE_PARTNER_MAINSKILL_GROUP.." id = " .. id)
|
||
return
|
||
end
|
||
return PartnerMainSkillGroupCfg[id]
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerPassiveSkillGroupById(id)
|
||
if not PartnerPassiveSkillGroupCfg[id] then
|
||
XLog.Error("id is not exist in "..TABLE_PARTNER_PASSIVESKILL_GROUP.." id = " .. id)
|
||
return
|
||
end
|
||
return PartnerPassiveSkillGroupCfg[id]
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerBreakthroughByIdAndNum(partnerId, breakTimes)
|
||
if not PartnerBreakthroughDic[partnerId] then
|
||
XLog.Error("id is not exist in "..TABLE_PARTNER_BREAK_THROIGH.." id = " .. partnerId)
|
||
return
|
||
end
|
||
if not PartnerBreakthroughDic[partnerId][breakTimes] then
|
||
XLog.Error("breakTimes is not exist in "..TABLE_PARTNER_BREAK_THROIGH.." breakTimes = " .. breakTimes)
|
||
return
|
||
end
|
||
return PartnerBreakthroughDic[partnerId][breakTimes]
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerBreakthroughLimit(partnerId)
|
||
if not PartnerBreakthroughDic[partnerId] then
|
||
XLog.Error("id is not exist in "..TABLE_PARTNER_BREAK_THROIGH.." id = " .. partnerId)
|
||
return
|
||
end
|
||
local tmpMax = 0
|
||
for breakTimes,_ in pairs(PartnerBreakthroughDic[partnerId]) do
|
||
if breakTimes > tmpMax then
|
||
tmpMax = breakTimes
|
||
end
|
||
end
|
||
return tmpMax
|
||
end
|
||
|
||
function XPartnerConfigs.GePartnerQualityByIdAndNum(partnerId, quality)
|
||
if not PartnerQualityDic[partnerId] then
|
||
XLog.Error("id is not exist in "..TABLE_PARTNER_QUALITY.." id = " .. partnerId)
|
||
return
|
||
end
|
||
if not PartnerQualityDic[partnerId][quality] then
|
||
XLog.Error("quality is not exist in "..TABLE_PARTNER_QUALITY.." quality = " .. quality)
|
||
return
|
||
end
|
||
return PartnerQualityDic[partnerId][quality]
|
||
end
|
||
|
||
function XPartnerConfigs.GetQualityLimit(partnerId)
|
||
if not PartnerQualityDic[partnerId] then
|
||
XLog.Error("id is not exist in "..TABLE_PARTNER_QUALITY.." id = " .. partnerId)
|
||
return
|
||
end
|
||
local tmpMax = 0
|
||
for quality,_ in pairs(PartnerQualityDic[partnerId]) do
|
||
if quality > tmpMax then
|
||
tmpMax = quality
|
||
end
|
||
end
|
||
return tmpMax
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerSkillEffectByIdAndLevel(skillId, level)
|
||
if not PartnerSkillEffectDic[skillId] then
|
||
XLog.Error("id is not exist in "..TABLE_PARTNER_SKILLEFFECT.." id = " .. skillId)
|
||
return
|
||
end
|
||
if not PartnerSkillEffectDic[skillId][level] then
|
||
XLog.Error("level is not exist in "..TABLE_PARTNER_SKILLEFFECT.." level = " .. level)
|
||
return
|
||
end
|
||
return PartnerSkillEffectDic[skillId][level]
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerSkillInfoByIdAndLevel(skillId, level)
|
||
if not PartnerSkillInfoDic[skillId] then
|
||
XLog.Error("id is not exist in "..TABLE_PARTNER_SKILLINFO.." id = " .. skillId)
|
||
return
|
||
end
|
||
if not PartnerSkillInfoDic[skillId][level] then
|
||
XLog.Error("level is not exist in "..TABLE_PARTNER_SKILLINFO.." level = " .. level)
|
||
return
|
||
end
|
||
return PartnerSkillInfoDic[skillId][level]
|
||
end
|
||
|
||
|
||
function XPartnerConfigs.GetMainSkillGroupById(skillId)
|
||
if not PartnerMainSkillGroupDic[skillId] then
|
||
XLog.Error("skillId is not exist in "..TABLE_PARTNER_MAINSKILL_GROUP.." skillId = " .. skillId)
|
||
return
|
||
end
|
||
return PartnerMainSkillGroupDic[skillId]
|
||
end
|
||
|
||
function XPartnerConfigs.GetPassiveSkillGroupById(skillId)
|
||
if not PartnerPassiveSkillGroupDic[skillId] then
|
||
XLog.Error("skillId is not exist in "..TABLE_PARTNER_PASSIVESKILL_GROUP.." skillId = " .. skillId)
|
||
return
|
||
end
|
||
return PartnerPassiveSkillGroupDic[skillId]
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerSkillLevelLimit(skillId)
|
||
if not PartnerSkillEffectDic[skillId] then
|
||
XLog.Error("id is not exist in "..TABLE_PARTNER_SKILLEFFECT.." id = " .. skillId)
|
||
return
|
||
end
|
||
local tmpMax = 0
|
||
for skillLevel,_ in pairs(PartnerSkillEffectDic[skillId]) do
|
||
if skillLevel > tmpMax then
|
||
tmpMax = skillLevel
|
||
end
|
||
end
|
||
return tmpMax
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerModelControlsByModel(model)
|
||
if not PartnerModelControlDic[model] then
|
||
return
|
||
end
|
||
return PartnerModelControlDic[model]
|
||
end
|
||
|
||
---@param id number 辅助机Id
|
||
---@alias XPartnerModelConfig { CToSAnime:string, CToSEffect:string, CToSVoice:number, CombatBornAnime:string, CombatBornAnime:string, CombatModel:string, Id:number, Name:string, SToCAnime:string, SToCVoice:number, StandbyBornAnime:string, StandbyModel:string }
|
||
---@return XPartnerModelConfig 辅助机配置
|
||
function XPartnerConfigs.GetPartnerModelById(id)
|
||
if not PartnerModelCfg[id] then
|
||
XLog.Error("id is not exist in "..TABLE_PARTNER_MODEL.." id = " .. id)
|
||
return {}
|
||
end
|
||
return PartnerModelCfg[id]
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerBreakThroughIcon(breakthroughTimes)
|
||
local icon = PartnerBreakThroughIcon[breakthroughTimes]
|
||
if not icon then
|
||
XLog.Error("XPartnerConfigs.PartnerBreakThroughIcon调用错误,得到的icon为空,原因:检查breakthroughTimes:" .. breakthroughTimes .. "和PartnerBreakThroughIcon的Index不匹配")
|
||
return
|
||
end
|
||
return icon
|
||
end
|
||
|
||
---
|
||
--- 获取'id'伙伴待机模型
|
||
function XPartnerConfigs.GetPartnerModelStandbyModel(id)
|
||
return XPartnerConfigs.GetPartnerModelById(id).StandbyModel
|
||
end
|
||
|
||
---
|
||
--- 获取'id'伙伴战斗模型
|
||
function XPartnerConfigs.GetPartnerModelCombatModel(id)
|
||
return XPartnerConfigs.GetPartnerModelById(id).CombatModel
|
||
end
|
||
|
||
---
|
||
--- 获取'id'伙伴 待机->战斗 动画
|
||
function XPartnerConfigs.GetPartnerModelSToCAnime(id)
|
||
return XPartnerConfigs.GetPartnerModelById(id).SToCAnime
|
||
end
|
||
|
||
---
|
||
--- 获取'id'伙伴战斗模型出生动画
|
||
function XPartnerConfigs.GetPartnerModelCombatBornAnime(id)
|
||
return XPartnerConfigs.GetPartnerModelById(id).CombatBornAnime
|
||
end
|
||
|
||
---
|
||
--- 获取'id'伙伴 待机->战斗 音效
|
||
function XPartnerConfigs.GetPartnerModelSToCVoice(id)
|
||
return XPartnerConfigs.GetPartnerModelById(id).SToCVoice
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerLevelUpTemplateByIdAndLevel(id,level)
|
||
if not LevelUpTemplates[id] then
|
||
XLog.Error("id is not exist in "..TABLE_PARTNER_LEVELUP_PATH.." id = " .. id)
|
||
return
|
||
end
|
||
if not LevelUpTemplates[id][level] then
|
||
XLog.Error("level is not exist in "..TABLE_PARTNER_LEVELUP_PATH.." level = " .. level)
|
||
return
|
||
end
|
||
return LevelUpTemplates[id][level]
|
||
end
|
||
|
||
function XPartnerConfigs.GetPartnerItemSkipById(id)
|
||
if not PartnerItemSkipIdCfg[id] then
|
||
XLog.Error("id is not exist in "..TABLE_PARTNER_ITEM_SKIP.." id = " .. id)
|
||
return
|
||
end
|
||
return PartnerItemSkipIdCfg[id]
|
||
end
|
||
|
||
--region PartnerUiEffect相关
|
||
---@class ModeTypeEnum
|
||
---@field StandbyModel string
|
||
---@field CombatModel string
|
||
local ModeTypeEnum = enum({
|
||
StandbyModel = "StandbyModel",
|
||
CombatModel = "CombatModel"
|
||
})
|
||
|
||
---@class EffectTypeEnum
|
||
---@field Disappear string
|
||
---@field Appear string
|
||
---@field Loop string
|
||
local EffectTypeEnum = enum({
|
||
Disappear = "Disappear",
|
||
Appear = "Appear",
|
||
Loop = "Loop"
|
||
})
|
||
|
||
---@class EffectParentNameEnum
|
||
---@field ModelOnEffect string
|
||
---@field ModelOffEffect string
|
||
---@field ModelLoopEffect string
|
||
local EffectParentNameEnum = enum({
|
||
ModelOnEffect = "ModelOnEffect",
|
||
ModelOffEffect = "ModelOffEffect",
|
||
ModelLoopEffect = "ModelLoopEffect"
|
||
})
|
||
|
||
local function GetPartnerUiEffectCfgs()
|
||
if not PartnerUiEffectCfg then
|
||
PartnerUiEffectCfg = XTableManager.ReadByIntKey(TABLE_PARTNER_UI_EFFECT, XTable.XTablePartnerUiEffect, "Id")
|
||
end
|
||
|
||
return PartnerUiEffectCfg
|
||
end
|
||
|
||
local function GetPartnerUiEffectDic()
|
||
if not PartnerUiEffectDic then
|
||
PartnerUiEffectDic = {}
|
||
local configs = GetPartnerUiEffectCfgs()
|
||
|
||
for _, config in pairs(configs) do
|
||
local modelId = nil
|
||
local effectRoot = {
|
||
BoneRootName = config.EffectRootName,
|
||
EffectPath = config.EffectPath
|
||
}
|
||
|
||
if config.ModelType == ModeTypeEnum.StandbyModel then
|
||
modelId = PartnerModelCfg[config.PartnerId].StandbyModel
|
||
elseif config.ModelType == ModeTypeEnum.CombatModel then
|
||
modelId = PartnerModelCfg[config.PartnerId].CombatModel
|
||
end
|
||
|
||
PartnerUiEffectDic[modelId] = PartnerUiEffectDic[modelId] or {}
|
||
|
||
if config.EffectType == EffectTypeEnum.Disappear then
|
||
PartnerUiEffectDic[modelId][EffectParentNameEnum.ModelOffEffect] = effectRoot
|
||
elseif config.EffectType == EffectTypeEnum.Appear then
|
||
PartnerUiEffectDic[modelId][EffectParentNameEnum.ModelOnEffect] = effectRoot
|
||
elseif config.EffectType == EffectTypeEnum.Loop then
|
||
PartnerUiEffectDic[modelId][EffectParentNameEnum.ModelLoopEffect] = effectRoot
|
||
end
|
||
end
|
||
end
|
||
|
||
return PartnerUiEffectDic
|
||
end
|
||
|
||
---@type EffectParentNameEnum
|
||
XPartnerConfigs.EffectParentName = EffectParentNameEnum
|
||
|
||
---获取辅助机特效
|
||
---@param modelName string 辅助机模型(来自【PartnerModel.tab】StandbyModel/CombatModel字段)
|
||
---@param effectType string XPartnerConfigs.EffectParentName枚举
|
||
---@alias XEffectData { BoneRootName:string, EffectPath:string[] }
|
||
---@return XEffectData
|
||
function XPartnerConfigs.GetPartnerUiEffect(modelName, effectType)
|
||
local partnerUiEffectDic = GetPartnerUiEffectDic()
|
||
|
||
if not partnerUiEffectDic then
|
||
XLog.Error("PartnerUiEffectDic为空!请检查配置表PartnerUiEffect.tab是否为空。(配置表路径:" .. TABLE_PARTNER_UI_EFFECT .. ")")
|
||
return
|
||
end
|
||
|
||
local effectTypeDic = partnerUiEffectDic[modelName]
|
||
|
||
if not effectTypeDic then
|
||
return
|
||
end
|
||
|
||
local effectData = effectTypeDic[effectType]
|
||
|
||
if not effectData then
|
||
return
|
||
end
|
||
|
||
return effectData
|
||
end
|
||
--endregion |