diff --git a/lua/app/global/global_const.lua b/lua/app/global/global_const.lua index 8a6fd738..87e416f8 100644 --- a/lua/app/global/global_const.lua +++ b/lua/app/global/global_const.lua @@ -518,6 +518,15 @@ GConst.ENTITY_TYPE = { 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 = { [0] = "hp", [1] = "hp", diff --git a/lua/app/module/battle/battle_const.lua b/lua/app/module/battle/battle_const.lua index 905466b4..0c2114fe 100644 --- a/lua/app/module/battle/battle_const.lua +++ b/lua/app/module/battle/battle_const.lua @@ -486,6 +486,7 @@ local ATTR_NAME = { ATTR_ALL_HURTP_GREEN = "attr_all_hurtp_green", ATTR_ALL_HURTP_BLUE = "attr_all_hurtp_blue", ATTR_ALL_HURTP_PURPLE = "attr_all_hurtp_purple", + ATTR_ATKP_PERSON = "attr_atkp_person", INVINCIBLE_SHIELD = "invincible_shield", REBIRTH = "rebirth", diff --git a/lua/app/module/hero/hero_const.lua b/lua/app/module/hero/hero_const.lua index ae6ab2b5..ff3e311f 100644 --- a/lua/app/module/hero/hero_const.lua +++ b/lua/app/module/hero/hero_const.lua @@ -34,39 +34,44 @@ HeroConst.PANEL_TYPE = { -- 总计 HeroConst.ATTR_SHOW_TOTAL = { - GConst.MATCH_HP_NAME, -- 生命 - GConst.MATCH_ATTACK_NAME, -- 攻击 - GConst.MATCH_NORMAL_HURT_NAME, -- 普攻增伤 - GConst.MATCH_SKILL_HURT_NAME, -- 技能增伤 - GConst.MATCH_CRIT_NAME, -- 暴击率百分比 - GConst.MATCH_CRIT_TIME_NAME, -- 暴击伤害百分比 - GConst.MATCH_NORMAL_HURTP_NAME, -- 普攻增伤百分比 - GConst.MATCH_SKILL_HURTP_NAME, -- 技能增伤百分比 - GConst.MATCH_CURED_NAME, -- 治疗效果提升百分比 + GConst.MATCH_HP_NAME, -- 生命 + GConst.MATCH_ATTACK_NAME, -- 攻击 + GConst.MATCH_NORMAL_HURT_NAME, -- 普攻增伤 + GConst.MATCH_SKILL_HURT_NAME, -- 技能增伤 + GConst.MATCH_CRIT_NAME, -- 暴击率百分比 + GConst.MATCH_CRIT_TIME_NAME, -- 暴击伤害百分比 + GConst.MATCH_NORMAL_HURTP_NAME, -- 普攻增伤百分比 + GConst.MATCH_SKILL_HURTP_NAME, -- 技能增伤百分比 + GConst.MATCH_CURED_NAME, -- 治疗效果提升百分比 } -- 基础 HeroConst.ATTR_SHOW_BASE = { - GConst.MATCH_HP_NAME, -- 生命 - GConst.MATCH_ATTACK_NAME, -- 攻击 + GConst.MATCH_HP_NAME, -- 生命 + GConst.MATCH_ATTACK_NAME, -- 攻击 +} +-- 升星 +HeroConst.ATTR_SHOW_STAR = { + GConst.MATCH_ATKP_PERSONAL, -- 个人攻击百分比 + GConst.MATCH_ATTACK_ADD_NAME, -- 攻击百分比 } -- 皮肤 HeroConst.ATTR_SHOW_SKIN = { - GConst.MATCH_HP_FIX_NAME, -- 生命 - GConst.MATCH_ATTACK_NAME, -- 攻击 - GConst.MATCH_NORMAL_HURT_NAME, -- 普攻增伤 - GConst.MATCH_SKILL_HURT_NAME, -- 技能增伤 - GConst.MATCH_CRIT_NAME, -- 暴击率百分比 - GConst.MATCH_CRIT_TIME_NAME, -- 暴击伤害百分比 - GConst.MATCH_NORMAL_HURTP_NAME, -- 普攻增伤百分比 - GConst.MATCH_SKILL_HURTP_NAME, -- 技能增伤百分比 - GConst.MATCH_CURED_NAME, -- 治疗效果提升百分比 + GConst.MATCH_HP_FIX_NAME, -- 生命 + GConst.MATCH_ATTACK_NAME, -- 攻击 + GConst.MATCH_NORMAL_HURT_NAME, -- 普攻增伤 + GConst.MATCH_SKILL_HURT_NAME, -- 技能增伤 + GConst.MATCH_CRIT_NAME, -- 暴击率百分比 + GConst.MATCH_CRIT_TIME_NAME, -- 暴击伤害百分比 + GConst.MATCH_NORMAL_HURTP_NAME, -- 普攻增伤百分比 + GConst.MATCH_SKILL_HURTP_NAME, -- 技能增伤百分比 + GConst.MATCH_CURED_NAME, -- 治疗效果提升百分比 } - -- 需要显示属性的模块 HeroConst.SHOW_NODE = { - HeroConst.ATTR_SHOW_TOTAL, - HeroConst.ATTR_SHOW_BASE, - HeroConst.ATTR_SHOW_SKIN, + HeroConst.ATTR_SHOW_TOTAL, + HeroConst.ATTR_SHOW_BASE, + HeroConst.ATTR_SHOW_STAR, + HeroConst.ATTR_SHOW_SKIN, } HeroConst.TRIAL_HERO_ID = 34001 -- 花木兰 diff --git a/lua/app/module/hero/hero_manager.lua b/lua/app/module/hero/hero_manager.lua index 793282df..a5f92832 100644 --- a/lua/app/module/hero/hero_manager.lua +++ b/lua/app/module/hero/hero_manager.lua @@ -20,14 +20,7 @@ function HeroManager:upgradeHero(heroId, heroEntity) local canLvUp, state = heroEntity:canLvUp() 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) - end + heroEntity:canLvUp(true) return end @@ -49,26 +42,25 @@ function HeroManager:upgradeHeroStar(heroId, heroEntity) return end - -- local canLvUp, state = heroEntity:canLvUp() - -- 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) - -- end - -- return - -- end + local canStarUp, state = heroEntity:canStarUp() + if not canStarUp 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:canStarUp(true) + end + return + end self:sendMessage(ProtoMsgType.FromMsgEnum.HeroStarReq, {id = heroId}, {}, self.heroStarReqFinish, BIReport.ITEM_GET_TYPE.UPGRADE_HERO) end function HeroManager:heroStarReqFinish(result) if result.err_code == GConst.ERROR_STR.SUCCESS then - DataManager.HeroData:setHeroLv(result.hero.id, result.hero.level) - DataManager.HeroData:setDirty() + DataManager.HeroData:onHeroStarUp(result.hero.id) AudioManager:playEffect(AudioManager.EFFECT_ID.HERO_UP) end diff --git a/lua/app/ui/common/cell/hero_cell.lua b/lua/app/ui/common/cell/hero_cell.lua index c3e2e0d3..c1142402 100644 --- a/lua/app/ui/common/cell/hero_cell.lua +++ b/lua/app/ui/common/cell/hero_cell.lua @@ -81,15 +81,15 @@ function HeroCell:refresh(heroEntity, isGray) else self.unlockTx:setVisible(true) self.progressBg:setVisible(false) - local unlcokChapter = heroEntity:getUnlcokChapter() - local unlockDan = heroEntity:getUnlockDan() - if unlcokChapter then - self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_10, unlcokChapter)) - elseif unlockDan then - self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_12, I18N:getGlobalText(I18N.GlobalConst["ARENA_RANKNAME_" .. unlockDan]))) - else - self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_11)) - end + -- local unlcokChapter = heroEntity:getUnlcokChapter() + -- local unlockDan = heroEntity:getUnlockDan() + -- if unlcokChapter then + -- self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_10, unlcokChapter)) + -- elseif unlockDan then + -- self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_12, I18N:getGlobalText(I18N.GlobalConst["ARENA_RANKNAME_" .. unlockDan]))) + -- else + -- self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_11)) + -- end end end self:refreshRedPoint() diff --git a/lua/app/ui/hero/cell/star_cell.lua b/lua/app/ui/hero/cell/star_cell.lua index 7e035c2a..5f57bbf9 100644 --- a/lua/app/ui/hero/cell/star_cell.lua +++ b/lua/app/ui/hero/cell/star_cell.lua @@ -22,12 +22,17 @@ function StarCell:refresh(heroEntity, idx) local star = self.heroEntity:getStar() for i, v in ipairs(self.starImgs) do - if i <= star then + if i <= idx then v:setActive(true) else v:setActive(false) 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.descTx:setText(I18N:getGlobalText(I18N.GlobalConst["HERO_STAR_DESC_" .. idx]) .. self.heroEntity:getCfgId()) end diff --git a/lua/app/ui/hero/hero_attr_ui.lua b/lua/app/ui/hero/hero_attr_ui.lua index 559dad04..89da6136 100644 --- a/lua/app/ui/hero/hero_attr_ui.lua +++ b/lua/app/ui/hero/hero_attr_ui.lua @@ -65,6 +65,9 @@ function HeroAttrUI:isShowAttr(node) if node == GConst.HeroConst.ATTR_SHOW_SKIN then return #DataManager.SkinData:getOwnAllAttr(self.heroEntity) > 0 end + if node == GConst.HeroConst.ATTR_SHOW_STAR then + return table.nums(self.heroEntity:getStarAttr()) > 0 + end return true end diff --git a/lua/app/ui/hero/star_info_comp.lua b/lua/app/ui/hero/star_info_comp.lua index 0ef800bd..b1331cc0 100644 --- a/lua/app/ui/hero/star_info_comp.lua +++ b/lua/app/ui/hero/star_info_comp.lua @@ -18,7 +18,7 @@ function StarInfoComp:init() self.upBtnTx:setText("升星") self.lvBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_4)) self.upBtn:addClickListener(function() - -- ModuleManager.EquipManager:reqUpgrade(self.heroEntity:getCfgId(), GConst.EquipConst.PART_TYPE.WEAPON) + ModuleManager.HeroManager:upgradeHeroStar(self.heroEntity:getCfgId()) end) self.lvBtn:addClickListener(function() diff --git a/lua/app/userdata/hero/hero_data.lua b/lua/app/userdata/hero/hero_data.lua index 1f40b08f..a5335b7c 100644 --- a/lua/app/userdata/hero/hero_data.lua +++ b/lua/app/userdata/hero/hero_data.lua @@ -355,7 +355,7 @@ function HeroData:getHeroLevelCost(lv, qlt) end -- endregion --- region +-- region 升星相关 function HeroData:isStarOpen() return true end @@ -367,6 +367,15 @@ function HeroData:getStarById(id) end return 0 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 -- region 皮肤相关 diff --git a/lua/app/userdata/hero/hero_entity.lua b/lua/app/userdata/hero/hero_entity.lua index 46bdbe58..6b16f597 100644 --- a/lua/app/userdata/hero/hero_entity.lua +++ b/lua/app/userdata/hero/hero_entity.lua @@ -7,6 +7,7 @@ function HeroEntity:ctor(cfgId, lv, skin, star) self.data.lv = lv self.data.skin = skin self.data.star = star + self.data.star = 1 self.config = ConfigManager:getConfig("hero")[self.cfgId] self.beginLv = 1 -- 激活等级 @@ -77,41 +78,15 @@ end -- 更新皮肤属性 function HeroEntity:updateStarAttr() 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) - -- local atk = DataManager.SkinData:getAttack(self) - -- 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 +function HeroEntity:getStarAttr() + return self.starAttr end -- 更新皮肤属性 @@ -160,6 +135,9 @@ function HeroEntity:updateTotalAttr() for k, v in pairs(self.baseAttrOriginal) do self:setTotalAttrValue(k, v) end + for k, v in pairs(self.starAttr) do + self:addTotalAttrValue(k, v) + end for k, v in pairs(self.skinAttr) do self:addTotalAttrValue(k, v) end @@ -410,6 +388,10 @@ end function HeroEntity:getStarUpCostId() return self.config.entry end + +function HeroEntity:getStarAttrCfg() + return self.config.star +end -- endregion -- function HeroEntity:getActiveRogueCount() @@ -497,6 +479,33 @@ function HeroEntity:getStarUpMaterials() local fieldName = "cost_" .. self:getQlt() return nextLvInfo[fieldName] 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 -- region 皮肤相关