local AttrCell = class("AttrCell", BaseCell) function AttrCell:init() local uiMap = self:getUIMap() self.imgIcon = uiMap["attr_cell.img_icon"] self.txDesc = uiMap["attr_cell.tx_desc"] self.txValue = uiMap["attr_cell.tx_value"] end function AttrCell:refresh(heroEntity, nodeType, attrType) self.heroEntity = heroEntity self.nodeType = nodeType self.attrName = attrType[self.heroEntity:getMatchType()] if attrType == GConst.MATCH_HP_NAME or attrType == GConst.MATCH_HP_FIX_NAME then self:showHp() elseif attrType == GConst.MATCH_ATTACK_NAME then self:showAtk() elseif attrType == GConst.MATCH_NORMAL_HURT_NAME then self:showNormalHurt() elseif attrType == GConst.MATCH_SKILL_HURT_NAME then self:showSkillHurt() elseif attrType == GConst.MATCH_CRIT_NAME then self:showCrit() elseif attrType == GConst.MATCH_CRIT_TIME_NAME then self:showCritAtk() elseif attrType == GConst.MATCH_NORMAL_HURTP_NAME then self:showNormalHurtp() elseif attrType == GConst.MATCH_SKILL_HURTP_NAME then self:showSkillHurtp() elseif attrType == GConst.MATCH_CURED_NAME then self:showCured() end end -- 显示生命 function AttrCell:showHp() self.imgIcon:setSprite(GConst.ATLAS_PATH.HERO, "hero_attribute_2") self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.ATTR_HP)) local value = 0 if self.nodeType == GConst.HeroConst.ATTR_SHOW_TOTAL then if self.heroEntity:isActived() then value = self.heroEntity:getTotalAttrValue(self.attrName) else value = self.heroEntity:getCfgHp(self.heroEntity:getBeginLv()) end elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_BASE then if self.heroEntity:isActived() then value = self.heroEntity:getCfgHp(self.heroEntity:getLv()) else value = self.heroEntity:getCfgHp(self.heroEntity:getBeginLv()) end elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_WEAPON then value = self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.WEAPON):getHp() elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HAT):getHp() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.CLOTHES):getHp() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.BELT):getHp() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getHp() elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then value = value + DataManager.SkinData:getHp(self.heroEntity) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then value = value + self.heroEntity:getRunes():getAttrValue(self.attrName) end self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value)) end -- 显示攻击力 function AttrCell:showAtk() self.imgIcon:setSprite(GConst.ATLAS_PATH.HERO, "hero_attribute_1") self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.ATTR_ATK)) local value = 0 if self.nodeType == GConst.HeroConst.ATTR_SHOW_TOTAL then if self.heroEntity:isActived() then value = self.heroEntity:getTotalAttrValue(self.attrName) else value = self.heroEntity:getCfgAtk(self.heroEntity:getBeginLv()) end elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_BASE then if self.heroEntity:isActived() then value = self.heroEntity:getCfgAtk(self.heroEntity:getLv()) else value = self.heroEntity:getCfgAtk(self.heroEntity:getBeginLv()) end elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_WEAPON then value = self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.WEAPON):getAttack() elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HAT):getAttack() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.CLOTHES):getAttack() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.BELT):getAttack() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getAttack() elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then value = value + DataManager.SkinData:getAttack(self.heroEntity) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then value = value + self.heroEntity:getRunes():getAttrValue(self.attrName) end self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value)) end -- 显示普攻增伤 function AttrCell:showNormalHurt() self.imgIcon:setSprite(GConst.ATLAS_PATH.HERO, "hero_attribute_3") self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.ATTR_NORMAL_HURT)) local value = 0 if self.nodeType == GConst.HeroConst.ATTR_SHOW_TOTAL then value = self.heroEntity:getTotalAttrValue(self.attrName) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_BASE then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_WEAPON then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HAT):getNormalHurt() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.CLOTHES):getNormalHurt() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.BELT):getNormalHurt() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getNormalHurt() elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then value = value + DataManager.SkinData:getNormalHurt(self.heroEntity) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then value = value + self.heroEntity:getRunes():getAttrValue(self.attrName) end self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value)) end -- 显示技能增伤 function AttrCell:showSkillHurt() self.imgIcon:setSprite(GConst.ATLAS_PATH.HERO, "hero_attribute_4") self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.ATTR_SKILL_HURT)) local value = 0 if self.nodeType == GConst.HeroConst.ATTR_SHOW_TOTAL then value = self.heroEntity:getTotalAttrValue(self.attrName) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_BASE then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_WEAPON then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HAT):getSkillHurt() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.CLOTHES):getSkillHurt() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.BELT):getSkillHurt() value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getSkillHurt() elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then value = value + DataManager.SkinData:getSkillHurt(self.heroEntity) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then value = value + self.heroEntity:getRunes():getAttrValue(self.attrName) end self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value)) end -- 显示暴击率 function AttrCell:showCrit() self.imgIcon:setSprite(GConst.ATLAS_PATH.HERO, "hero_attribute_5") self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.ATTR_CRIT)) local value = 0 if self.nodeType == GConst.HeroConst.ATTR_SHOW_TOTAL then value = self.heroEntity:getTotalAttrValue(self.attrName) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_BASE then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_WEAPON then value = self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.WEAPON):getCritPercent() elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then value = value + DataManager.SkinData:getCritPercent(self.heroEntity) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then value = value + self.heroEntity:getRunes():getAttrValue(self.attrName) end self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value)) end -- 显示暴击伤害百分比 function AttrCell:showCritAtk() self.imgIcon:setSprite(GConst.ATLAS_PATH.HERO, "hero_attribute_6") self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.ATTR_CRIT_TIME)) local value = 0 if self.nodeType == GConst.HeroConst.ATTR_SHOW_TOTAL then value = self.heroEntity:getTotalAttrValue(self.attrName) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_BASE then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_WEAPON then value = self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.WEAPON):getCritHurtPercent() elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then value = value + DataManager.SkinData:getCritHurtPercent(self.heroEntity) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then value = value + self.heroEntity:getRunes():getAttrValue(self.attrName) end self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value)) end -- 显示普攻增伤百分比 function AttrCell:showNormalHurtp() self.imgIcon:setSprite(GConst.ATLAS_PATH.HERO, "hero_attribute_3") self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.ATTR_NORMAL_HURTP)) local value = 0 if self.nodeType == GConst.HeroConst.ATTR_SHOW_TOTAL then value = self.heroEntity:getTotalAttrValue(self.attrName) -- 特殊处理:显示总属性时,普攻百分比和技能百分比把所有伤害百分比加上 value = value + self.heroEntity:getTotalAttrValue(GConst.MATCH_ALL_HURTP_NAME[self.heroEntity:getMatchType()]) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_BASE then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_WEAPON then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then -- 套装属性,防具只用计算一次 value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HAT):getNormalHurtPercent() -- value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.CLOTHES):getNormalHurtPercent() -- value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.BELT):getNormalHurtPercent() -- value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getNormalHurtPercent() elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then value = value + DataManager.SkinData:getNormalHurtPercent(self.heroEntity) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then value = value + self.heroEntity:getRunes():getAttrValue(self.attrName) end self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value)) end -- 显示技能增伤百分比 function AttrCell:showSkillHurtp() self.imgIcon:setSprite(GConst.ATLAS_PATH.HERO, "hero_attribute_4") self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.ATTR_SKILL_HURTP)) local value = 0 if self.nodeType == GConst.HeroConst.ATTR_SHOW_TOTAL then value = self.heroEntity:getTotalAttrValue(self.attrName) -- 特殊处理:显示总属性时,普攻百分比和技能百分比把所有伤害百分比加上 value = value + self.heroEntity:getTotalAttrValue(GConst.MATCH_ALL_HURTP_NAME[self.heroEntity:getMatchType()]) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_BASE then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_WEAPON then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then -- 套装属性,防具只用计算一次 value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HAT):getSkillHurtPercent() -- value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.CLOTHES):getSkillHurtPercent() -- value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.BELT):getSkillHurtPercent() -- value = value + self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.HANDGUARD):getSkillHurtPercent() elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then value = value + DataManager.SkinData:getSkillHurtPercent(self.heroEntity) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then value = value + self.heroEntity:getRunes():getAttrValue(self.attrName) end self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value)) end -- 显示治疗效果提升百分比 function AttrCell:showCured() self.imgIcon:setSprite(GConst.ATLAS_PATH.HERO, "hero_attribute_7") self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.ATTR_CURED)) local value = 0 if self.nodeType == GConst.HeroConst.ATTR_SHOW_TOTAL then value = self.heroEntity:getTotalAttrValue(self.attrName) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_BASE then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_WEAPON then value = self.heroEntity:getEquips(GConst.EquipConst.PART_TYPE.WEAPON):getHealPercent() elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_ARMOR then elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_SKIN then value = value + DataManager.SkinData:getHealPercent(self.heroEntity) elseif self.nodeType == GConst.HeroConst.ATTR_SHOW_RUNES then value = value + self.heroEntity:getRunes():getAttrValue(self.attrName) end self.txValue:setText(GFunc.getAttrShowValue(self.attrName, value)) end return AttrCell