This commit is contained in:
puxuan 2025-05-28 00:19:06 +08:00
parent f18ab0ee83
commit 722639abab
10 changed files with 125 additions and 92 deletions

View File

@ -518,6 +518,15 @@ GConst.ENTITY_TYPE = {
JEWELRY_ENTITY = 3, JEWELRY_ENTITY = 3,
} }
GConst.MATCH_ATKP_PERSONAL = {
[0] = "attr_atkp_person",
[1] = "attr_atkp_person",
[2] = "attr_atkp_person",
[3] = "attr_atkp_person",
[4] = "attr_atkp_person",
[5] = "attr_atkp_person",
}
GConst.MATCH_HP_NAME = { GConst.MATCH_HP_NAME = {
[0] = "hp", [0] = "hp",
[1] = "hp", [1] = "hp",

View File

@ -486,6 +486,7 @@ local ATTR_NAME = {
ATTR_ALL_HURTP_GREEN = "attr_all_hurtp_green", ATTR_ALL_HURTP_GREEN = "attr_all_hurtp_green",
ATTR_ALL_HURTP_BLUE = "attr_all_hurtp_blue", ATTR_ALL_HURTP_BLUE = "attr_all_hurtp_blue",
ATTR_ALL_HURTP_PURPLE = "attr_all_hurtp_purple", ATTR_ALL_HURTP_PURPLE = "attr_all_hurtp_purple",
ATTR_ATKP_PERSON = "attr_atkp_person",
INVINCIBLE_SHIELD = "invincible_shield", INVINCIBLE_SHIELD = "invincible_shield",
REBIRTH = "rebirth", REBIRTH = "rebirth",

View File

@ -49,6 +49,11 @@ HeroConst.ATTR_SHOW_BASE = {
GConst.MATCH_HP_NAME, -- 生命 GConst.MATCH_HP_NAME, -- 生命
GConst.MATCH_ATTACK_NAME, -- 攻击 GConst.MATCH_ATTACK_NAME, -- 攻击
} }
-- 升星
HeroConst.ATTR_SHOW_STAR = {
GConst.MATCH_ATKP_PERSONAL, -- 个人攻击百分比
GConst.MATCH_ATTACK_ADD_NAME, -- 攻击百分比
}
-- 皮肤 -- 皮肤
HeroConst.ATTR_SHOW_SKIN = { HeroConst.ATTR_SHOW_SKIN = {
GConst.MATCH_HP_FIX_NAME, -- 生命 GConst.MATCH_HP_FIX_NAME, -- 生命
@ -61,11 +66,11 @@ HeroConst.ATTR_SHOW_SKIN = {
GConst.MATCH_SKILL_HURTP_NAME, -- 技能增伤百分比 GConst.MATCH_SKILL_HURTP_NAME, -- 技能增伤百分比
GConst.MATCH_CURED_NAME, -- 治疗效果提升百分比 GConst.MATCH_CURED_NAME, -- 治疗效果提升百分比
} }
-- 需要显示属性的模块 -- 需要显示属性的模块
HeroConst.SHOW_NODE = { HeroConst.SHOW_NODE = {
HeroConst.ATTR_SHOW_TOTAL, HeroConst.ATTR_SHOW_TOTAL,
HeroConst.ATTR_SHOW_BASE, HeroConst.ATTR_SHOW_BASE,
HeroConst.ATTR_SHOW_STAR,
HeroConst.ATTR_SHOW_SKIN, HeroConst.ATTR_SHOW_SKIN,
} }

View File

@ -20,14 +20,7 @@ function HeroManager:upgradeHero(heroId, heroEntity)
local canLvUp, state = heroEntity:canLvUp() local canLvUp, state = heroEntity:canLvUp()
if not canLvUp then if not canLvUp then
-- 如果是金币不足 尝试触发金币礼包
if state == GConst.HeroConst.CHECK_LV_UP_STATE.COIN_NOT_ENOUGH then
if not ModuleManager.ShopManager:tryTriggerCoinGift() then
GFunc.showItemNotEnough(GConst.ItemConst.ITEM_ID_GOLD)
end
else
heroEntity:canLvUp(true) heroEntity:canLvUp(true)
end
return return
end end
@ -49,26 +42,25 @@ function HeroManager:upgradeHeroStar(heroId, heroEntity)
return return
end end
-- local canLvUp, state = heroEntity:canLvUp() local canStarUp, state = heroEntity:canStarUp()
-- if not canLvUp then if not canStarUp then
-- -- 如果是金币不足 尝试触发金币礼包 -- 如果是金币不足 尝试触发金币礼包
-- if state == GConst.HeroConst.CHECK_LV_UP_STATE.COIN_NOT_ENOUGH then if state == GConst.HeroConst.CHECK_LV_UP_STATE.COIN_NOT_ENOUGH then
-- if not ModuleManager.ShopManager:tryTriggerCoinGift() then -- if not ModuleManager.ShopManager:tryTriggerCoinGift() then
-- GFunc.showItemNotEnough(GConst.ItemConst.ITEM_ID_GOLD) GFunc.showItemNotEnough(GConst.ItemConst.ITEM_ID_GOLD)
-- end
-- else
-- heroEntity:canLvUp(true)
-- end
-- return
-- end -- end
else
heroEntity:canStarUp(true)
end
return
end
self:sendMessage(ProtoMsgType.FromMsgEnum.HeroStarReq, {id = heroId}, {}, self.heroStarReqFinish, BIReport.ITEM_GET_TYPE.UPGRADE_HERO) self:sendMessage(ProtoMsgType.FromMsgEnum.HeroStarReq, {id = heroId}, {}, self.heroStarReqFinish, BIReport.ITEM_GET_TYPE.UPGRADE_HERO)
end end
function HeroManager:heroStarReqFinish(result) function HeroManager:heroStarReqFinish(result)
if result.err_code == GConst.ERROR_STR.SUCCESS then if result.err_code == GConst.ERROR_STR.SUCCESS then
DataManager.HeroData:setHeroLv(result.hero.id, result.hero.level) DataManager.HeroData:onHeroStarUp(result.hero.id)
DataManager.HeroData:setDirty()
AudioManager:playEffect(AudioManager.EFFECT_ID.HERO_UP) AudioManager:playEffect(AudioManager.EFFECT_ID.HERO_UP)
end end

View File

@ -81,15 +81,15 @@ function HeroCell:refresh(heroEntity, isGray)
else else
self.unlockTx:setVisible(true) self.unlockTx:setVisible(true)
self.progressBg:setVisible(false) self.progressBg:setVisible(false)
local unlcokChapter = heroEntity:getUnlcokChapter() -- local unlcokChapter = heroEntity:getUnlcokChapter()
local unlockDan = heroEntity:getUnlockDan() -- local unlockDan = heroEntity:getUnlockDan()
if unlcokChapter then -- if unlcokChapter then
self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_10, unlcokChapter)) -- self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_10, unlcokChapter))
elseif unlockDan then -- elseif unlockDan then
self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_12, I18N:getGlobalText(I18N.GlobalConst["ARENA_RANKNAME_" .. unlockDan]))) -- self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_12, I18N:getGlobalText(I18N.GlobalConst["ARENA_RANKNAME_" .. unlockDan])))
else -- else
self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_11)) -- self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_11))
end -- end
end end
end end
self:refreshRedPoint() self:refreshRedPoint()

