Files
Main/Assets/GameAssets/Resources/Lua/Logic/XianPo/XianPoData.lua

131 lines
6.0 KiB
Lua
Raw Normal View History

2025-01-25 04:38:09 +08:00
------------------------------------------------
--作者: 陈宇
--日期: 2019-07-19
--文件: XianPoData.lua
--模块: XianPoData
--描述: 仙魄数据类
------------------------------------------------
local XianPoData = {
Uid = 0, --仙魄的uid
Level = 0, --该仙魄的等级
Exp = 0, --该仙魄的经验
Location = 0, --该仙魄的位置
CfgId = 0, --该仙魄的配置表id
Name = "", --名字
Icon = 0, --图标
Quality = 0, --品质等级,(1蓝,2紫,3金,4红)
MaxLevel = 0, --最大等级
CanInlayLocationList = List:New(), --能够镶嵌的格子
BaseAttrDic = Dictionary:New(), --基础属性字典
BaseAddAttrDic = Dictionary:New(), --每级增加的属性字典
TotalAddAttrDic = Dictionary:New(), --该仙魄总的增加的属性
NextLvTotalAddAttrDic = Dictionary:New(), --该仙魄下一级总的增加的属性
GetConditionType = 35, --获取该仙魄所需条件的类型functionVariable表中的类型
GetConditionValue = 0, --获取该仙魄所需条件的值
MutexIdList = List:New(), --和该仙魄互斥的仙魄id列表
BaseDecompositionExp = 0, --基础分解经验
Typ = 0, --仙魄类型
TypeName = "", --仙魄类型1属性仙魄2经验仙魄
Type2 = 0, --区分仙魄的类型,用户仙魄装备和替换时的互斥
SortId = 0, --排序ID
Star = 0,
}
function XianPoData:New()
local _m = Utils.DeepCopy(self)
return _m
end
function XianPoData:SetAllData(data)
self.Uid = data.uid
self.Level = data.level
self.Exp = data.exp
self.Location = data.location
self.CfgId = data.itemId
local _cfg = DataConfig.DataImmortalSoulAttribute[self.CfgId]
if _cfg then
self.Star = _cfg.Star
self.Name = _cfg.Name
self.Icon = _cfg.Icon
self.Quality = _cfg.Quality
if _cfg.LevelMax and _cfg.LevelMax ~= "" then
self.MaxLevel = _cfg.LevelMax
end
if _cfg.Grid ~= "" then
self.CanInlayLocationList = Utils.SplitNumber(_cfg.Grid, "_")
end
--计算基础属性
if _cfg.LevelMax and _cfg.LevelMax ~= "" then
local _baseAttrList = Utils.SplitStrByTableS(_cfg.DemandValue)
local _percentList = Utils.SplitStrByTableS(_cfg.DemandValuePercent)
if _percentList ~= nil then
for i = 1, #_percentList do
table.insert( _baseAttrList, _percentList[i] )
end
end
for i=1,#_baseAttrList do
if not self.BaseAttrDic:ContainsKey(_baseAttrList[i][1]) then
self.BaseAttrDic:Add(_baseAttrList[i][1], _baseAttrList[i][2])
end
if not self.TotalAddAttrDic:ContainsKey(_baseAttrList[i][1]) then
self.TotalAddAttrDic:Add(_baseAttrList[i][1], _baseAttrList[i][2])
end
end
--计算每级增加的属性和总属性
local _baseAddAttrList = Utils.SplitStrByTableS(_cfg.BasicAttributes)
local _baseAddAttrListPercent = Utils.SplitStrByTableS(_cfg.BasicAttributesPercent)
if _baseAddAttrListPercent ~= nil then
for i = 1, #_baseAddAttrListPercent do
table.insert( _baseAddAttrList, _baseAddAttrListPercent[i] )
end
end
for i=1,#_baseAddAttrList do
if not self.BaseAddAttrDic:ContainsKey(_baseAddAttrList[i][1]) then
self.BaseAddAttrDic:Add(_baseAddAttrList[i][1], _baseAddAttrList[i][2])
end
if self.TotalAddAttrDic:ContainsKey(_baseAddAttrList[i][1]) then
local _value = self.TotalAddAttrDic[_baseAddAttrList[i][1]]
--刚获得的仙魄默认是1级
self.TotalAddAttrDic[_baseAddAttrList[i][1]] = _value + _baseAddAttrList[i][2] * (self.Level - 1)
end
end
--计算下一级增加的属性
self.TotalAddAttrDic:Foreach(
function(key, value)
if not self.NextLvTotalAddAttrDic:ContainsKey(key) then
self.NextLvTotalAddAttrDic:Add(key, value)
end
end
)
if self.Level < self.MaxLevel then
for i=1,#_baseAddAttrList do
if self.NextLvTotalAddAttrDic:ContainsKey(_baseAddAttrList[i][1]) then
local _value = self.NextLvTotalAddAttrDic[_baseAddAttrList[i][1]]
self.NextLvTotalAddAttrDic[_baseAddAttrList[i][1]] = _value + _baseAddAttrList[i][2]
end
end
end
end
if _cfg.ExchangeConditions ~= "" then
local _condition = Utils.SplitNumber(_cfg.ExchangeConditions, "_")
self.GetConditionType = _condition[1]
self.GetConditionValue = _condition[2]
end
if _cfg.ExclusiveID ~= "" then
self.MutexIdList = Utils.SplitNumber(_cfg.ExclusiveID, "_")
end
self.BaseDecompositionExp = _cfg.Exp
self.Typ = _cfg.Type
if _cfg.Type == 1 then
self.TypeName = DataConfig.DataMessageString.Get("PropertyXianPo")
elseif _cfg.Type == 2 then
self.TypeName = DataConfig.DataMessageString.Get("PropertyExp")
elseif _cfg.Type == 3 then
self.TypeName = DataConfig.DataMessageString.Get("PropertyXianPo")
end
self.Type2 = _cfg.ExclusiveID
end
end
return XianPoData