c1_lua/lua/app/userdata/talent/talent_data.lua
2025-09-05 16:41:43 +08:00

102 lines
1.9 KiB
Lua

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