View File

@ -22,12 +22,17 @@ function StarCell:refresh(heroEntity, idx)
local star = self.heroEntity:getStar() local star = self.heroEntity:getStar()
for i, v in ipairs(self.starImgs) do for i, v in ipairs(self.starImgs) do
if i <= star then if i <= idx then
v:setActive(true) v:setActive(true)
else else
v:setActive(false) v:setActive(false)
end end
end end
if idx <= star then
self.baseObject:setSprite(GConst.ATLAS_PATH.COMMON, "common_board_quality_3")
else
self.baseObject:setSprite(GConst.ATLAS_PATH.COMMON, "common_board_quality_2")
end
self.starBg:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT):RefreshLayout() self.starBg:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT):RefreshLayout()
self.descTx:setText(I18N:getGlobalText(I18N.GlobalConst["HERO_STAR_DESC_" .. idx]) .. self.heroEntity:getCfgId()) self.descTx:setText(I18N:getGlobalText(I18N.GlobalConst["HERO_STAR_DESC_" .. idx]) .. self.heroEntity:getCfgId())
end end

View File

@ -65,6 +65,9 @@ function HeroAttrUI:isShowAttr(node)
if node == GConst.HeroConst.ATTR_SHOW_SKIN then if node == GConst.HeroConst.ATTR_SHOW_SKIN then
return #DataManager.SkinData:getOwnAllAttr(self.heroEntity) > 0 return #DataManager.SkinData:getOwnAllAttr(self.heroEntity) > 0
end end
if node == GConst.HeroConst.ATTR_SHOW_STAR then
return table.nums(self.heroEntity:getStarAttr()) > 0
end
return true return true
end end

