c1_lua/lua/app/userdata/hero/hero_entity.lua
2023-04-13 22:04:22 +08:00

136 lines
2.5 KiB
Lua

local HeroEntity = class("HeroEntity", BaseData)
function HeroEntity:ctor(cfgId, lv)
self.id = cfgId
self.cfgId = cfgId
self.data.lv = lv
self.attrDirty = false
self.config = ConfigManager:getConfig("hero")[self.cfgId]
self.baseAttrOriginal = {}
self.allAttr = {}
self:initAttr()
self:updateAttr()
end
function HeroEntity:initAttr()
self.allAttr[GConst.ATTR_TYPE.hp] = 0
self.allAttr[GConst.ATTR_TYPE.atk] = 0
end
function HeroEntity:setLv(lv)
if not lv then
return
end
if self.data.lv == lv then
return
end
self.data.lv = lv
self:setDirty()
end
function HeroEntity:getCfgId()
return self.cfgId
end
function HeroEntity:getLv()
return self.data.lv
end
function HeroEntity:getQlt()
return self.config.qlt
end
function HeroEntity:getMatchType()
return self.config.position
end
function HeroEntity:setAttrDirty()
self.attrDirty = true
end
function HeroEntity:getAllAttr()
if self.attrDirty == true then
self.attrDirty = false
self:updateAttr()
end
return self.allAttr
end
function HeroEntity:updateAttr()
self:updateBaseAttr()
self:updateAllAttr()
end
function HeroEntity:updateBaseAttr()
if self.data.lv <= 0 then
self.baseAttrOriginal[GConst.ATTR_TYPE.hp] = 0
self.baseAttrOriginal[GConst.ATTR_TYPE.atk] = 0
else
self.baseAttrOriginal[GConst.ATTR_TYPE.hp] = self.config.hp[self.data.lv] or self.config.hp[#self.config.hp]
self.baseAttrOriginal[GConst.ATTR_TYPE.atk] = self.config.atk[self.data.lv] or self.config.atk[#self.config.atk]
end
end
function HeroEntity:updateAllAttr()
for k, v in pairs(self.baseAttrOriginal) do
self.allAttr[k] = v
end
end
function HeroEntity:getAtk()
return self.allAttr[GConst.ATTR_TYPE.atk] or 0
end
function HeroEntity:getHp()
return self.allAttr[GConst.ATTR_TYPE.hp] or 0
end
function HeroEntity:setDirty()
self.attrDirty = true
end
function HeroEntity:canLvUp()
if self:isMaxLv() then
return false
end
local cost = self:getLvUpMaterials()
if not cost then
return false
end
for _, reward in ipairs(cost) do
if not GFunc.checkCost(reward.id, reward.num, false) then
return false
end
end
return true
end
function HeroEntity:getLvUpMaterials()
local nextLvInfo = ConfigManager:getConfig("hero_up")[self.data.lv + 1]
if not nextLvInfo then
return
end
return nextLvInfo.exp
end
function HeroEntity:getConfig()
return self.config
end
function HeroEntity:getModelId()
return self.config.model_id
end
function HeroEntity:getActiveSkill()
return self.config.base_skill
end
function HeroEntity:getHurtSkill()
return self.config.hurt_skill
end
return HeroEntity