c1_lua/lua/app/userdata/summon/summon_data.lua
2023-05-23 16:37:01 +08:00

100 lines
2.4 KiB
Lua

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