ro-table/Asstes/Resources/Script/FrameWork/Proxy/EquipRecoverProxy.txt
2025-06-04 05:02:57 +08:00

186 lines
5.3 KiB
Plaintext

EquipRecoverProxy = class('EquipRecoverProxy', pm.Proxy)
EquipRecoverProxy.Instance = nil;
EquipRecoverProxy.NAME = "EquipRecoverProxy"
EquipRecoverProxy.RecoverType = {
EmptyStrength = "EmptyStrength",
Strength = "Strength",
EmptyCard = "EmptyCard",
EmptyEnchant = "EmptyEnchant",
Enchant = "Enchant",
EmptyUpgrade = "EmptyUpgrade",
}
local packageCheck = GameConfig.PackageMaterialCheck and GameConfig.PackageMaterialCheck.restore
function EquipRecoverProxy:ctor(proxyName, data)
self.proxyName = proxyName or EquipRecoverProxy.NAME
if(EquipRecoverProxy.Instance == nil) then
EquipRecoverProxy.Instance = self
end
if data ~= nil then
self:setData(data)
end
self:Init()
end
function EquipRecoverProxy:Init()
self.recoverList = {}
self.recoverToggleList = {}
end
function EquipRecoverProxy:GetRecoverEquips()
local _BagProxy = BagProxy.Instance
TableUtility.ArrayClear(self.recoverList)
for i=1,#packageCheck do
local items = _BagProxy:GetBagByType(packageCheck[i]):GetItems()
for j=1,#items do
local equip = items[j]
if equip and equip.equipInfo then
if EquipRecoverProxy.IsEquipNeedRecover(equip) then
TableUtility.ArrayPushBack( self.recoverList , equip )
end
end
end
end
return self.recoverList
end
--卸卡魔石
function EquipRecoverProxy:GetMagicStoneRecover()
TableUtility.ArrayClear(self.recoverList)
local equipDatas = BagProxy.Instance:GetBagEquipItems()
for i=1,#equipDatas do
local equip = equipDatas[i]
if equip then
if EquipRecoverProxy.IsEquipNeedMagicStoneRecover(equip) then
TableUtility.ArrayPushBack( self.recoverList , equip )
end
end
end
return self.recoverList
end
function EquipRecoverProxy.IsEquipNeedRecover(itemData)
local equipInfo = itemData.equipInfo;
if equipInfo and equipInfo.strengthlv > 0 then
return true
elseif equipInfo and equipInfo.strengthlv2 > 0 then
return true
elseif itemData:HasEquipedCard() then
return true
elseif itemData.enchantInfo and #itemData.enchantInfo:GetEnchantAttrs() > 0 then
return true
elseif equipInfo and equipInfo.equiplv > 0 then
return true
end
return false
end
--卸卡魔石
function EquipRecoverProxy.IsEquipNeedMagicStoneRecover(itemData)
local equipInfo = itemData.equipInfo
if itemData:GetEquipedCardNum() >0 then
return true
end
return false
end
function EquipRecoverProxy:GetRecoverToggle(item)
TableUtility.ArrayClear(self.recoverToggleList)
if item and item.equipInfo and (item.equipInfo.strengthlv > 0 or item.equipInfo.strengthlv2 > 0) then
TableUtility.ArrayPushBack( self.recoverToggleList , self.RecoverType.Strength )
else
TableUtility.ArrayPushBack( self.recoverToggleList , self.RecoverType.EmptyStrength )
end
for i=1,2 do
if item and item.equipedCardInfo and item.equipedCardInfo[i] then
TableUtility.ArrayPushBack( self.recoverToggleList , item.equipedCardInfo[i] )
else
TableUtility.ArrayPushBack( self.recoverToggleList , self.RecoverType.EmptyCard )
end
end
if item and item.enchantInfo and #item.enchantInfo:GetEnchantAttrs() > 0 then
TableUtility.ArrayPushBack( self.recoverToggleList , self.RecoverType.Enchant )
else
TableUtility.ArrayPushBack( self.recoverToggleList , self.RecoverType.EmptyEnchant )
end
if item and item.equipInfo and item.equipInfo.equiplv > 0 then
TableUtility.ArrayPushBack( self.recoverToggleList , item.equipInfo.equiplv )
else
TableUtility.ArrayPushBack( self.recoverToggleList , self.RecoverType.EmptyUpgrade )
end
return self.recoverToggleList
end
--卸卡魔石
function EquipRecoverProxy:GetMagicStoneRecoverToggle(item)
TableUtility.ArrayClear(self.recoverToggleList)
for i=1,2 do
if item and item.equipedCardInfo and item.equipedCardInfo[i] then
TableUtility.ArrayPushBack( self.recoverToggleList , item.equipedCardInfo[i] )
else
TableUtility.ArrayPushBack( self.recoverToggleList , self.RecoverType.EmptyCard )
end
end
return self.recoverToggleList
end
function EquipRecoverProxy:SetCurrency(currency)
self.currency = currency
end
function EquipRecoverProxy:GetCurrency()
return self.currency or GameConfig.MoneyId.Zeny
end
function EquipRecoverProxy:GetRecoverCost(itemData, card_rv, upgrade_rv, strength_rv, enchant_rv, strength_rv2)
if(itemData == nil)then
return 0;
end
local recoverConfig = GameConfig.EquipRecover;
local resultCost = 0;
if(card_rv)then
local equipCards = itemData.equipedCardInfo;
if(equipCards and #equipCards>0)then
local maxIndex = #recoverConfig.Card;
for k,v in pairs(equipCards)do
local q = v.cardInfo.Quality;
q = math.clamp(q, 1, maxIndex);
resultCost = resultCost + recoverConfig.Card[q];
end
end
end
if(upgrade_rv)then
local equiplv = itemData.equipInfo.equiplv;
if(equiplv > 0)then
equiplv = math.clamp(equiplv, 1, #recoverConfig.Upgrade);
resultCost = resultCost + recoverConfig.Upgrade[equiplv];
end
end
local strength_addCost = false;
if(strength_rv)then
if(itemData.equipInfo.strengthlv > 0)then
strength_addCost = true;
resultCost = resultCost + recoverConfig.Strength;
end
end
if(strength_rv2 and strength_addCost == false)then
if(itemData.equipInfo.strengthlv2 > 0)then
resultCost = resultCost + recoverConfig.Strength;
end
end
if(enchant_rv)then
if(itemData.enchantInfo and itemData.enchantInfo:HasAttri())then
resultCost = resultCost + recoverConfig.Enchant;
end
end
return resultCost;
end