2025-06-04 05:02:57 +08:00

153 lines
4.3 KiB
Plaintext

FunctionItemCompare = class("FunctionItemCompare")
function FunctionItemCompare.Me()
if nil == FunctionItemCompare.me then
FunctionItemCompare.me = FunctionItemCompare.new()
end
return FunctionItemCompare.me
end
function FunctionItemCompare:ctor()
end
function FunctionItemCompare:TryRemove(item)
if(item) then
if(item:IsFashion()) then
if(QuickUseProxy.Instance:RemoveNeverEquipedFashion(item.staticData.id,item:IsNew()==false)) then
return true
end
elseif(item:IsEquip()) then
self.profess = MyselfProxy.Instance:GetMyProfession()
if(item.equipInfo:CanUseByProfess(self.profess)) then
if(QuickUseProxy.Instance:RemoveBetterEquip(item)) then
return true
end
end
else
local useConfig = Table_UseItem[item.staticData.id]
if(useConfig and useConfig.AlertMode) then
--根據使用表中alertmode欄位判斷是否需要右下角提示
if(useConfig.AlertMode == 1) then
if(QuickUseProxy.Instance:RemoveItemUse(item)) then
return true
end
end
end
end
end
end
function FunctionItemCompare:CompareItem(item,myselfLV)
if(item and item.staticData) then
--未被展示過
self.equipItems = BagProxy.Instance:GetRoleEquipBag().siteMap
self.profess = MyselfProxy.Instance:GetMyProfession()
local useConfig = Table_UseItem[item.staticData.id]
if(useConfig and useConfig.AlertMode) then
--根據使用表中alertmode欄位判斷是否需要右下角提示
if(useConfig.AlertMode == 1) then
myselfLV = myselfLV or MyselfProxy.Instance:RoleLevel()
local level = item.staticData.Level or 0
if(useConfig.Alert_LimitLevel == nil or myselfLV <= useConfig.Alert_LimitLevel)then
if(item.tempHint and myselfLV>=level and QuickUseProxy.Instance:AddItemUse(item)) then
return true
end
end
end
else
if(item:IsHint()) then
myselfLV = myselfLV or MyselfProxy.Instance:RoleLevel()
local level = item.staticData.Level or 0
if(myselfLV>=level) then
if(item:IsFashion()) then
if(item:CanEquip())then
if(not item:IsNew()) then
if(QuickUseProxy.Instance:RemoveNeverEquipedFashion(item.staticData.id,true)) then
return true
end
elseif(QuickUseProxy.Instance:AddNeverEquipedFashion(item)) then
return true
end
end
elseif(item:IsEquip()) then
if(self:CompareEquip(item,self.profess,self.equipItems)) then
return true
end
elseif(item.staticData.UseMode~=nil) then
--普通道具也遵循Hint 展示規則
-- helplog(item.staticData.id,"hint is true")
return QuickUseProxy.Instance:AddItemUse(item)
end
end
end
end
return false
else
errorLog("try to compare a nil item")
return false
end
end
function FunctionItemCompare:CompareEquip(item,profess,equipItems)
equipItems = equipItems or BagProxy.Instance:GetRoleEquipBag().siteMap
profess = profess or MyselfProxy.Instance:GetMyProfession()
if(item.equipInfo:CanUseByProfess(profess)) then
local sites = item.equipInfo:GetEquipSite()
local better = false
local site
for i=1,#sites do
local equipedPart = equipItems[sites[i]]
if(item:CompareTo(equipedPart)) then
better = true
site = sites[i]
break
elseif(equipedPart~=nil and equipedPart.equipInfo:CanUseByProfess(profess)==false) then
better = true
site = sites[i]
break
end
end
if(better and QuickUseProxy.Instance:AddBetterEquip(item,site)) then
return true
end
end
return false
end
function FunctionItemCompare:CompareItems(items)
self.myselfLV = MyselfProxy.Instance:RoleLevel()
local dirty = false
if(items and type(items) =="table") then
for i=1,#items do
if(self:CompareItem(items[i],self.myselfLV)) then
dirty = true
end
end
else
errorLog("try to compare nil items")
return
end
if(dirty) then
GameFacade.Instance:sendNotification(ItemEvent.BetterEquipAdd)
end
end
function FunctionItemCompare:SetHint(item)
if(item and item.staticData) then
local staticID = item.staticData.id
-- send to server hint
ServiceItemProxy.Instance:CallHintNtf(staticID)
local items = BagProxy.Instance:GetItemsByStaticID(staticID)
if(items) then
for i=1,#items do
items[i].isHint = false
end
end
end
end
function FunctionItemCompare:TryCompare()
local bag = BagProxy.Instance:GetMainBag()
self:CompareItems(bag:GetItems())
end