------------------------------------------------ --作者: 杨全福 --日期: 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