装备红点

This commit is contained in:
puxuan 2025-10-13 12:01:45 +08:00
parent ba71dcb767
commit 182a613663
9 changed files with 266 additions and 16 deletions

View File

@ -42,6 +42,9 @@ end
--@region 协议
-- 装备穿戴
function EquipManager:onEquipWearReq(slotId, ids)
if table.nums(ids) <= 0 then
return
end
local params = {}
params.slot = slotId
params.ids = ids

View File

@ -155,6 +155,13 @@ function EquipCell:setActive(active)
self:getBaseObject():setActive(active)
end
function EquipCell:addRedPoint(offsetX, offsetY, scale)
self:getBaseObject():addRedPoint(offsetX, offsetY, scale)
end
function EquipCell:removeRedPoint()
self:getBaseObject():removeRedPoint()
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)

View File

@ -22,7 +22,7 @@ function EquipGetEesonateUI:onLoadRootComplete()
self:closeUI()
end)
self.layout = uiMap["equip_get_resonate_ui.bg.b'gattr_bg.layout"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT)
self.layout = uiMap["equip_get_resonate_ui.bg.attr_bg.layout"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_HORIZONTAL_OR_VERTICAL_LAYOUT)
self.attrNextValueTx = uiMap["equip_get_resonate_ui.bg.attr_bg.layout.attr_next_value_tx"]
-- self.effect = uiMap["equip_get_resonate_ui.bg.vfx_b13_ui_equip_gongmin_b01"]
uiMap["equip_get_resonate_ui.bg.title_tx"]:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_33))

View File

@ -120,7 +120,7 @@ function EquipGrowthUI:onLoadRootComplete()
end)
end
self.btnTxs = {I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_4), I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_16)}
self.btnTxs = {I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_19), I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_20)}
self.pageInfos = {}
self.pageBtns = {}
self.pageBtnTxs = {}

View File

@ -163,7 +163,7 @@ function EquipInfoUI:refreshAllAttr()
if baseValueAdd <= 0 then
self.attrValueAddTx:setText(GConst.EMPTY_STRING)
else
self.attrValueAddTx:setText("<color=#09FF00>(+".. math.floor(baseValueAdd) ..")</color>")
self.attrValueAddTx:setText("<color=#049500>(+".. math.floor(baseValueAdd) ..")</color>")
end
local attrs = self.entity:getExtraList()

View File

