local SummonData = class("SummonData", BaseData) function SummonData:ctor() self.data.isDirty = false end function SummonData:clear() DataManager:unregisterCrossDayFunc("SummonData") end function SummonData:setDirty() self.data.isDirty = not self.data.isDirty end function SummonData:initCrossDay() DataManager:registerCrossDayFunc("SummonData", function() self:setDirty() end) end function SummonData:init(summon) summon = summon or {} self.level = summon.level or 1 self.exp = summon.exp or 0 end function SummonData:getSummonLevel() return self.level end function SummonData:getSummonExp() return self.exp end function SummonData:getSummonConfig() return ConfigManager:getConfig("summon") end function SummonData:getSummonExpConfig() return ConfigManager:getConfig("summon_exp") end -- 读表获取宝箱消耗 function SummonData:getSummonCost(summonType) local cfgInfo = self:getSummonConfig()[summonType] return cfgInfo.item_cost, cfgInfo.cost end -- 读表获取宝箱经验 function SummonData:getSummonAddExp(summonType) local cfgInfo = self:getSummonConfig()[summonType] return cfgInfo.summon_exp end -- 读表获取召唤奖励 function SummonData:getSummonRewardByLv(summonType, level) level = level or self:getSummonLevel() local cfgInfo = self:getSummonConfig()[summonType] Logger.logHighlight("getSummonRewardByLv -- summonType:%s level:%s ",summonType,level) Logger.printTable(cfgInfo) if level == 1 then return cfgInfo.box_lv_base else return cfgInfo["box_lv_" .. tostring(level)] end end function SummonData:getSummonTotalRewardByLv(summonType, level) level = level or self:getSummonLevel() local rewards = {} for i = 1, level do local lvRewards = self:getSummonRewardByLv(summonType) for _, reward in ipairs(lvRewards) do table.insert(rewards, reward) end end rewards = GFunc.mergeRewards(rewards) return rewards end function SummonData:getSummonMaxLv() return #self:getSummonExpConfig() end -- 读表获取特定等级的最大经验值 function SummonData:getSummonMaxExp(level) level = level or self:getSummonLevel() local cfg = self:getSummonExpConfig() for lv, data in ipairs(cfg) do if lv == level then return data.exp or 0 end end return cfg[#cfg].exp or 0 end return SummonData