local TalentData = class("TalentData", BaseData) local TalentCfg = ConfigManager:getConfig("talent") local PlayerExpCfg = ConfigManager:getConfig("player_exp") function TalentData:setDirty() self.data.isDirty = not self.data.isDirty end function TalentData:ctor() self.data.isDirty = false end function TalentData:init(data) data = data or GConst.EMPTY_TABLE self.stage = data.stage self.levels = data.levels or {} end function TalentData:clear() end function TalentData:getCfgList() return TalentCfg end function TalentData:getPlayerExpCfgList(stage) if stage then return PlayerExpCfg[stage] end return PlayerExpCfg end function TalentData:getStage() return self.stage end function TalentData:checkStage() local lv = DataManager.PlayerData:getLv() return lv >= self.stage, self.stage end function TalentData:getLevels(id) if id then return self.levels[id] or 0 end return self.levels end function TalentData:onUpgrade(data) self.upData = data self.stage = data.stage self.levels[data.id] = data.level self:setDirty() end function TalentData:getUpData() local data = self.upData self.upData = nil return data end --@region 属性 function TalentData:getAttrById(id) local cfg = TalentCfg[id] if not cfg then return {} end local lv = self:getLevels(id) local allAttr = {} local num = 0 if not cfg.attr then num = cfg.value else for i,v in ipairs(cfg.attr) do local attr = {} attr.type = v.type attr.num = v.num * lv table.insert(allAttr, attr) end end return allAttr, num end function TalentData:getAllAttr() local allAttr = {} for id = 1, #TalentCfg do local cfg = TalentCfg[id] local lv = self:getLevels(id) if cfg.attr then for _,v in ipairs(cfg.attr) do local attr = {} attr.type = v.type attr.num = v.num * lv table.insert(allAttr, attr) end end end return allAttr end --@endregion return TalentData