153 lines
4.3 KiB
Plaintext
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 |