@ -6,8 +6,8 @@ function EquipInfoComp:init()
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.autoWearBtn = uiMap["equip_info.equip_node.auto_wear_btn"]
self.autoWearBtnTx = uiMap["equip_info.equip_node.auto_wear_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"]
@ -15,7 +15,7 @@ function EquipInfoComp:init()
self.emptyTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_7))
self.upBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_3))
self.autoWaerBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_2))
self.autoWearBtnTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_2))
self.equipCells = {}
self.suitTxs = {}
@ -46,7 +46,7 @@ function EquipInfoComp:init()
self.descTx:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_4))
self.descTx1:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_HERO_DESC_5))
self.autoWaerBtn:addClickListener(function()
self.autoWearBtn:addClickListener(function()
local soltId = self.heroEntity:getMatchType()
local listUids = {}
for i = 1, 6 do
@ -58,7 +58,21 @@ function EquipInfoComp:init()
ModuleManager.EquipManager:onEquipWearReq(soltId, listUids)
end)
self.upBtn:addClickListener(function()
ModuleManager.EquipManager:showEquipGrowthUI(self.heroEntity:getMatchType(), 1)
local soltId = self.heroEntity:getMatchType()
local part
for i = 1, 6 do
local eid = DataManager.EquipData:getPartEquipUid(soltId, i)
if eid and eid > 0 then
part = part or i
if DataManager.EquipData:hasEquipGrowthRedPointBySlotIdAndPartId(soltId, part) then
ModuleManager.EquipManager:showEquipGrowthUI(soltId, i)
return
end
end
end
if part then
ModuleManager.EquipManager:showEquipGrowthUI(soltId, part)
end
end)
self.infoBtn:addClickListener(function()
ModuleManager.EquipManager:showEquipResonateUI(self.heroEntity:getMatchType(), 1)
@ -76,6 +90,7 @@ end
function EquipInfoComp:refresh()
self:refreshEquip()
self:refreshEquipSuit()
self:refreshRedPoint()
end
function EquipInfoComp:refreshEquip()
@ -96,6 +111,11 @@ function EquipInfoComp:refreshEquip()
else
self.equipCells[part]:refreshEmpty(part)
end
if DataManager.EquipData:hasEquipWearRedPointByPart(slotId, part) then
self.equipCells[part]:addRedPoint(60, 60, 1)
else
self.equipCells[part]:removeRedPoint()
end
end
end
@ -107,4 +127,18 @@ function EquipInfoComp:refreshEquipSuit()
end
end
function EquipInfoComp:refreshRedPoint()
local slotId = self.heroEntity:getMatchType()
if DataManager.EquipData:hasEquipWearRedPointById(slotId) then
self.autoWearBtn:addRedPoint(70, 30, 1)
else
self.autoWearBtn:removeRedPoint()
end
if DataManager.EquipData:hasEquipGrowthRedPoint(slotId) then
self.upBtn:addRedPoint(70, 30, 1)
else
self.upBtn:removeRedPoint()
end
end
return EquipInfoComp

View File

@ -442,19 +442,19 @@ function HeroDetailUI:checkLvUp(checkLevel)
end
local isLvChange = checkLevel and self.curLevel ~= self.heroEntity:getLv()
if isLvChange then
local match = self.heroEntity:getMatchType()
self.lvUpVfxs[match]:setActive(true)
self.bg4Vfx01:setActive(true)
self.bg5Vfx01:setActive(true)
self.bg6Vfx01:setActive(true)
else
for i = 1, 5 do
self.lvUpVfxs[i]:setActive(false)
end
self.bg4Vfx01:setActive(false)
self.bg5Vfx01:setActive(false)
self.bg6Vfx01:setActive(false)
if isLvChange then
local match = self.heroEntity:getMatchType()
self.lvUpVfxs[match]:setActive(true)
self.bg4Vfx01:setActive(true)
self.bg5Vfx01:setActive(true)
self.bg6Vfx01:setActive(true)
end
end

View File

@ -29,6 +29,7 @@ function EquipData:ctor()
end
function EquipData:clear()
self.allEquipsCount = 0
end
function EquipData:init(data)
@ -41,7 +42,9 @@ function EquipData:init(data)
return
end
self.soltIdRedPoint = {}
self.allEquips = {}
self.allEquipsCount = 0
if data.equips then
for i, equip in pairs(data.equips) do
self:addEquip(equip)
@ -165,6 +168,9 @@ end
function EquipData:addEquip(equip, itemGetType)
if equip == nil then
return
end
if self.allEquips[equip.uid] == nil then
self.allEquipsCount = self.allEquipsCount + 1
end
self.allEquips[equip.uid] = self:createEquipEntity(equip)
if itemGetType then
@ -675,7 +681,7 @@ function EquipData:onResolveSuccess(uids)
for i, uid in ipairs(uids) do
if self.allEquips[uid] then
self.allEquips[uid] = nil
-- self.allEquipsCount = self.allEquipsCount - 1
self.allEquipsCount = self.allEquipsCount - 1
end
end
self:setDirtyResolve()
@ -744,4 +750,202 @@ function EquipData:getLowestFiveGradeEquips()
end
--@endregion
--region 红点
--装备可穿戴红点
function EquipData:hasEquipRedPoint(slotId)
if not self:isOpen() then
return false
end
return self:hasEquipRedPointBySlotId(slotId)
end
function EquipData:hasEquipRedPointBySlotId(slotId)
if slotId == nil then
return false
end
local redPoint = self.soltIdRedPoint[slotId]
if redPoint ~= nil then
return redPoint
end
if self:hasEquipWearRedPoint(slotId) then
redPoint = true
elseif self:hasEquipGrowthRedPointBySlotId(slotId) then
redPoint = true
else
redPoint = false
end
self.soltIdRedPoint[slotId] = redPoint
self.soltIdRedPointDirty = true
return redPoint
end
function EquipData:isOpen(showToast)
if not ModuleManager:getIsOpen(ModuleManager.MODULE_KEY.HERO_EQUIP, not showToast) then
return false
end
return true
end
function EquipData:hasEquipWearRedPointById(slotId)
if not self:isOpen() then
return false
end
return self:hasEquipWearRedPoint(slotId)
end
function EquipData:hasEquipWearRedPointByPart(slotId, part)
if not self:isOpen() then
return false
end
if self.allEquipsCount <= 0 then
return false
end
if self:getEquipMaxScore(slotId, part) then
return true
elseif self:hasEquipEnhanceRedPoint(slotId, part) then
return true
elseif self:hasEquipRefineRedPoint(slotId, part) then
return true
end
return false
end
function EquipData:hasEquipWearRedPoint(slotId)
if self.allEquipsCount <= 0 then
return false
end
if slotId then
for i = 1, 6 do
if self:getEquipMaxScore(slotId, i) then
return true
end
end
end
return false
end
--装备养成红点
function EquipData:hasEquipGrowthRedPoint(slotId)
if self.allEquipsCount <= 0 then
return false
end
return self:hasEquipGrowthRedPointBySlotId(slotId)
end
function EquipData:hasEquipGrowthRedPointBySlotId(soltId)
if soltId == nil then
return false
end
for part = 1, 6 do
if self:hasEquipEnhanceRedPoint(soltId, part) then
return true
elseif self:hasEquipRefineRedPoint(soltId, part) then
return true
end
end
return false
end
function EquipData:hasEquipGrowthRedPointBySlotIdAndPartId(soltId, part)
if soltId == nil then
return false
end
if self:hasEquipEnhanceRedPoint(soltId, part) then
return true
elseif self:hasEquipRefineRedPoint(soltId, part) then
return true
end
return false
end
-- --强化红点
-- function EquipData:hasEquipGrowthEnhanceRedPoint(heroId)
-- local heroEntity = DataManager.HeroData:getHeroById(heroId)
-- local soltId = heroEntity:getMatchType()
-- if soltId then
-- for part = 1, 6 do
-- if self:hasEquipEnhanceRedPoint(soltId, part) then
-- return true
-- end
-- end
-- end
-- return false
-- end
-- --精炼红点
-- function EquipData:hasEquipGrowthRefineRedPoint(heroId)
-- local heroEntity = DataManager.HeroData:getHeroById(heroId)
-- local soltId = heroEntity:getMatchType()
-- if soltId then
-- for part = 1, 6 do
-- if self:hasEquipRefineRedPoint(soltId, part) then
-- return true
-- end
-- end
-- end
-- return false
-- end
--装备升级红点
function EquipData:hasEquipEnhanceRedPoint(soltId, part)
if self.allEquipsCount <= 0 then
return false
end
local level = self:getPartLv(soltId, part)
local itemCost = self:getLevelCost(level + 1)
if itemCost ~= nil then
local costId = GFunc.getRewardId(itemCost)
local costNum = GFunc.getRewardNum(itemCost)
local count = DataManager.BagData.ItemData:getItemNumById(costId)
if costNum <= count then
return true
end
end
return false
end
function EquipData:hasEquipRefineRedPoint(soltId, part)
if self.allEquipsCount <= 0 then
return false
end
local refine = self:getPartRefine(soltId, part)
local needLevel = self:getRefineNeedLevel(refine + 1)
if needLevel == nil or needLevel > self:getPartLevel(soltId, part) then
return false
end
local itemCost = self:getRefineCost(refine + 1)
if itemCost ~= nil then
local costId = GFunc.getRewardId(itemCost)
local costNum = GFunc.getRewardNum(itemCost)
local count = DataManager.BagData.ItemData:getItemNumById(costId)
if costNum <= count then
return true
end
end
return false
end
-- --未穿戴装备有五十件以上的红点
-- function EquipData:hasEquipUnWearRedPoint()
-- local wearList = {}
-- for soltId = 1, 6 do
-- for part = 1, 6 do
-- local uid = self:getPartEquipUid(soltId, part)
-- if uid ~= 0 then
-- wearList[uid] = true
-- end
-- end
-- end
-- local count = 0
-- for _, equip in pairs(self.allEquips) do
-- if wearList[equip:getUid()] == nil then
-- count = count + 1
-- if count >= 50 then
-- return true
-- end
-- end
-- end
-- return false
-- end
--endregion
return EquipData

View File

@ -831,6 +831,8 @@ function HeroEntity:showRedPoint(page)
return self:canLvUp()
elseif page == GConst.HeroConst.PANEL_TYPE.STAR then
return self:canStarUp()
elseif page == GConst.HeroConst.PANEL_TYPE.EQUIP then
return DataManager.EquipData:hasEquipRedPoint(self:getMatchType())
end
end
--@endregion