59 lines
1.6 KiB
Lua
59 lines
1.6 KiB
Lua
local HeroEntity = require "app/userdata/hero/hero_entity_other"
|
|
local HeroDataOther = class("HeroDataOther", BaseData)
|
|
|
|
function HeroDataOther:ctor()
|
|
self.allAtkpAttr = {}
|
|
self.allAtkpAttrByHero = {}
|
|
self.allAtkpAttrByTalent = {}
|
|
end
|
|
|
|
function HeroDataOther:clear()
|
|
self.allAtkpAttr = {}
|
|
self.allAtkpAttrByHero = {}
|
|
self.allAtkpAttrByTalent = {}
|
|
end
|
|
|
|
function HeroDataOther:getEntity(heroStruct)
|
|
return HeroEntity:create(heroStruct.id, heroStruct.level, heroStruct.skin, heroStruct.star)
|
|
end
|
|
|
|
function HeroDataOther:getMatchType(heroId)
|
|
return DataManager.HeroData:getHeroConfig(heroId).position
|
|
end
|
|
|
|
-- region 属性相关
|
|
function HeroDataOther:getAttrByMatchType(matchType, attrType)
|
|
self.allAtkpAttr[matchType] = self.allAtkpAttr[matchType] or {}
|
|
return self.allAtkpAttr[matchType][attrType] or 0
|
|
end
|
|
|
|
function HeroDataOther:setHeroAttr(heroId, attr)
|
|
self.allAtkpAttrByHero[heroId] = attr
|
|
self:calcAttr()
|
|
end
|
|
|
|
function HeroDataOther:setTalentAttr(attr)
|
|
self.allAtkpAttrByTalent = attr
|
|
self:calcAttr()
|
|
end
|
|
|
|
function HeroDataOther:calcAttr()
|
|
self.allAtkpAttr = {{}, {}, {}, {}, {}}
|
|
for heroId, attrs in pairs(self.allAtkpAttrByHero) do
|
|
for matchType, v in ipairs(self.allAtkpAttr) do
|
|
for k, vv in pairs(attrs) do
|
|
self.allAtkpAttr[matchType][k] = (self.allAtkpAttr[matchType][k] or 0) + vv
|
|
end
|
|
end
|
|
end
|
|
|
|
for k, v in pairs(self.allAtkpAttrByTalent) do
|
|
for matchType = 1, 5 do
|
|
self.allAtkpAttr[matchType] = self.allAtkpAttr[matchType] or {}
|
|
self.allAtkpAttr[matchType][k] = (self.allAtkpAttr[matchType][k] or 0) + v
|
|
end
|
|
end
|
|
end
|
|
-- endregion
|
|
|
|
return HeroDataOther |