From a2eaf905729f72258e9e6e03c91f25e761a03adc Mon Sep 17 00:00:00 2001
From: puxuan <413323644@qq.com>
Date: Tue, 9 Sep 2025 19:39:38 +0800
Subject: [PATCH] =?UTF-8?q?=E8=A3=85=E5=A4=87?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lua/app/common/data_manager.lua | 2 +-
lua/app/common/module_manager.lua | 2 +
.../localization_global_const.lua | 2 +
lua/app/config/strings/cn/global.lua | 2 +
lua/app/global/global_const.lua | 1 +
lua/app/module/equip/equip_const.lua | 11 +-
lua/app/module/equip/equip_manager.lua | 135 ++++++------
lua/app/module/hero/hero_const.lua | 2 +-
lua/app/proto/proto_msg_type.lua | 78 +++----
lua/app/ui/common/cell/equip_cell.lua | 205 +++++++++++++-----
lua/app/ui/equip.meta | 8 +
lua/app/ui/equip/cell.meta | 8 +
lua/app/ui/equip/cell/equip_list_cell.lua | 29 +++
.../ui/equip/cell/equip_list_cell.lua.meta | 10 +
lua/app/ui/equip/equip_list_ui.lua | 70 ++++++
lua/app/ui/equip/equip_list_ui.lua.meta | 10 +
lua/app/ui/hero/equip_info_comp.lua | 108 +++++++++
lua/app/ui/hero/equip_info_comp.lua.meta | 10 +
lua/app/ui/hero/hero_detail_ui.lua | 93 +++-----
lua/app/userdata/equip/equip_data.lua | 46 +++-
lua/app/userdata/equip/equip_entity.lua | 96 ++++----
lua/app/userdata/player/player_data.lua | 107 +++++++++
22 files changed, 747 insertions(+), 288 deletions(-)
create mode 100644 lua/app/ui/equip.meta
create mode 100644 lua/app/ui/equip/cell.meta
create mode 100644 lua/app/ui/equip/cell/equip_list_cell.lua
create mode 100644 lua/app/ui/equip/cell/equip_list_cell.lua.meta
create mode 100644 lua/app/ui/equip/equip_list_ui.lua
create mode 100644 lua/app/ui/equip/equip_list_ui.lua.meta
create mode 100644 lua/app/ui/hero/equip_info_comp.lua
create mode 100644 lua/app/ui/hero/equip_info_comp.lua.meta
diff --git a/lua/app/common/data_manager.lua b/lua/app/common/data_manager.lua
index 0c608214..bd63aefb 100644
--- a/lua/app/common/data_manager.lua
+++ b/lua/app/common/data_manager.lua
@@ -159,7 +159,7 @@ function DataManager:initWithServerData(data)
self.DungeonData:initDungeonGold(data.chapter_gold_challenge)
self.DungeonData:initDungeonShards(data.chapter_shards_challenge)
self.FormationData:init(data.fight_info)
- self.EquipData:init(data.heroes_equips)
+ self.EquipData:init(data.equip)
self.SkinData:init(data.bag.skins)
-- HeroData要在EquipData、SkinData之后初始化,依赖它们的属性数据
self.HeroData:init(data.bag.heroes)
diff --git a/lua/app/common/module_manager.lua b/lua/app/common/module_manager.lua
index 89887568..a1bb5f8e 100644
--- a/lua/app/common/module_manager.lua
+++ b/lua/app/common/module_manager.lua
@@ -128,6 +128,8 @@ ModuleManager.MODULE_KEY = {
TALENT_OPEN = "talent_open", -- 天赋功能开启条件
DUNGEON_OPEN = "dungeon_open", -- 玩法入口页签开启条件
SUMMON_OPEN = "summon_open", -- 英雄抽卡功能开启条件(包括普通和高级抽)
+ -- 战力/攻击力toast
+ PowerToastManager = "app/ui/common/power_toast_manager",
}
local _moduleMgrs = {}
diff --git a/lua/app/config/localization/localization_global_const.lua b/lua/app/config/localization/localization_global_const.lua
index 91fc5b66..50c362e6 100644
--- a/lua/app/config/localization/localization_global_const.lua
+++ b/lua/app/config/localization/localization_global_const.lua
@@ -681,6 +681,8 @@ local LocalizationGlobalConst =
HERO_DESC_22 = "HERO_DESC_22",
HERO_DESC_23 = "HERO_DESC_23",
BAG_DESC_1 = "BAG_DESC_1",
+ EQUIP_DESC_29 = "EQUIP_DESC_29",
+ EQUIP_DESC_30 = "EQUIP_DESC_30",
}
return LocalizationGlobalConst
\ No newline at end of file
diff --git a/lua/app/config/strings/cn/global.lua b/lua/app/config/strings/cn/global.lua
index 14ee3613..50c21ddc 100644
--- a/lua/app/config/strings/cn/global.lua
+++ b/lua/app/config/strings/cn/global.lua
@@ -681,6 +681,8 @@ local localization_global =
["HERO_DESC_22"] = "去升星",
["HERO_DESC_23"] = "技能等级:{0}",
["BAG_DESC_1"] = "背包",
+ ["EQUIP_DESC_29"] = "只有上阵的英雄才能穿戴装备",
+ ["EQUIP_DESC_30"] = "穿戴",
}
return localization_global
\ No newline at end of file
diff --git a/lua/app/global/global_const.lua b/lua/app/global/global_const.lua
index 78e30a0d..959d7e23 100644
--- a/lua/app/global/global_const.lua
+++ b/lua/app/global/global_const.lua
@@ -197,6 +197,7 @@ GConst.TYPEOF_LUA_CLASS = {
GIFT_REWARD_CELL = "app/ui/shop/cell/gift_reward_cell",
ARENA_GRADING_CELL = "app/ui/arena/cell/arena_grading_cell",
PLAYER_RECORD_CELL = "app/ui/common/cell/player_record_cell",
+ EQUIP_CELL = "app/ui/common/cell/equip_cell",
-- comp
HERO_FORMATION_COMP = "app/ui/common/component/hero_formation_comp",
diff --git a/lua/app/module/equip/equip_const.lua b/lua/app/module/equip/equip_const.lua
index 4cfbdd99..ea9861d9 100644
--- a/lua/app/module/equip/equip_const.lua
+++ b/lua/app/module/equip/equip_const.lua
@@ -2,11 +2,12 @@ local EquipConst = {}
-- 部位类型
EquipConst.PART_TYPE = {
- WEAPON = 1,
- HAT = 2,
- CLOTHES = 3,
- BELT = 4,
- HANDGUARD = 5
+ EQUIP_1 = 1,
+ EQUIP_2 = 2,
+ EQUIP_3 = 3,
+ EQUIP_4 = 4,
+ EQUIP_5 = 5,
+ EQUIP_6 = 5,
}
return EquipConst
\ No newline at end of file
diff --git a/lua/app/module/equip/equip_manager.lua b/lua/app/module/equip/equip_manager.lua
index c03c69f9..1dd5d752 100644
--- a/lua/app/module/equip/equip_manager.lua
+++ b/lua/app/module/equip/equip_manager.lua
@@ -1,93 +1,100 @@
local EquipManager = class("EquipManager", BaseModule)
+function EquipManager:showEquipListUI(heroEntity, part)
+ UIManager:showUI("app/ui/equip/equip_list_ui", {heroEntity = heroEntity, part = part})
+end
+
-- 展示材料获取弹窗(英雄id,部位,材料id,材料数量)
function EquipManager:showItemGetPop(heroId, part, id, num)
- self:reqEquipUpgradeGift(heroId, part)
+ self:reqEquipUpgradeGift(heroId, part)
- UIManager:showUI("app/ui/dungeon/item_get_ui", {heroId = heroId, part = part, id = id, value = num})
-end
-
--- 检查装备礼包状态定时器
-function EquipManager:updateEquipGiftTimer(isClear)
- self:unscheduleAll()
-
- if not isClear then
- local time = DataManager.EquipData:getGiftNearestRemainTime()
- if time and time > 0 then
- Logger.logHighlight("设置装备礼包倒计时:"..time)
- self.giftSid = self:performWithDelayGlobal(function()
- DataManager.EquipData:onGiftStateChange()
- end, time)
- end
- end
+ UIManager:showUI("app/ui/dungeon/item_get_ui", {heroId = heroId, part = part, id = id, value = num})
end
-- 请求触发装备升级礼包
function EquipManager:reqEquipUpgradeGift(heroId, part)
- if DataManager.EquipData:getCanShowGiftId(heroId, part) ~= nil then
- return
- end
+ if DataManager.EquipData:getCanShowGiftId(heroId, part) ~= nil then
+ return
+ end
- self:sendMessage(ProtoMsgType.FromMsgEnum.TriggerWeaponArmorGiftReq, {hero_id = heroId, equip_position = part}, {}, self.rspEquipUpgradeGift, nil)
+ self:sendMessage(ProtoMsgType.FromMsgEnum.TriggerWeaponArmorGiftReq, {hero_id = heroId, equip_position = part}, {}, self.rspEquipUpgradeGift, nil)
end
function EquipManager:rspEquipUpgradeGift(result)
- DataManager.EquipData:initGifts(result.info)
+ DataManager.EquipData:initGifts(result.info)
end
-- 升级装备
function EquipManager:reqUpgrade(id, part)
- local entity = DataManager.EquipData:getEquip(id, part)
- if not entity then
- return
- end
+ local entity = DataManager.EquipData:getEquip(id, part)
+ if not entity then
+ return
+ end
- local heroEntity = DataManager.HeroData:getHeroById(id)
- if heroEntity == nil or not heroEntity:isUnlock() then
- return
- end
+ local heroEntity = DataManager.HeroData:getHeroById(id)
+ if heroEntity == nil or not heroEntity:isUnlock() then
+ return
+ end
- for index, cost in ipairs(entity:getUpgradeMaterials()) do
- if cost.num > DataManager.BagData.ItemData:getItemNumById(cost.id) then
- GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_8))
- self:showItemGetPop(id, part, cost.id, cost.num)
- return
- end
- end
+ for index, cost in ipairs(entity:getUpgradeMaterials()) do
+ if cost.num > DataManager.BagData.ItemData:getItemNumById(cost.id) then
+ GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_8))
+ self:showItemGetPop(id, part, cost.id, cost.num)
+ return
+ end
+ end
- if not entity:isEnoughGold() then
- if not ModuleManager.ShopManager:tryTriggerCoinGift() then
- GFunc.showItemNotEnough(GConst.ItemConst.ITEM_ID_GOLD)
- end
- return
- end
+ if not entity:isEnoughGold() then
+ if not ModuleManager.ShopManager:tryTriggerCoinGift() then
+ GFunc.showItemNotEnough(GConst.ItemConst.ITEM_ID_GOLD)
+ end
+ return
+ end
- if entity:isMaxLevel() then
- if entity:getPart() == GConst.EquipConst.PART_TYPE.WEAPON then
- GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_7, DataManager.PlayerData:getLv() + 1))
- else
- GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_9, entity:getLevel() + 1))
- end
- return
- end
+ if entity:isMaxLevel() then
+ if entity:getPart() == GConst.EquipConst.PART_TYPE.WEAPON then
+ GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_7, DataManager.PlayerData:getLv() + 1))
+ else
+ GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_9, entity:getLevel() + 1))
+ end
+ return
+ end
- local itemGetType = BIReport.ITEM_GET_TYPE.EQUIP_UPGRADE
- if part ~= GConst.EquipConst.PART_TYPE.WEAPON then
- itemGetType = BIReport.ITEM_GET_TYPE.ARMOR_UPGRADE
- end
- self:sendMessage(ProtoMsgType.FromMsgEnum.EquipUpgradeReq, {hero_id = id, position = part}, {}, self.rspUpgrade, itemGetType)
+ local itemGetType = BIReport.ITEM_GET_TYPE.EQUIP_UPGRADE
+ if part ~= GConst.EquipConst.PART_TYPE.WEAPON then
+ itemGetType = BIReport.ITEM_GET_TYPE.ARMOR_UPGRADE
+ end
+ self:sendMessage(ProtoMsgType.FromMsgEnum.EquipUpgradeReq, {hero_id = id, position = part}, {}, self.rspUpgrade, itemGetType)
end
function EquipManager:rspUpgrade(result)
- if result.err_code == GConst.ERROR_STR.SUCCESS then
- DataManager.EquipData:onUpgradeEquip(result.reqData.hero_id, result.reqData.position)
+ if result.err_code == GConst.ERROR_STR.SUCCESS then
+ DataManager.EquipData:onUpgradeEquip(result.reqData.hero_id, result.reqData.position)
- if result.reqData.position == GConst.EquipConst.PART_TYPE.WEAPON then
- ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_UPGRADE_WEAPON)
- else
- ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_UPGRADE_ARMOR)
- end
- end
+ if result.reqData.position == GConst.EquipConst.PART_TYPE.WEAPON then
+ ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_UPGRADE_WEAPON)
+ else
+ ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_UPGRADE_ARMOR)
+ end
+ end
end
+--@region
+function EquipManager:onEquipWearReq(slotId, ids)
+ local params = {}
+ params.slot = slotId
+ params.ids = ids
+ self:sendMessage(ProtoMsgType.FromMsgEnum.EquipWearReq, params, {}, self.onEquipWearRsp, BIReport.ITEM_GET_TYPE.UPGRADE_HERO)
+end
+
+function EquipManager:onEquipWearRsp(result)
+ if result.err_code == GConst.ERROR_STR.SUCCESS then
+ DataManager.HeroData:setHeroLv(result.hero.id, result.hero.level)
+ DataManager.HeroData:setDirty()
+
+ AudioManager:playEffect(AudioManager.EFFECT_ID.HERO_UP)
+ end
+end
+
+--@endregion
return EquipManager
\ No newline at end of file
diff --git a/lua/app/module/hero/hero_const.lua b/lua/app/module/hero/hero_const.lua
index cfb66a21..b10b14d5 100644
--- a/lua/app/module/hero/hero_const.lua
+++ b/lua/app/module/hero/hero_const.lua
@@ -31,7 +31,7 @@ HeroConst.CHECK_LV_UP_STATE = {
HeroConst.PANEL_TYPE = {
HERO = 1,
STAR = 2,
- SKIN = 3,
+ EQUIP = 3,
}
-- 总计
diff --git a/lua/app/proto/proto_msg_type.lua b/lua/app/proto/proto_msg_type.lua
index 84e496ed..de0c53e3 100644
--- a/lua/app/proto/proto_msg_type.lua
+++ b/lua/app/proto/proto_msg_type.lua
@@ -9,8 +9,6 @@ local ProtoMsgType = {
[132244689] = "ChapterSettlementRsp",
[147147672] = "EnergyByADReq",
[147149505] = "EnergyByADRsp",
- [236190053] = "ChapterShardsChallengeStartReq",
- [236191886] = "ChapterShardsChallengeStartRsp",
[252740891] = "PVPOverCDReq",
[252742724] = "PVPOverCDRsp",
[295348381] = "ChangeAvatarReq",
@@ -24,6 +22,8 @@ local ProtoMsgType = {
[433809660] = "LevelUpRsp",
[516281556] = "GuideFundMarkReq",
[516283389] = "GuideFundMarkRsp",
+ [522621311] = "DungeonSettlementReq",
+ [522623144] = "DungeonSettlementRsp",
[524551468] = "FourteenBountyAwardReq",
[524553301] = "FourteenBountyAwardRsp",
[531558517] = "PigPlayUpdateNtf",
@@ -45,8 +45,6 @@ local ProtoMsgType = {
[817579102] = "SwitchFrontRsp",
[822916593] = "MatchReq",
[822918426] = "MatchRsp",
- [834139466] = "ChapterGoldChallengeStartReq",
- [834141299] = "ChapterGoldChallengeStartRsp",
[850670891] = "SummerBountyClaimByDiamondReq",
[850672724] = "SummerBountyClaimByDiamondRsp",
[904222760] = "ArenaBountyLevelUnlockReq",
@@ -65,14 +63,16 @@ local ProtoMsgType = {
[1114437583] = "ItemUseRsp",
[1150265172] = "ActivityPVPDailyRewardsReq",
[1150267005] = "ActivityPVPDailyRewardsRsp",
+ [1224176921] = "EquipRefineReq",
+ [1224178754] = "EquipRefineRsp",
[1283733956] = "ActivityPVPMatchReq",
[1283735789] = "ActivityPVPMatchRsp",
[1312685858] = "BossRushTopReq",
[1312687691] = "BossRushTopRsp",
[1326064687] = "FourteenBountyExchangeAwardReq",
[1326066520] = "FourteenBountyExchangeAwardRsp",
- [1371198132] = "ChapterShardsChallengeSettlementReq",
- [1371199965] = "ChapterShardsChallengeSettlementRsp",
+ [1405582465] = "EquipDecomposeReq",
+ [1405584298] = "EquipDecomposeRsp",
[1433352538] = "ChapterDailyChallengeResetReq",
[1433354371] = "ChapterDailyChallengeResetRsp",
[1471116409] = "BindReq",
@@ -83,8 +83,6 @@ local ProtoMsgType = {
[1515382047] = "CardDailyRewardRsp",
[1552772605] = "MallDailyBuyReq",
[1552774438] = "MallDailyBuyRsp",
- [1571184475] = "ChapterShardsChallengeFarmReq",
- [1571186308] = "ChapterShardsChallengeFarmRsp",
[1584689751] = "ActPaidResultReq",
[1584691584] = "ActPaidResultRsp",
[1635643251] = "RecoveryNtf",
@@ -208,8 +206,6 @@ local ProtoMsgType = {
[3309820798] = "HeroPutOnReq",
[3309822631] = "HeroPutOnRsp",
[3341173994] = "BountyBoughtNtf",
- [3359969683] = "ChapterGoldChallengeSettlementReq",
- [3359971516] = "ChapterGoldChallengeSettlementRsp",
[3363939655] = "TaskDailyAdReq",
[3363941488] = "TaskDailyAdRsp",
[3421550443] = "GlobalGiftReq",
@@ -226,6 +222,8 @@ local ProtoMsgType = {
[3512216171] = "BossRushPlayerInfoRsp",
[3525363388] = "TaskAchievementReq",
[3525365221] = "TaskAchievementRsp",
+ [3530560174] = "DungeonStartReq",
+ [3530562007] = "DungeonStartRsp",
[3531336428] = "TournArenaRankClaimRewardReq",
[3531338261] = "TournArenaRankClaimRewardRsp",
[3533710638] = "TournArenaBountyClaimReq",
@@ -247,10 +245,10 @@ local ProtoMsgType = {
[3629728287] = "ActivityPVPSettlementRsp",
[3629950931] = "PVPStageRewardReq",
[3629952764] = "PVPStageRewardRsp",
- [3694862366] = "BossRushFormationReq",
- [3694864199] = "BossRushFormationRsp",
[3739566473] = "SummerDataReq",
[3739568306] = "SummerDataRsp",
+ [3750411183] = "EquipWearReq",
+ [3750413016] = "EquipWearRsp",
[3757169544] = "BountyRewardReq",
[3757171377] = "BountyRewardRsp",
[3762291611] = "ActivityPVPStartReq",
@@ -281,14 +279,14 @@ local ProtoMsgType = {
[4099984587] = "BossRushExchangeRsp",
[4106156009] = "BountyLevelUnlockReq",
[4106157842] = "BountyLevelUnlockRsp",
- [4133057746] = "ChapterGoldChallengeFarmReq",
- [4133059579] = "ChapterGoldChallengeFarmRsp",
[4152754481] = "PVPChallengeStartReq",
[4152756314] = "PVPChallengeStartRsp",
[4155165814] = "SummerTaskClaimReq",
[4155167647] = "SummerTaskClaimRsp",
[4188104820] = "HeroFundAwardReq",
[4188106653] = "HeroFundAwardRsp",
+ [4192050044] = "DungeonSweepReq",
+ [4192051877] = "DungeonSweepRsp",
[4195650791] = "TriggerWeaponArmorGiftReq",
[4195652624] = "TriggerWeaponArmorGiftRsp",
[4250417467] = "PlayerInfoReq",
@@ -308,8 +306,6 @@ local ProtoMsgType = {
ChapterSettlementRsp = 132244689,
EnergyByADReq = 147147672,
EnergyByADRsp = 147149505,
- ChapterShardsChallengeStartReq = 236190053,
- ChapterShardsChallengeStartRsp = 236191886,
PVPOverCDReq = 252740891,
PVPOverCDRsp = 252742724,
ChangeAvatarReq = 295348381,
@@ -323,6 +319,8 @@ local ProtoMsgType = {
LevelUpRsp = 433809660,
GuideFundMarkReq = 516281556,
GuideFundMarkRsp = 516283389,
+ DungeonSettlementReq = 522621311,
+ DungeonSettlementRsp = 522623144,
FourteenBountyAwardReq = 524551468,
FourteenBountyAwardRsp = 524553301,
PigPlayUpdateNtf = 531558517,
@@ -344,8 +342,6 @@ local ProtoMsgType = {
SwitchFrontRsp = 817579102,
MatchReq = 822916593,
MatchRsp = 822918426,
- ChapterGoldChallengeStartReq = 834139466,
- ChapterGoldChallengeStartRsp = 834141299,
SummerBountyClaimByDiamondReq = 850670891,
SummerBountyClaimByDiamondRsp = 850672724,
ArenaBountyLevelUnlockReq = 904222760,
@@ -364,14 +360,16 @@ local ProtoMsgType = {
ItemUseRsp = 1114437583,
ActivityPVPDailyRewardsReq = 1150265172,
ActivityPVPDailyRewardsRsp = 1150267005,
+ EquipRefineReq = 1224176921,
+ EquipRefineRsp = 1224178754,
ActivityPVPMatchReq = 1283733956,
ActivityPVPMatchRsp = 1283735789,
BossRushTopReq = 1312685858,
BossRushTopRsp = 1312687691,
FourteenBountyExchangeAwardReq = 1326064687,
FourteenBountyExchangeAwardRsp = 1326066520,
- ChapterShardsChallengeSettlementReq = 1371198132,
- ChapterShardsChallengeSettlementRsp = 1371199965,
+ EquipDecomposeReq = 1405582465,
+ EquipDecomposeRsp = 1405584298,
ChapterDailyChallengeResetReq = 1433352538,
ChapterDailyChallengeResetRsp = 1433354371,
BindReq = 1471116409,
@@ -382,8 +380,6 @@ local ProtoMsgType = {
CardDailyRewardRsp = 1515382047,
MallDailyBuyReq = 1552772605,
MallDailyBuyRsp = 1552774438,
- ChapterShardsChallengeFarmReq = 1571184475,
- ChapterShardsChallengeFarmRsp = 1571186308,
ActPaidResultReq = 1584689751,
ActPaidResultRsp = 1584691584,
RecoveryNtf = 1635643251,
@@ -507,8 +503,6 @@ local ProtoMsgType = {
HeroPutOnReq = 3309820798,
HeroPutOnRsp = 3309822631,
BountyBoughtNtf = 3341173994,
- ChapterGoldChallengeSettlementReq = 3359969683,
- ChapterGoldChallengeSettlementRsp = 3359971516,
TaskDailyAdReq = 3363939655,
TaskDailyAdRsp = 3363941488,
GlobalGiftReq = 3421550443,
@@ -525,6 +519,8 @@ local ProtoMsgType = {
BossRushPlayerInfoRsp = 3512216171,
TaskAchievementReq = 3525363388,
TaskAchievementRsp = 3525365221,
+ DungeonStartReq = 3530560174,
+ DungeonStartRsp = 3530562007,
TournArenaRankClaimRewardReq = 3531336428,
TournArenaRankClaimRewardRsp = 3531338261,
TournArenaBountyClaimReq = 3533710638,
@@ -546,10 +542,10 @@ local ProtoMsgType = {
ActivityPVPSettlementRsp = 3629728287,
PVPStageRewardReq = 3629950931,
PVPStageRewardRsp = 3629952764,
- BossRushFormationReq = 3694862366,
- BossRushFormationRsp = 3694864199,
SummerDataReq = 3739566473,
SummerDataRsp = 3739568306,
+ EquipWearReq = 3750411183,
+ EquipWearRsp = 3750413016,
BountyRewardReq = 3757169544,
BountyRewardRsp = 3757171377,
ActivityPVPStartReq = 3762291611,
@@ -580,14 +576,14 @@ local ProtoMsgType = {
BossRushExchangeRsp = 4099984587,
BountyLevelUnlockReq = 4106156009,
BountyLevelUnlockRsp = 4106157842,
- ChapterGoldChallengeFarmReq = 4133057746,
- ChapterGoldChallengeFarmRsp = 4133059579,
PVPChallengeStartReq = 4152754481,
PVPChallengeStartRsp = 4152756314,
SummerTaskClaimReq = 4155165814,
SummerTaskClaimRsp = 4155167647,
HeroFundAwardReq = 4188104820,
HeroFundAwardRsp = 4188106653,
+ DungeonSweepReq = 4192050044,
+ DungeonSweepRsp = 4192051877,
TriggerWeaponArmorGiftReq = 4195650791,
TriggerWeaponArmorGiftRsp = 4195652624,
PlayerInfoReq = 4250417467,
@@ -607,8 +603,6 @@ local ProtoMsgType = {
ChapterSettlementRsp = "ChapterSettlementRsp",
EnergyByADReq = "EnergyByADReq",
EnergyByADRsp = "EnergyByADRsp",
- ChapterShardsChallengeStartReq = "ChapterShardsChallengeStartReq",
- ChapterShardsChallengeStartRsp = "ChapterShardsChallengeStartRsp",
PVPOverCDReq = "PVPOverCDReq",
PVPOverCDRsp = "PVPOverCDRsp",
ChangeAvatarReq = "ChangeAvatarReq",
@@ -622,6 +616,8 @@ local ProtoMsgType = {
LevelUpRsp = "LevelUpRsp",
GuideFundMarkReq = "GuideFundMarkReq",
GuideFundMarkRsp = "GuideFundMarkRsp",
+ DungeonSettlementReq = "DungeonSettlementReq",
+ DungeonSettlementRsp = "DungeonSettlementRsp",
FourteenBountyAwardReq = "FourteenBountyAwardReq",
FourteenBountyAwardRsp = "FourteenBountyAwardRsp",
PigPlayUpdateNtf = "PigPlayUpdateNtf",
@@ -643,8 +639,6 @@ local ProtoMsgType = {
SwitchFrontRsp = "SwitchFrontRsp",
MatchReq = "MatchReq",
MatchRsp = "MatchRsp",
- ChapterGoldChallengeStartReq = "ChapterGoldChallengeStartReq",
- ChapterGoldChallengeStartRsp = "ChapterGoldChallengeStartRsp",
SummerBountyClaimByDiamondReq = "SummerBountyClaimByDiamondReq",
SummerBountyClaimByDiamondRsp = "SummerBountyClaimByDiamondRsp",
ArenaBountyLevelUnlockReq = "ArenaBountyLevelUnlockReq",
@@ -663,14 +657,16 @@ local ProtoMsgType = {
ItemUseRsp = "ItemUseRsp",
ActivityPVPDailyRewardsReq = "ActivityPVPDailyRewardsReq",
ActivityPVPDailyRewardsRsp = "ActivityPVPDailyRewardsRsp",
+ EquipRefineReq = "EquipRefineReq",
+ EquipRefineRsp = "EquipRefineRsp",
ActivityPVPMatchReq = "ActivityPVPMatchReq",
ActivityPVPMatchRsp = "ActivityPVPMatchRsp",
BossRushTopReq = "BossRushTopReq",
BossRushTopRsp = "BossRushTopRsp",
FourteenBountyExchangeAwardReq = "FourteenBountyExchangeAwardReq",
FourteenBountyExchangeAwardRsp = "FourteenBountyExchangeAwardRsp",
- ChapterShardsChallengeSettlementReq = "ChapterShardsChallengeSettlementReq",
- ChapterShardsChallengeSettlementRsp = "ChapterShardsChallengeSettlementRsp",
+ EquipDecomposeReq = "EquipDecomposeReq",
+ EquipDecomposeRsp = "EquipDecomposeRsp",
ChapterDailyChallengeResetReq = "ChapterDailyChallengeResetReq",
ChapterDailyChallengeResetRsp = "ChapterDailyChallengeResetRsp",
BindReq = "BindReq",
@@ -681,8 +677,6 @@ local ProtoMsgType = {
CardDailyRewardRsp = "CardDailyRewardRsp",
MallDailyBuyReq = "MallDailyBuyReq",
MallDailyBuyRsp = "MallDailyBuyRsp",
- ChapterShardsChallengeFarmReq = "ChapterShardsChallengeFarmReq",
- ChapterShardsChallengeFarmRsp = "ChapterShardsChallengeFarmRsp",
ActPaidResultReq = "ActPaidResultReq",
ActPaidResultRsp = "ActPaidResultRsp",
RecoveryNtf = "RecoveryNtf",
@@ -806,8 +800,6 @@ local ProtoMsgType = {
HeroPutOnReq = "HeroPutOnReq",
HeroPutOnRsp = "HeroPutOnRsp",
BountyBoughtNtf = "BountyBoughtNtf",
- ChapterGoldChallengeSettlementReq = "ChapterGoldChallengeSettlementReq",
- ChapterGoldChallengeSettlementRsp = "ChapterGoldChallengeSettlementRsp",
TaskDailyAdReq = "TaskDailyAdReq",
TaskDailyAdRsp = "TaskDailyAdRsp",
GlobalGiftReq = "GlobalGiftReq",
@@ -824,6 +816,8 @@ local ProtoMsgType = {
BossRushPlayerInfoRsp = "BossRushPlayerInfoRsp",
TaskAchievementReq = "TaskAchievementReq",
TaskAchievementRsp = "TaskAchievementRsp",
+ DungeonStartReq = "DungeonStartReq",
+ DungeonStartRsp = "DungeonStartRsp",
TournArenaRankClaimRewardReq = "TournArenaRankClaimRewardReq",
TournArenaRankClaimRewardRsp = "TournArenaRankClaimRewardRsp",
TournArenaBountyClaimReq = "TournArenaBountyClaimReq",
@@ -845,10 +839,10 @@ local ProtoMsgType = {
ActivityPVPSettlementRsp = "ActivityPVPSettlementRsp",
PVPStageRewardReq = "PVPStageRewardReq",
PVPStageRewardRsp = "PVPStageRewardRsp",
- BossRushFormationReq = "BossRushFormationReq",
- BossRushFormationRsp = "BossRushFormationRsp",
SummerDataReq = "SummerDataReq",
SummerDataRsp = "SummerDataRsp",
+ EquipWearReq = "EquipWearReq",
+ EquipWearRsp = "EquipWearRsp",
BountyRewardReq = "BountyRewardReq",
BountyRewardRsp = "BountyRewardRsp",
ActivityPVPStartReq = "ActivityPVPStartReq",
@@ -879,14 +873,14 @@ local ProtoMsgType = {
BossRushExchangeRsp = "BossRushExchangeRsp",
BountyLevelUnlockReq = "BountyLevelUnlockReq",
BountyLevelUnlockRsp = "BountyLevelUnlockRsp",
- ChapterGoldChallengeFarmReq = "ChapterGoldChallengeFarmReq",
- ChapterGoldChallengeFarmRsp = "ChapterGoldChallengeFarmRsp",
PVPChallengeStartReq = "PVPChallengeStartReq",
PVPChallengeStartRsp = "PVPChallengeStartRsp",
SummerTaskClaimReq = "SummerTaskClaimReq",
SummerTaskClaimRsp = "SummerTaskClaimRsp",
HeroFundAwardReq = "HeroFundAwardReq",
HeroFundAwardRsp = "HeroFundAwardRsp",
+ DungeonSweepReq = "DungeonSweepReq",
+ DungeonSweepRsp = "DungeonSweepRsp",
TriggerWeaponArmorGiftReq = "TriggerWeaponArmorGiftReq",
TriggerWeaponArmorGiftRsp = "TriggerWeaponArmorGiftRsp",
PlayerInfoReq = "PlayerInfoReq",
diff --git a/lua/app/ui/common/cell/equip_cell.lua b/lua/app/ui/common/cell/equip_cell.lua
index 21af2237..48f4a19c 100644
--- a/lua/app/ui/common/cell/equip_cell.lua
+++ b/lua/app/ui/common/cell/equip_cell.lua
@@ -1,65 +1,141 @@
local EquipCell = class("EquipCell", BaseCell)
-function EquipCell:refresh(entity, showMask, showLv)
+function EquipCell:init()
local uiMap = self:getUIMap()
- local bg = uiMap["equip_cell.frame_bg"]
- local icon = uiMap["equip_cell.icon"]
- local partBg = uiMap["equip_cell.part_bg"]
- local mask = uiMap["equip_cell.mask"]
- local partIcon = uiMap["equip_cell.part_bg.icon"]
- local lvTx = uiMap["equip_cell.lv_tx"]
+ self.imgQlt = uiMap["equip_cell.content.img_qlt"]
+ self.imgIcon = uiMap["equip_cell.content.img_icon"]
+ self.rankNode = uiMap["equip_cell.content.rank"]
+ self.txRank = uiMap["equip_cell.content.rank.tx_rank"]
+ self.levelNode = uiMap["equip_cell.content.level"]
+ self.txLv = uiMap["equip_cell.content.level.tx_lv"]
+ self.imgUp = uiMap["equip_cell.content.img_up"]
+ self.mask = uiMap["equip_cell.mask"]
+ self.check = uiMap["equip_cell.check"]
+ self.lock = uiMap["equip_cell.lock"]
+ self.select = uiMap["equip_cell.select"]
+ self.light = uiMap["equip_cell.light"]
+ self.levelNode:setActive(false)
- bg:setSprite(entity:getFrameRes())
- icon:setSprite(entity:getIconRes())
- partBg:setSprite(entity:getPartBgRes())
- partIcon:setSprite(entity:getPartRes())
- lvTx:setText(I18N:getGlobalText(I18N.GlobalConst.LV_POINT, entity:getLv()))
-
- icon:setVisible(true)
- partBg:setVisible(true)
- mask:setVisible(showMask == true)
- lvTx:setVisible(showLv)
+ -- self:hideEffectUp()
end
-function EquipCell:refreshByCfg(id, showMask)
- local cfg = ConfigManager:getConfig("equip")[id]
- if not cfg then
+-- function EquipCell:setParentUI(parent)
+-- self.parentUI = parent
+-- end
+
+function EquipCell:refresh(entity, slotId, showMask, showCheck, showLock)
+ if entity == nil then
return
end
- local uiMap = self:getUIMap()
- local bg = uiMap["equip_cell.frame_bg"]
- local icon = uiMap["equip_cell.icon"]
- local partBg = uiMap["equip_cell.part_bg"]
- local partIcon = uiMap["equip_cell.part_bg.icon"]
- local mask = uiMap["equip_cell.mask"]
- local lvTx = uiMap["equip_cell.lv_tx"]
-
- bg:setSprite(GConst.ATLAS_PATH.ICON_EQUIP, "frame_" .. cfg.qlt)
- icon:setSprite(GFunc.getEquipIconRes(id))
- partBg:setSprite(GConst.ATLAS_PATH.ICON_EQUIP, "type_" .. cfg.qlt)
- partIcon:setSprite(GConst.ATLAS_PATH.ICON_EQUIP, "e" .. cfg.part)
-
- icon:setVisible(true)
- partBg:setVisible(true)
- mask:setVisible(showMask == true)
- lvTx:setVisible(false)
+ self:_refreshShow(entity:getQlt(), entity:getIconRes(), entity:getPartLevel(slotId), showMask, showCheck, showLock)
end
-function EquipCell:refreshByPart(part)
- local uiMap = self:getUIMap()
- local bg = uiMap["equip_cell.frame_bg"]
- local icon = uiMap["equip_cell.icon"]
- local partBg = uiMap["equip_cell.part_bg"]
- local mask = uiMap["equip_cell.mask"]
- local lvTx = uiMap["equip_cell.lv_tx"]
+function EquipCell:refreshByUid(uid)
+ self:refresh(DataManager.EquipData:getEntityByUid(uid))
+end
- bg:setSprite(GConst.ATLAS_PATH.ICON_EQUIP, "frame_empty")
- icon:setSprite(GConst.ATLAS_PATH.ICON_EQUIP, "empty_" .. part)
+-- message Equip {
+-- int64 uid = 1; // 唯一 id
+-- int32 cfg_id = 2; // 配置 id
+-- int32 init_id = 3; // 初始配置 id (升品前)
+-- repeated Attr purity_attrs = 4; // 洗炼属性
+-- repeated Attr new_purity_attrs = 5; // 未应用的洗炼属性
+-- }
+function EquipCell:refreshByServer(equip)
+ local id = equip.cfg_id
+ self:_refreshShow(DataManager.EquipData:getQlt(id), DataManager.EquipData:getIconRes(id))
+end
- icon:setVisible(true)
- partBg:setVisible(false)
- mask:setVisible(false)
- lvTx:setVisible(false)
+-- message EquipInfo {
+-- int32 cfg_id = 1; // 配置 ID
+-- int32 level = 2; // 槽位等级
+-- repeated Attr purity_attrs = 3; // 洗炼属性
+-- }
+function EquipCell:refreshByServer2(equip)
+ local id = equip.cfg_id
+ local lv = equip.level
+ self:_refreshShow(DataManager.EquipData:getQlt(id), DataManager.EquipData:getIconRes(id), lv)
+end
+
+function EquipCell:refreshByCfg(id, showMask, showCheck, showLock)
+ self:_refreshShow(DataManager.EquipData:getQlt(id), DataManager.EquipData:getIconRes(id), nil, showMask, showCheck, showLock)
+end
+
+function EquipCell:refreshByCustom(qlt, icon, lv, showMask, showCheck, showLock)
+ self:_refreshShow(qlt, icon, lv, showMask, showCheck, showLock)
+end
+
+function EquipCell:_refreshShow(qlt, icon, lv, showMask, showCheck, showLock)
+ if qlt then
+ self.imgQlt:setSprite(GConst.ATLAS_PATH.ICON_EQUIP, "frame_" .. qlt)
+ else
+ self.imgQlt:setSprite(GConst.ATLAS_PATH.ICON_EQUIP, "frame_0")
+ end
+
+ if icon then
+ self.imgIcon:setActive(true)
+ Logger.logHighlight("icon: %s", icon)
+ self.imgIcon:setSprite(GConst.ATLAS_PATH.ICON_EQUIP, icon)
+ else
+ self.imgIcon:setActive(false)
+ end
+
+ if lv then
+ self.levelNode:setActive(true)
+ self.txLv:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_2, lv))
+ else
+ self.levelNode:setActive(false)
+ end
+
+ self:showMask(showMask)
+ self:showCheck(showCheck)
+ self:showLock(showLock)
+ self:showSelect(false)
+ self:showLight(false)
+ self:setShowUp(false)
+end
+
+function EquipCell:refreshEmpty(part, showSelect)
+ self.imgQlt:setSprite(GConst.ATLAS_PATH.ICON_EQUIP, "frame_0")
+ -- self.imgIcon:setActive(true)
+ self.imgIcon:setSprite(GConst.ATLAS_PATH.ICON_EQUIP, "101")
+ self.rankNode:setActive(false)
+ self.levelNode:setActive(false)
+
+ self:showMask(false)
+ self:showCheck(false)
+ self:showLock(false)
+ self:showSelect(showSelect or false)
+ self:showLight(false)
+ self:setShowUp(false)
+end
+
+function EquipCell:setShowUp(show)
+ self.imgUp:setActive(show)
+end
+
+function EquipCell:setShowLv(show)
+ self.levelNode:setActive(show)
+end
+
+function EquipCell:showMask(show)
+ self.mask:setActive(show)
+end
+
+function EquipCell:showCheck(show)
+ self.check:setActive(show)
+end
+
+function EquipCell:showLock(show)
+ self.lock:setActive(show)
+end
+
+function EquipCell:showSelect(show)
+ self.select:setActive(show)
+end
+
+function EquipCell:showLight(show)
+ self.light:setActive(show)
end
function EquipCell:setTouchEnable(enable)
@@ -70,6 +146,10 @@ function EquipCell:addClickListener(func)
self:getBaseObject():addClickListener(func)
end
+function EquipCell:removeClickListener()
+ self:getBaseObject():removeClickListener()
+end
+
function EquipCell:getAnchoredPositionX()
return self:getBaseObject():getAnchoredPositionX()
end
@@ -82,12 +162,25 @@ function EquipCell:setActive(active)
self:getBaseObject():setActive(active)
end
-function EquipCell:addRedPoint(posX, posY, scale)
- self:getBaseObject():addRedPoint(posX, posY, scale)
-end
+-- function EquipCell:showEffectUp()
+-- if self.effectUp == nil and self.parentUI then
+-- EffectManager:loadUIEffectAsync("assets/prefabs/effects/ui/vfx_ui_b9_yjqh_b01.prefab", self.parentUI, self.baseObject, GConst.UI_EFFECT_ORDER.LEVEL5, function(obj)
+-- obj:setLocalScale(1, 1, 1)
+-- obj:setAnchoredPosition(0, 0, 0)
+-- obj:play()
+-- self.effectUp = obj
-function EquipCell:removeRedPoint()
- self:getBaseObject():removeRedPoint()
-end
+-- self.baseObject:performWithDelayGlobal(function()
+-- self:hideEffectUp()
+-- end, 0.5)
+-- end)
+-- end
+-- end
+
+-- function EquipCell:hideEffectUp()
+-- if self.effectUp then
+-- self.effectUp:setActive(false)
+-- end
+-- end
return EquipCell
diff --git a/lua/app/ui/equip.meta b/lua/app/ui/equip.meta
new file mode 100644
index 00000000..a806f03a
--- /dev/null
+++ b/lua/app/ui/equip.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 05db45ab1b69b4caeadabc7d32beeccc
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/lua/app/ui/equip/cell.meta b/lua/app/ui/equip/cell.meta
new file mode 100644
index 00000000..39e1da98
--- /dev/null
+++ b/lua/app/ui/equip/cell.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 60cd6534fa51148599e09729f9d5c657
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/lua/app/ui/equip/cell/equip_list_cell.lua b/lua/app/ui/equip/cell/equip_list_cell.lua
new file mode 100644
index 00000000..ef8eb59b
--- /dev/null
+++ b/lua/app/ui/equip/cell/equip_list_cell.lua
@@ -0,0 +1,29 @@
+local EquipListCell = class("EquipListCell", BaseCell)
+
+function EquipListCell:init()
+ local uiMap = self.baseObject:genAllChildren()
+ self.equipCell = uiMap["cell.equip_cell"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.EQUIP_CELL)
+ self.nameTx = uiMap["cell.name_tx"]
+ self.powerTx = uiMap["cell.power_tx"]
+ self.wearBtn = uiMap["cell.wear_btn"]
+ self.wearBtnTx = uiMap["cell.wear_btn.text"]
+ self.wearBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_30))
+
+ self.wearBtn:addClickListener(function()
+ -- if DataManager.DailyTaskData:canClaimTask(self.taskId) then
+ -- ModuleManager.TaskManager:claimDailyTask(self.taskId)
+ -- else
+ -- ModuleManager.TaskManager:taskGoto(self.taskType)
+ -- end
+ end)
+end
+
+function EquipListCell:refresh(entity, slotId)
+ self.entity = entity
+ self.slotId = slotId
+ self.nameTx:setText(entity:getName())
+ self.powerTx:setText(entity:getPower())
+ self.equipCell:refresh(entity, slotId)
+end
+
+return EquipListCell
\ No newline at end of file
diff --git a/lua/app/ui/equip/cell/equip_list_cell.lua.meta b/lua/app/ui/equip/cell/equip_list_cell.lua.meta
new file mode 100644
index 00000000..d21527f0
--- /dev/null
+++ b/lua/app/ui/equip/cell/equip_list_cell.lua.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 1f75da1774bd8474386e20575f24ae8c
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
diff --git a/lua/app/ui/equip/equip_list_ui.lua b/lua/app/ui/equip/equip_list_ui.lua
new file mode 100644
index 00000000..1e85effa
--- /dev/null
+++ b/lua/app/ui/equip/equip_list_ui.lua
@@ -0,0 +1,70 @@
+local EquipListUI = class("EquipListUI", BaseUI)
+
+local EQUIP_LIST_CELL = "app/ui/equip/cell/equip_list_cell"
+
+function EquipListUI:isFullScreen()
+ return false
+end
+
+function EquipListUI:getPrefabPath()
+ return "assets/prefabs/ui/equip/equip_list_ui.prefab"
+end
+
+function EquipListUI:onPressBackspace()
+ self:closeUI()
+end
+
+function EquipListUI:ctor(parmas)
+ self.heroEntity = parmas.heroEntity
+ self.equipPart = parmas.part
+ self.slotId = self.heroEntity:getMatchType()
+end
+
+function EquipListUI:onLoadRootComplete()
+ local uiMap = self.root:genAllChildren()
+
+ uiMap["equip_list_ui.bg.close_btn"]:addClickListener(function()
+ self:closeUI()
+ end)
+
+ self.equipCell = uiMap["equip_list_ui.bg.equip_cell"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.EQUIP_CELL)
+
+ self.titleTx = uiMap["equip_list_ui.bg.title_tx"]
+ self.scrollrect = uiMap["equip_list_ui.bg.scrollrect"]
+ self.scrollRectComp = uiMap["equip_list_ui.bg.scrollrect"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE)
+ self.scrollRectComp:addInitCallback(function()
+ return EQUIP_LIST_CELL
+ end)
+ self.scrollRectComp:addRefreshCallback(function(index, cell)
+ cell:refresh(self.equipList[index], self.slotId)
+ end)
+ self.scrollRectComp:clearCells()
+end
+
+function EquipListUI:onRefresh()
+ self:initList()
+ self:refreshEquipCell()
+ self:refreshScrollrect()
+
+ self.titleTx:setText(I18N:getGlobalText(I18N.GlobalConst.BAG_DESC_1))
+end
+
+function EquipListUI:refreshEquipCell()
+ local eid = DataManager.EquipData:getPartEquipUid(self.heroEntity:getMatchType(), self.equipPart)
+ if eid and eid > 0 then
+ local equipEntity = DataManager.EquipData:getEquipByUid(eid)
+ self.equipCell:refresh(equipEntity, false, true)
+ else
+ self.equipCell:refreshEmpty(self.equipPart)
+ end
+end
+
+function EquipListUI:initList()
+ self.equipList = DataManager.EquipData:getEquipListByPart(self.equipPart)
+end
+
+function EquipListUI:refreshScrollrect()
+ self.scrollRectComp:refillCells(#self.equipList)
+end
+
+return EquipListUI
\ No newline at end of file
diff --git a/lua/app/ui/equip/equip_list_ui.lua.meta b/lua/app/ui/equip/equip_list_ui.lua.meta
new file mode 100644
index 00000000..0bf68606
--- /dev/null
+++ b/lua/app/ui/equip/equip_list_ui.lua.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 09e8dcc22f3b44ea28c1f9d56695ec34
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
diff --git a/lua/app/ui/hero/equip_info_comp.lua b/lua/app/ui/hero/equip_info_comp.lua
new file mode 100644
index 00000000..94771735
--- /dev/null
+++ b/lua/app/ui/hero/equip_info_comp.lua
@@ -0,0 +1,108 @@
+local EquipInfoComp = class("EquipInfoComp", LuaComponent)
+
+function EquipInfoComp:init()
+ local uiMap = self:getUIMap()
+
+ self.atkNameTx = uiMap["equip_info.bg_5.atk_name_tx"]
+ self.atkTx = uiMap["equip_info.bg_5.atk_tx"]
+ self.hpNameTx = uiMap["equip_info.bg_6.hp_name_tx"]
+ self.hpTx = uiMap["equip_info.bg_6.hp_tx"]
+ self.attrBtn = uiMap["equip_info.bg_6.attr_btn"]
+ self.descTx = uiMap["equip_info.equip_node.up.desc_tx"]
+ self.descTx1 = uiMap["equip_info.equip_node.up.desc_tx_1"]
+ self.infoBtn = uiMap["equip_info.equip_node.up.info_btn"]
+ self.autoWaerBtn = uiMap["equip_info.equip_node.auto_waer_btn"]
+ self.autoWaerBtnTx = uiMap["equip_info.equip_node.auto_waer_btn.text"]
+ self.upBtn = uiMap["equip_info.equip_node.up_btn"]
+ self.upBtnTx = uiMap["equip_info.equip_node.up_btn.text"]
+ self.equipNode = uiMap["equip_info.equip_node"]
+ self.emptyTx = uiMap["equip_info.empty_tx"]
+
+ self.hpNameTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_2))
+ self.atkNameTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_3))
+ self.emptyTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_29))
+
+ self.equipCells = {}
+ self.suitTxs = {}
+ for i = 1, 6 do
+ self.suitTxs[i] = uiMap["equip_info.equip_node.up.suit_tx_" .. i]
+ self.equipCells[i] = uiMap["equip_info.equip_node.equip_cell_" .. i]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.EQUIP_CELL)
+ self.equipCells[i]:addClickListener(function()
+ ModuleManager.EquipManager:showEquipListUI(self.heroEntity, i)
+ end)
+ end
+
+ -- self.txAttr:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_6))
+ -- self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_16))
+ -- self.txUp:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_3))
+ self.attrBtn:addClickListener(function()
+ UIManager:showUI("app/ui/hero/hero_attr_ui", {heroEntity = self.heroEntity})
+ end)
+end
+
+function EquipInfoComp:setParentUI(ui)
+ self.uiRoot = ui
+end
+
+function EquipInfoComp:setHeroData(heroEntity)
+ self.heroEntity = heroEntity
+ self.selectPart = self.selectPart or GConst.EquipConst.PART_TYPE.EQUIP_1
+end
+
+function EquipInfoComp:refresh()
+ self:refreshAttr()
+ self:refreshEquip()
+end
+
+function EquipInfoComp:refreshAttr()
+ self.hpNameTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_2))
+ self.atkNameTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_3))
+
+ local lv = self.heroEntity:getLv()
+ local hpStr
+ local atkStr
+ if not self.heroEntity:isActived() then
+ hpStr = self.heroEntity:getCfgHp(self.heroEntity:getBeginLv()) // GConst.DEFAULT_FACTOR
+ atkStr = self.heroEntity:getCfgAtk(self.heroEntity:getBeginLv()) // GConst.DEFAULT_FACTOR
+ else
+ local curHp = self.heroEntity:getHp() // GConst.DEFAULT_FACTOR
+ local curAtk = self.heroEntity:getAtk() // GConst.DEFAULT_FACTOR
+ local addHp = (self.heroEntity:getCfgHp(lv + 1) - self.heroEntity:getCfgHp()) // GConst.DEFAULT_FACTOR
+ local addAtk = (self.heroEntity:getCfgAtk(lv + 1) - self.heroEntity:getCfgAtk()) // GConst.DEFAULT_FACTOR
+ if addHp <= 0 then
+ hpStr = curHp
+ else
+ hpStr = curHp .. "+" .. addHp .. ""
+ end
+ if addAtk <= 0 then
+ atkStr = curAtk
+ else
+ atkStr = curAtk .. "+" .. addAtk .. ""
+ end
+ end
+ self.hpTx:setText(hpStr)
+ self.atkTx:setText(atkStr)
+end
+
+function EquipInfoComp:refreshEquip()
+ self.curFormation = DataManager.FormationData:getStageFormation()
+ if self.curFormation[self.heroEntity:getMatchType()] ~= self.heroEntity:getCfgId() then
+ self.emptyTx:setActive(true)
+ self.equipNode:setActive(false)
+ return
+ end
+ self.emptyTx:setActive(false)
+ self.equipNode:setActive(true)
+ for part = 1, 6 do
+ local eid = DataManager.EquipData:getPartEquipUid(self.heroEntity:getMatchType(), part)
+ if eid and eid > 0 then
+ local equipEntity = DataManager.EquipData:getEquipByUid(eid)
+ self.equipCells[part]:refresh(equipEntity, false, true)
+ else
+ -- self.equipCells[part]:refreshByCustom(nil, part)
+ self.equipCells[part]:refreshEmpty(part)
+ end
+ end
+end
+
+return EquipInfoComp
\ No newline at end of file
diff --git a/lua/app/ui/hero/equip_info_comp.lua.meta b/lua/app/ui/hero/equip_info_comp.lua.meta
new file mode 100644
index 00000000..19727637
--- /dev/null
+++ b/lua/app/ui/hero/equip_info_comp.lua.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 1997c9b02ba3f4a47ba864ff1199b6cb
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
diff --git a/lua/app/ui/hero/hero_detail_ui.lua b/lua/app/ui/hero/hero_detail_ui.lua
index c4bc9076..be9b632b 100644
--- a/lua/app/ui/hero/hero_detail_ui.lua
+++ b/lua/app/ui/hero/hero_detail_ui.lua
@@ -1,7 +1,7 @@
local HeroDetailUI = class("HeroDetailUI", BaseUI)
local COMP_HERO = "app/ui/hero/hero_info_comp"
local COMP_STAR = "app/ui/hero/star_info_comp"
-local COMP_SKIN = "app/ui/hero/skin_info_comp"
+local COMP_EQUIP = "app/ui/hero/equip_info_comp"
local SIZE_DELTA_Y_HERO = 942
local SIZE_DELTA_Y_LOOK_HERO = 802
@@ -37,26 +37,11 @@ function HeroDetailUI:onLoadRootComplete()
self:closeUI()
end)
- -- self.commonInfo = uiMap["hero_detail_ui.common"]
self.heroInfo = uiMap["hero_detail_ui.hero_info"]
self.starInfo = uiMap["hero_detail_ui.star_info"]
- self.skinInfo = uiMap["hero_detail_ui.skin_info"]
+ self.equipInfo = uiMap["hero_detail_ui.equip_info"]
self.titleTx = uiMap["hero_detail_ui.common.name_tx"]
self.bg = uiMap["hero_detail_ui.common.bg"]
- -- self.btnHero = uiMap["hero_detail_ui.common.btns.btn_hero"]
- -- self.txHero1 = uiMap["hero_detail_ui.common.btns.btn_hero.tx_btn"]
- -- self.selectHero = uiMap["hero_detail_ui.common.btns.btn_hero.select"]
- -- self.txHero2 = uiMap["hero_detail_ui.common.btns.btn_hero.select.tx_select"]
- -- self.btnStar = uiMap["hero_detail_ui.common.btns.btn_star"]
- -- self.lockStar = uiMap["hero_detail_ui.common.btns.btn_star.content.img_lock"]
- -- self.txStar1 = uiMap["hero_detail_ui.common.btns.btn_star.content.tx_btn"]
- -- self.selectStar = uiMap["hero_detail_ui.common.btns.btn_star.select"]
- -- self.txStar2 = uiMap["hero_detail_ui.common.btns.btn_star.select.tx_select"]
- -- self.btnSkin = uiMap["hero_detail_ui.common.btns.btn_skin"]
- -- self.lockSkin = uiMap["hero_detail_ui.common.btns.btn_skin.content.img_lock"]
- -- self.txSkin1 = uiMap["hero_detail_ui.common.btns.btn_skin.content.tx_btn"]
- -- self.selectSkin = uiMap["hero_detail_ui.common.btns.btn_skin.select"]
- -- self.txSkin2 = uiMap["hero_detail_ui.common.btns.btn_skin.select.tx_select"]
self.leftBtn = uiMap["hero_detail_ui.common.left_btn"]
self.rightBtn = uiMap["hero_detail_ui.common.right_btn"]
@@ -69,13 +54,15 @@ function HeroDetailUI:onLoadRootComplete()
self.qltBg = uiMap["hero_detail_ui.common.qlt_bg"]
self.qltBgTx = uiMap["hero_detail_ui.common.qlt_bg.qlt_tx"]
self.starComp = uiMap["hero_detail_ui.common.hero_node.star_cell"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.STAR_CELL)
+ self.btnsLayout = uiMap["hero_detail_ui.common.btns"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT)
+ self.redNodeLayout = uiMap["hero_detail_ui.red_node"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT)
- self.btnTxs = {I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_4), I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_16)}
+ self.btnTxs = {I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_4), I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_16), I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_1)}
self.pageBtns = {}
self.pageBtnTxs = {}
self.pageBtnLocks = {}
self.pageRedImgs = {}
- for i = 1, 2 do
+ for i = 1, 3 do
self.pageBtns[i] = uiMap["hero_detail_ui.common.btns.page_btn_" .. i]
self.pageBtnTxs[i] = uiMap["hero_detail_ui.common.btns.page_btn_" .. i .. ".text"]
self.pageBtnLocks[i] = uiMap["hero_detail_ui.common.btns.page_btn_" .. i .. ".lock_img"]
@@ -92,29 +79,6 @@ function HeroDetailUI:onLoadRootComplete()
end)
end
- -- self.txHero1:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_4))
- -- self.txHero2:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_4))
- -- self.txStar1:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_1))
- -- self.txStar2:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_1))
- -- self.txSkin1:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_2))
- -- self.txSkin2:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_2))
- -- self.txStar1:setText("升星")
- -- self.txStar2:setText("升星")
- -- self.txSkin1:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN))
- -- self.txSkin2:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN))
- -- self.powerTx:setText(self.heroEntity:getPower())
- -- if not DataManager.HeroData:isStarOpen() then
- -- self.lockStar:setVisible(true)
- -- GFunc.centerImgAndTx(self.lockStar, self.txStar1, 5)
- -- else
- -- self.lockStar:setVisible(false)
- -- end
- -- if not DataManager.HeroData:isSkinOpen() then
- -- self.lockSkin:setVisible(true)
- -- GFunc.centerImgAndTx(self.lockSkin, self.txSkin1, 5)
- -- else
- -- self.lockSkin:setVisible(false)
- -- end
self.leftBtn:addClickListener(function()
if not self:isShowLeftArrow() then
return
@@ -139,7 +103,7 @@ function HeroDetailUI:onLoadRootComplete()
if part == GConst.EquipConst.PART_TYPE.STAR then
self.compStar:playEffect(true, true)
else
- self.compSkin:playUpgradeEffect(part)
+ self.compEquip:playUpgradeEffect(part)
end
self:refreshPageBtn()
end)
@@ -147,7 +111,7 @@ function HeroDetailUI:onLoadRootComplete()
if part == GConst.EquipConst.PART_TYPE.STAR then
self.compStar:playEffect(true, false)
else
- self.compSkin:playUpgradeEffect(part)
+ self.compEquip:playUpgradeEffect(part)
end
self:refreshPageBtn()
end)
@@ -165,6 +129,8 @@ function HeroDetailUI:getIsOpen(page)
return true
elseif page == GConst.HeroConst.PANEL_TYPE.STAR then
return DataManager.HeroData:isStarOpen()
+ elseif page == GConst.HeroConst.PANEL_TYPE.EQUIP then
+ return true
end
return false
end
@@ -220,8 +186,8 @@ function HeroDetailUI:refreshPageInfo()
self:showHeroInfo()
elseif self.page == GConst.HeroConst.PANEL_TYPE.STAR then
self:showStarInfo()
- elseif self.page == GConst.HeroConst.PANEL_TYPE.SKIN then
- self:showskinInfo()
+ elseif self.page == GConst.HeroConst.PANEL_TYPE.EQUIP then
+ self:showEquipInfo()
end
self:refreshPageBtn()
end
@@ -231,14 +197,14 @@ function HeroDetailUI:refreshPageBtn()
if self.onlyLook then -- 仅查看的不显示升级和激活按钮
self.leftBtn:setActive(false)
self.rightBtn:setActive(false)
- for i = 1, 2 do
+ for i = 1, 3 do
self.pageBtns[i]:setActive(false)
self.pageRedImgs[i]:setActive(false)
end
else
self.leftBtn:setActive(self:isShowLeftArrow())
self.rightBtn:setActive(self:isShowRightArrow())
- for i = 1, 2 do
+ for i = 1, 3 do
self.pageBtns[i]:setActive(true)
if self.page == i then
self.pageBtns[i]:setSprite(GConst.ATLAS_PATH.COMMON, "common_tab_1")
@@ -254,11 +220,8 @@ end
function HeroDetailUI:showHeroInfo()
self.heroInfo:setActive(true)
- -- self.selectHero:setActive(true)
self.starInfo:setActive(false)
- -- self.selectStar:setActive(false)
- self.skinInfo:setActive(false)
- -- self.selectSkin:setActive(false)
+ self.equipInfo:setActive(false)
self.bg:setActive(true)
local power = self.heroEntity:getPower()
@@ -276,11 +239,8 @@ end
function HeroDetailUI:showStarInfo()
self.heroInfo:setActive(false)
- -- self.selectHero:setActive(false)
self.starInfo:setActive(true)
- -- self.selectStar:setActive(true)
- self.skinInfo:setActive(false)
- -- self.selectSkin:setActive(false)
+ self.equipInfo:setActive(false)
self.bg:setActive(true)
if not self.compStar then
@@ -294,24 +254,21 @@ function HeroDetailUI:showStarInfo()
self.compStar:refresh()
end
-function HeroDetailUI:showskinInfo()
+function HeroDetailUI:showEquipInfo()
self.heroInfo:setActive(false)
- -- self.selectHero:setActive(false)
self.starInfo:setActive(false)
- -- self.selectStar:setActive(false)
- self.skinInfo:setActive(true)
- -- self.selectSkin:setActive(true)
+ self.equipInfo:setActive(true)
self.bg:setActive(true)
- if not self.compSkin then
- self.skinInfo:initPrefabHelper()
- self.skinInfo:genAllChildren()
- self.compSkin = self.skinInfo:addLuaComponent(COMP_SKIN)
- self.compSkin:setParentUI(self)
+ if not self.compEquip then
+ self.equipInfo:initPrefabHelper()
+ self.equipInfo:genAllChildren()
+ self.compEquip = self.equipInfo:addLuaComponent(COMP_EQUIP)
+ self.compEquip:setParentUI(self)
end
- self.compSkin:setHeroData(self.heroEntity)
- self.compSkin:refresh()
+ self.compEquip:setHeroData(self.heroEntity)
+ self.compEquip:refresh()
end
-- 是否显示左箭头
diff --git a/lua/app/userdata/equip/equip_data.lua b/lua/app/userdata/equip/equip_data.lua
index eb48a04f..60f80164 100644
--- a/lua/app/userdata/equip/equip_data.lua
+++ b/lua/app/userdata/equip/equip_data.lua
@@ -33,7 +33,7 @@ function EquipData:init(data)
end
function EquipData:setDirty()
- self.data.isDirty = not self.data.isDirty
+ self.data.isDirty = not self.data.isDirty
end
-- 武器功能是否开启
@@ -105,6 +105,12 @@ end
function EquipData:getBaseAttr(id)
return self:getConfig(id).base_attr
end
+
+-- 装备名字
+function EquipData:getName(id)
+ return I18N:getText("equip", id, "name")
+end
+
--@endregion
--@region 装备基础
@@ -127,6 +133,19 @@ function EquipData:getAllEquips()
return self.allEquips
end
+function EquipData:getEquipListByPart(part)
+ local list = {}
+ for _, v in pairs(self.allEquips) do
+ if v:getPart() == part then
+ table.insert(list, v)
+ end
+ end
+ table.sort(list, function (a, b)
+ return a:getPower() > b:getPower()
+ end)
+ return list
+end
+
function EquipData:getEquipByUid(uid)
if self.allEquips[uid] then
return self.allEquips[uid]
@@ -134,6 +153,29 @@ function EquipData:getEquipByUid(uid)
end
--@endregion
+--@region 穿戴
+--装备穿戴
+function EquipData:onWearSuccess(soltId, uids)
+ for i,uid in ipairs(uids) do
+ local equip = self:getEquipByUid(uid)
+ local part = equip:getPart()
+ if part then
+ local oldUid = self.slots[soltId].parts[part].equip_uid
+ for i,info in ipairs(self.slots) do
+ if i ~= soltId then
+ if info.parts[part].equip_uid == uid then
+ info.parts[part].equip_uid = oldUid
+ end
+ end
+ end
+ self.slots[soltId].parts[part].equip_uid = uid
+ end
+ end
+ self:setDirty()
+ -- DataManager.ForceData:updateTeamPower()
+end
+--@endregion
+
--@region 六个部位装备的强化与精炼
--获取对应位置的装备Id
function EquipData:getPartEquipUid(slotId, part)
@@ -183,7 +225,7 @@ function EquipData:getPartRefineFailPro(slotId, part)
if partInfo then
local cfgRefine = self:getRefineConfig(partInfo.refine + 1)
if cfgRefine then
- return (cfgRefine.base_chance + partInfo.refine_fail * cfgRefine.chance_fail) / GConst.DEFAULT_FACTOR
+ return (cfgRefine.base_chance + partInfo.refine_fail * cfgRefine.chance_fail) / GConst.DEFAULT_FACTOR
end
end
end
diff --git a/lua/app/userdata/equip/equip_entity.lua b/lua/app/userdata/equip/equip_entity.lua
index e5d82d65..36b93096 100644
--- a/lua/app/userdata/equip/equip_entity.lua
+++ b/lua/app/userdata/equip/equip_entity.lua
@@ -1,7 +1,10 @@
local EquipEntity = class("EquipEntity", BaseData)
+local EquipCfg = ConfigManager:getConfig("equip")
+
function EquipEntity:setDirty()
self.allAttrs = nil
+ self.curPower = nil
end
function EquipEntity:ctor(equip)
@@ -24,6 +27,7 @@ end
function EquipEntity:setId(id)
self.id = id
+ self.config = EquipCfg[id]
self:setDirty()
end
@@ -34,19 +38,19 @@ end
--@region 配置
function EquipEntity:getPart()
- return DataManager.EquipData:getPart(self:getId())
+ return self.config.type
end
function EquipEntity:getQlt()
- return DataManager.EquipData:getQlt(self:getId())
+ return self.config.qlt
end
function EquipEntity:getStar()
- return DataManager.EquipData:getStar(self:getId())
+ return self.config.star
end
function EquipEntity:getIconRes()
- return DataManager.EquipData:getIconRes(self:getId())
+ return self.config.icon
end
function EquipEntity:getEntityType()
@@ -57,18 +61,18 @@ function EquipEntity:getName()
return DataManager.EquipData:getName(self:getId())
end
-function EquipEntity:getNameQltColor()
- return string.format("%s", GFunc.getQltColor(self:getQlt()), self:getName())
-end
+-- function EquipEntity:getNameQltColor()
+-- return string.format("%s", GFunc.getQltColor(self:getQlt()), self:getName())
+-- end
-function EquipEntity:getPartName()
- return I18N:getGlobalText(GConst.EquipConst.EQUIP_PART_NAME[self:getPart()])
-end
+-- function EquipEntity:getPartName()
+-- return I18N:getGlobalText(GConst.EquipConst.EQUIP_PART_NAME[self:getPart()])
+-- end
--@endregion
--@region 属性
function EquipEntity:initBaseAttr()
- self.baseAttr = DataManager.EquipData:getBaseAttr(self:getId())
+ self.baseAttrs = DataManager.EquipData:getBaseAttr(self:getId())
end
function EquipEntity:setExtraAttr(attr)
@@ -102,9 +106,10 @@ function EquipEntity:getAllAttr()
if self.allAttrs == nil then
self.allAttrs = {}
-- 基础
- for attrName, attrNum in pairs(self:getBaseAttrs()) do
- self.allAttrs[attrName] = (self.allAttrs[attrName] or 0) + attrNum
- end
+ -- for attrName, attrNum in pairs(self:getBaseAttrs()) do
+ -- self.allAttrs[attrName] = (self.allAttrs[attrName] or 0) + attrNum
+ -- end
+ self.allAttrs[self.baseAttrs.type] = (self.allAttrs[self.baseAttrs.type] or 0) + self.baseAttrs.num
-- 额外属性
for attrName, attrNum in pairs(self:getExtraAttrs()) do
self.allAttrs[attrName] = (self.allAttrs[attrName] or 0) + attrNum
@@ -119,55 +124,43 @@ end
--@region 战力
function EquipEntity:setPowerDirty()
- self.data.isPowerDirty = not self.data.isPowerDirty
+ self.data.isPowerDirty = not self.data.isPowerDirty
end
function EquipEntity:getPower()
- return self.curPower
+ if not self.curPower then
+ self:getAllAttr()
+ end
+ return self.curPower
end
-- 计算战斗力
function EquipEntity:calcPower()
- if self.lastPower then
- self.lastPower = self.curPower
- end
- self.curPower = math.floor(self:_getAttrPower())
- if not self.lastPower then
- self.lastPower = self.curPower
- end
+ if self.lastPower then
+ self.lastPower = self.curPower
+ end
+ self.curPower = math.floor(self:_getAttrPower())
+ if not self.lastPower then
+ self.lastPower = self.curPower
+ end
- if self.lastPower ~= self.curPower then
- self:setPowerDirty()
- end
+ if self.lastPower ~= self.curPower then
+ self:setPowerDirty()
+ end
end
function EquipEntity:_getAttrPower()
- -- local atk = self.baseAttr.num + (self.extraAttrs[GConst.BattleConst.ATTR_NAME.ATTR_ATK_PRIVATE] or 0)
- -- local atkPower = AttrNameCfg[GConst.BattleConst.ATTR_NAME.ATTR_ATK_PRIVATE].power or 0
- -- local crit = self.extraAttrs[GConst.BattleConst.ATTR_NAME.CRIT_PRIVATE] or 0 --暴击
- -- local critPower = AttrNameCfg[GConst.BattleConst.ATTR_NAME.CRIT_PRIVATE].power or 0
- -- local critTime = self.extraAttrs[GConst.BattleConst.ATTR_NAME.CRIT_TIME_PRIVATE] or 0 --暴伤
- -- local critTimePower = AttrNameCfg[GConst.BattleConst.ATTR_NAME.CRIT_TIME_PRIVATE].power or 0
- -- local def = self.extraAttrs[GConst.BattleConst.ATTR_NAME.DEF_DEC_PRIVATE] or 0 --破防
- -- local defPower = AttrNameCfg[GConst.BattleConst.ATTR_NAME.DEF_DEC_PRIVATE].power or 0
- -- def = def / GConst.DEFAULT_FACTOR / (10 * GFunc.getBattleConstIntValue("def_dec_constant_k") + def/ GConst.DEFAULT_FACTOR)
- -- local score = atk/GConst.DEFAULT_FACTOR
- -- *(1+crit/GConst.DEFAULT_FACTOR*(critPower / GConst.DEFAULT_FACTOR )
- -- *critTime/GConst.DEFAULT_FACTOR*(critTimePower/ GConst.DEFAULT_FACTOR))
- -- *(1+def*defPower/GConst.DEFAULT_FACTOR)
- -- return math.floor(score)
-
local power = 0
- for attrName, attrNum in pairs(self:getAllAttr()) do
+ local attr = self:getAllAttr()
+ for attrName, attrNum in pairs(attr) do
local cfg = GFunc.getAttrNameCfg()[attrName]
if cfg then
- local realValue = attrNum
- -- 特殊处理,玩家基础暴击伤害不算
- if attrName == GConst.BattleConst.ATTR_NAME.CRIT_TIME then
- realValue = attrNum - 15000
- end
-
- power = power + math.floor(realValue * cfg.power / GConst.DEFAULT_FACTOR / GConst.DEFAULT_FACTOR + 0.0000001)
+ local realValue = attrNum
+ -- 特殊处理,玩家基础暴击伤害不算
+ if attrName == GConst.BattleConst.ATTR_NAME.CRIT_TIME then
+ realValue = attrNum - 15000
+ end
+ power = power + math.floor(realValue * cfg.power / GConst.DEFAULT_FACTOR + 0.0000001)
end
end
@@ -175,4 +168,9 @@ function EquipEntity:_getAttrPower()
end
--@endregion
+--@region 数据
+function EquipEntity:getPartLevel(slotId)
+ return DataManager.EquipData:getPartLevel(slotId, self:getPart())
+end
+--@endregion
return EquipEntity
\ No newline at end of file
diff --git a/lua/app/userdata/player/player_data.lua b/lua/app/userdata/player/player_data.lua
index 00814fe2..edf776c1 100644
--- a/lua/app/userdata/player/player_data.lua
+++ b/lua/app/userdata/player/player_data.lua
@@ -610,4 +610,111 @@ function PlayerData:getPlayerExpCfg()
return PlayerExpCfg
end
--@endregion
+
+--@region 战斗力
+function PlayerData:getShowPower()
+ if self.curPower == nil then
+ self:calcPower()
+ end
+ return self.curPower
+end
+
+function PlayerData:getLastPower()
+ return self.lastPower or 0
+end
+
+function PlayerData:clearLastPower()
+ self.lastPower = nil
+end
+
+-- 计算战斗力
+function PlayerData:calcPower()
+ if self.lastPower then
+ self.lastPower = self.curPower
+ end
+
+ local attrPower = 0
+ local formation = DataManager.FormationData:getStageFormation()
+ for matchType, heroEntity in pairs(formation) do
+ -- 属性战力
+ for attrName, value in pairs(heroEntity:getAllAttr()) do
+ local cfg = GFunc.getAttrNameCfg()[attrName]
+ if cfg and cfg.power then
+ -- 特殊处理,玩家基础暴击伤害不算
+ if attrName == GConst.BattleConst.ATTR_NAME.CRIT_TIME then
+ value = value - 15000
+ end
+ attrPower = attrPower + math.floor(value * cfg.power / GConst.DEFAULT_FACTOR + 0.0000001)
+ end
+ end
+ end
+
+ -- -- 天赋战力
+ -- local talentPower = DataManager.TalentData:getPower()
+ -- -- 英雄战力
+ -- local forcePower = DataManager.ForceData:getPower()
+ -- -- 英雄皮肤战力
+ -- local forceSkinPower = DataManager.ForceData:getSkinPower()
+ -- -- 英雄装备战力
+ -- local equipPower = DataManager.ForceEquipData:getPower()
+ -- -- 领主时装战力
+ -- local skinPower = DataManager.SkinData:getPower()
+ -- -- 宝物战力
+ -- local collectionPower = DataManager.CollectionData:getPower()
+ -- -- 防线战力
+ -- local defenseLinePower = DataManager.DefenseLineData:getPower()
+ -- -- 防线皮肤战力
+ -- local defenseLineSkinPower = DataManager.DefenseLineData:getSkinPower()
+ -- -- 宠物战力
+ -- local petPower = DataManager.PetData:getPower()
+ -- -- 魔法书战力
+ -- local magicBookPower = DataManager.MagicBookData:getPower()
+ -- -- 魔法阵战力
+ -- local magicCirclePower = DataManager.MagicCircleData:getPower()
+
+ self.curPower = 0
+ self.curPower = self.curPower + attrPower
+ -- self.curPower = self.curPower + talentPower
+ -- self.curPower = self.curPower + forcePower
+ -- self.curPower = self.curPower + forceSkinPower
+ -- self.curPower = self.curPower + equipPower
+ -- self.curPower = self.curPower + skinPower
+ -- self.curPower = self.curPower + collectionPower
+ -- self.curPower = self.curPower + defenseLinePower
+ -- self.curPower = self.curPower + defenseLineSkinPower
+ -- self.curPower = self.curPower + petPower
+ -- self.curPower = self.curPower + magicBookPower
+ -- self.curPower = self.curPower + magicCirclePower
+
+ -- if EDITOR_MODE and self:getIsSelf() then
+ -- Logger.logHighlight("PlayerEntity 总战力:" .. self.curPower)
+ -- Logger.logHighlight("PlayerEntity 属性战力:" .. attrPower)
+ -- Logger.logHighlight("PlayerEntity 天赋战力:" .. talentPower)
+ -- Logger.logHighlight("PlayerEntity 英雄战力:" .. forcePower)
+ -- Logger.logHighlight("PlayerEntity 英雄皮肤战力:" .. forceSkinPower)
+ -- Logger.logHighlight("PlayerEntity 英雄装备战力:" .. equipPower)
+ -- Logger.logHighlight("PlayerEntity 领主时装战力:" .. skinPower)
+ -- Logger.logHighlight("PlayerEntity 宝物战力:" .. collectionPower)
+ -- Logger.logHighlight("PlayerEntity 防线战力:" .. defenseLinePower)
+ -- Logger.logHighlight("PlayerEntity 防线皮肤战力:" .. defenseLineSkinPower)
+ -- Logger.logHighlight("PlayerEntity 宠物战力:" .. petPower)
+ -- Logger.logHighlight("PlayerEntity 魔法书战力:" .. magicBookPower)
+ -- Logger.logHighlight("PlayerEntity 魔法阵战力:" .. magicCirclePower)
+ -- end
+
+ if self:getIsSelf() then
+ if not self.lastPower then
+ self.lastPower = self.curPower
+ end
+ if self.lastPower ~= self.curPower then
+ self:setPowerDirty()
+ end
+ end
+end
+
+function PlayerData:setPowerDirty()
+ self.data.isPowerDirty = not self.data.isPowerDirty
+end
+--@endregion
+
return PlayerData
\ No newline at end of file