Files
Main/Assets/GameAssets/Resources/Lua/Logic/Pet/PetInfo.lua
2025-01-25 04:38:09 +08:00

75 lines
2.1 KiB
Lua

------------------------------------------------
--作者: 杨全福
--日期: 2019-06-18
--文件: PetInfo.lua
--模块: PetInfo
--描述: 宠物数据
------------------------------------------------
local PetInfo = {
--id
ID = 0,
--配置数据
Cfg = nil,
--当前等级,出生为1阶
CurLevel = 1,
--当前等级配置数据
CurLevelCfg = nil,
--当前等级的属性
CurLevelPros = nil,
--下一级等级配置数据
NextLevelCfg = nil,
--激活属性
ActivePros = nil,
--当前总属性
CurAllPros = nil,
--下级增加的属性
NextAddPros = nil,
--是否满阶
IsFullDegree = false,
--技能激活数据
SkillActiveLevels = nil,
}
function PetInfo:New(cfg, level)
local _m = Utils.DeepCopy(self)
_m.ID = cfg.Id
_m.Cfg = cfg
_m.CurLevel = level
_m.CurLevelCfg = DataConfig.DataPetRank[_m.Cfg.Id * 1000 + _m.CurLevel]
_m.NextLevelCfg = DataConfig.DataPetRank[_m.Cfg.Id * 1000 + _m.CurLevel + 1]
_m.ActivePros = Utils.SplitStrByTableS(cfg.Attribute)
_m:CalculatePros()
_m.IsFullDegree = level >= cfg.FullDegress
_m.SkillActiveLevels = {}
--计算技能的激活等级
for i = 1, cfg.MaxDegree do
local _levelCfg = DataConfig.DataPetRank[cfg.Id * 1000 + i]
if _levelCfg ~= nil then
local _skillParam = Utils.SplitStrByTableS(_levelCfg.PetSkill, {';', '_'})
for j = 1, #_skillParam do
if _m.SkillActiveLevels[_skillParam[j][1]] == nil then
_m.SkillActiveLevels[_skillParam[j][1]] = {_skillParam[j][2], _levelCfg, i}
end
end
end
end
return _m
end
--计算当前属性
function PetInfo:CalculatePros()
self.CurLevelPros = Utils.SplitStrByTableS(self.CurLevelCfg.Attribute)
self.CurAllPros = Utils.MergePropTable(self.CurLevelPros, self.ActivePros)
if self.NextLevelCfg ~= nil then
local _nextPros = Utils.SplitStrByTableS(self.NextLevelCfg.Attribute)
self.NextAddPros = Utils.DecPropTable(_nextPros, self.CurLevelPros)
else
self.NextAddPros = nil
end
end
return PetInfo