View File

@ -18,7 +18,7 @@ function StarInfoComp:init()
self.upBtnTx:setText("升星") self.upBtnTx:setText("升星")
self.lvBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_4)) self.lvBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_4))
self.upBtn:addClickListener(function() self.upBtn:addClickListener(function()
-- ModuleManager.EquipManager:reqUpgrade(self.heroEntity:getCfgId(), GConst.EquipConst.PART_TYPE.WEAPON) ModuleManager.HeroManager:upgradeHeroStar(self.heroEntity:getCfgId())
end) end)
self.lvBtn:addClickListener(function() self.lvBtn:addClickListener(function()

View File

@ -355,7 +355,7 @@ function HeroData:getHeroLevelCost(lv, qlt)
end end
-- endregion -- endregion
-- region -- region 升星相关
function HeroData:isStarOpen() function HeroData:isStarOpen()
return true return true
end end
@ -367,6 +367,15 @@ function HeroData:getStarById(id)
end end
return 0 return 0
end end
function HeroData:onHeroStarUp(id)
local entity = self:getHeroById(id)
if entity then
entity:onHeroStarUp()
end
-- BIReport:postHeroLev(beforeLv, lv)
-- BIReport:postFirstDayHeroLevel(id)
end
-- endregion -- endregion
-- region 皮肤相关 -- region 皮肤相关

View File

@ -7,6 +7,7 @@ function HeroEntity:ctor(cfgId, lv, skin, star)
self.data.lv = lv self.data.lv = lv
self.data.skin = skin self.data.skin = skin
self.data.star = star self.data.star = star
self.data.star = 1
self.config = ConfigManager:getConfig("hero")[self.cfgId] self.config = ConfigManager:getConfig("hero")[self.cfgId]
self.beginLv = 1 -- 激活等级 self.beginLv = 1 -- 激活等级
@ -77,41 +78,15 @@ end
-- 更新皮肤属性 -- 更新皮肤属性
function HeroEntity:updateStarAttr() function HeroEntity:updateStarAttr()
self.starAttr = {} self.starAttr = {}
-- local attr = self:getStarAttrCfg()[self.data.star]
local attr = self:getStarAttrCfg()
for index, value in ipairs(attr or {}) do
self.starAttr[value.type] = value.num
end
end
-- local hp = DataManager.SkinData:getHp(self) function HeroEntity:getStarAttr()
-- local atk = DataManager.SkinData:getAttack(self) return self.starAttr
-- local normalHurt = DataManager.SkinData:getNormalHurt(self)
-- local skillHurt = DataManager.SkinData:getSkillHurt(self)
-- local critPer = DataManager.SkinData:getCritPercent(self)
-- local critHurtPer = DataManager.SkinData:getCritHurtPercent(self)
-- local normalHurtPer = DataManager.SkinData:getNormalHurtPercent(self)
-- local skillHurtPer = DataManager.SkinData:getSkillHurtPercent(self)
-- local healPer = DataManager.SkinData:getHealPercent(self)
-- self.starAttr[GConst.MATCH_HP_NAME[self:getMatchType()]] = hp
-- self.starAttr[GConst.MATCH_ATTACK_NAME[self:getMatchType()]] = atk
-- self.starAttr[GConst.MATCH_NORMAL_HURT_NAME[self:getMatchType()]] = normalHurt
-- self.starAttr[GConst.MATCH_SKILL_HURT_NAME[self:getMatchType()]] = skillHurt
-- self.starAttr[GConst.MATCH_CRIT_NAME[self:getMatchType()]] = critPer
-- self.starAttr[GConst.MATCH_CRIT_TIME_NAME[self:getMatchType()]] = critHurtPer
-- self.starAttr[GConst.MATCH_NORMAL_HURTP_NAME[self:getMatchType()]] = normalHurtPer
-- self.starAttr[GConst.MATCH_SKILL_HURTP_NAME[self:getMatchType()]] = skillHurtPer
-- self.starAttr[GConst.MATCH_CURED_NAME[self:getMatchType()]] = healPer
-- if EDITOR_MODE then
-- local printStr = ""
-- printStr = printStr .. "更新皮肤数值:"..self:getCfgId() .. "\n"
-- printStr = printStr .. "生命:".. hp .. "\n"
-- printStr = printStr .. "攻击力:".. atk .. "\n"
-- printStr = printStr .. "普攻增伤:".. normalHurt .. "\n"
-- printStr = printStr .. "技能增伤:".. skillHurt .. "\n"
-- printStr = printStr .. "暴击率:".. critPer .. "\n"
-- printStr = printStr .. "暴击伤害百分比:".. critHurtPer .. "\n"
-- printStr = printStr .. "普攻增伤百分比:".. normalHurtPer .. "\n"
-- printStr = printStr .. "技能增伤百分比:".. skillHurtPer .. "\n"
-- printStr = printStr .. "治疗加成百分比:".. healPer .. "\n"
-- Logger.logHighlight(printStr)
-- end
end end
-- 更新皮肤属性 -- 更新皮肤属性
@ -160,6 +135,9 @@ function HeroEntity:updateTotalAttr()
for k, v in pairs(self.baseAttrOriginal) do for k, v in pairs(self.baseAttrOriginal) do
self:setTotalAttrValue(k, v) self:setTotalAttrValue(k, v)
end end
for k, v in pairs(self.starAttr) do
self:addTotalAttrValue(k, v)
end
for k, v in pairs(self.skinAttr) do for k, v in pairs(self.skinAttr) do
self:addTotalAttrValue(k, v) self:addTotalAttrValue(k, v)
end end
@ -410,6 +388,10 @@ end
function HeroEntity:getStarUpCostId() function HeroEntity:getStarUpCostId()
return self.config.entry return self.config.entry
end end
function HeroEntity:getStarAttrCfg()
return self.config.star
end
-- endregion -- endregion
-- function HeroEntity:getActiveRogueCount() -- function HeroEntity:getActiveRogueCount()
@ -497,6 +479,33 @@ function HeroEntity:getStarUpMaterials()
local fieldName = "cost_" .. self:getQlt() local fieldName = "cost_" .. self:getQlt()
return nextLvInfo[fieldName] return nextLvInfo[fieldName]
end end
function HeroEntity:canStarUp(showToast)
if self:getIsStarMax() then
return false, GConst.HeroConst.CHECK_LV_UP_STATE.MAX_LV
end
local cost = self:getStarUpMaterials()
if not cost then
return false, GConst.HeroConst.CHECK_LV_UP_STATE.NO_COST
end
local fragmentCost = cost[1] or 0
if not GFunc.checkCost(self:getFragmentId(), fragmentCost, showToast) then
return false, GConst.HeroConst.CHECK_LV_UP_STATE.FRAGMENT_NOT_ENOUGH
end
local goldCost = cost[2] or 0
if not GFunc.checkCost(GConst.ItemConst.ITEM_ID_GOLD, goldCost, showToast) then
return false, GConst.HeroConst.CHECK_LV_UP_STATE.COIN_NOT_ENOUGH
end
return true, GConst.HeroConst.CHECK_LV_UP_STATE.SUCCESS
end
function HeroEntity:onHeroStarUp()
self.data.star = self.data.star + 1
self:setDirty()
end
-- endregion -- endregion
-- region 皮肤相关 -- region 皮肤相关