mirror of
https://github.com/parnic/breakables.git
synced 2025-06-16 17:40:13 -05:00
Added ignore feature
Breakables can now be right-clicked to add them to an ignore list which prevents them from ever showing up as a breakable item. Ignored items may be viewed and cleared from the options screen.
This commit is contained in:
@ -409,6 +409,19 @@ function Breakables:GetEnchantingLevel()
|
||||
end
|
||||
end
|
||||
|
||||
local function GetIgnoreListOptions()
|
||||
local ret = {}
|
||||
|
||||
if Breakables.settings.ignoreList ~= nil then
|
||||
for k,v in pairs(Breakables.settings.ignoreList) do
|
||||
local name, _, _, _, _, _, _, _, _, texture = GetItemInfo(k)
|
||||
ret[k] = ("|T%s:0|t %s"):format(texture, name)
|
||||
end
|
||||
end
|
||||
|
||||
return ret
|
||||
end
|
||||
|
||||
function Breakables:GetOptions()
|
||||
local opts = {
|
||||
name = L["Breakables"],
|
||||
@ -542,6 +555,50 @@ function Breakables:GetOptions()
|
||||
end,
|
||||
order = 7,
|
||||
},
|
||||
ignoreList = {
|
||||
type = 'multiselect',
|
||||
name = L["Ignore list"],
|
||||
desc = L["Items that have been right-clicked to exclude from the breakable list. Un-check the box to remove the item from the ignore list."],
|
||||
get = function(info, key)
|
||||
return true
|
||||
end,
|
||||
set = function(info, key)
|
||||
Breakables.settings.ignoreList[key] = nil
|
||||
Breakables:FindBreakables()
|
||||
end,
|
||||
confirm = function()
|
||||
return L["Are you sure you want to remove this item from the ignore list?"]
|
||||
end,
|
||||
values = GetIgnoreListOptions,
|
||||
order = 30,
|
||||
},
|
||||
clearIgnoreList = {
|
||||
type = 'execute',
|
||||
func = function()
|
||||
for k,v in pairs(Breakables.settings.ignoreList) do
|
||||
Breakables.settings.ignoreList[k] = nil
|
||||
end
|
||||
Breakables:FindBreakables()
|
||||
end,
|
||||
name = L["Clear ignore list"],
|
||||
confirm = function()
|
||||
return L["Are you sure you want to clear the ignore list?"]
|
||||
end,
|
||||
disabled = function()
|
||||
if Breakables.settings.ignoreList == nil then
|
||||
return true
|
||||
end
|
||||
|
||||
for k,v in pairs(Breakables.settings.ignoreList) do
|
||||
if v ~= nil then
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
end,
|
||||
order = 31,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@ -728,6 +785,18 @@ function Breakables:OnMouseUp(frame)
|
||||
self.settings.buttonFrameTop[frameNum] = frame:GetTop()
|
||||
end
|
||||
|
||||
local function IgnoreFunc(self, button)
|
||||
if button == "RightButton" and not InCombatLockdown() then
|
||||
if Breakables.settings.ignoreList == nil then
|
||||
Breakables.settings.ignoreList = {}
|
||||
end
|
||||
|
||||
Breakables.settings.ignoreList[self.itemId] = true
|
||||
Breakables:FindBreakables()
|
||||
LibStub("AceConfigRegistry-3.0"):NotifyChange("Breakables")
|
||||
end
|
||||
end
|
||||
|
||||
function Breakables:FindBreakables(bag)
|
||||
if self.settings.hide then
|
||||
return
|
||||
@ -797,7 +866,7 @@ function Breakables:FindBreakables(bag)
|
||||
btn:EnableMouse(true)
|
||||
btn:RegisterForClicks("AnyUp")
|
||||
|
||||
btn:SetAttribute("type", "spell")
|
||||
btn:SetAttribute("type1", "spell")
|
||||
|
||||
if not btn.text then
|
||||
btn.text = btn:CreateFontString()
|
||||
@ -805,11 +874,15 @@ function Breakables:FindBreakables(bag)
|
||||
end
|
||||
btn.text:SetFont(NumberFont_Outline_Med:GetFont(), self.settings.fontSize, "OUTLINE")
|
||||
|
||||
btn:HookScript("OnClick", IgnoreFunc)
|
||||
|
||||
if lbfGroup then
|
||||
lbfGroup:AddButton(btn)
|
||||
end
|
||||
end
|
||||
|
||||
btn.itemId = self:GetItemIdFromLink(foundBreakables[i][IDX_LINK])
|
||||
|
||||
local attachFrom = "LEFT"
|
||||
local attachTo = "RIGHT"
|
||||
if self.settings.growDirection then
|
||||
@ -848,13 +921,13 @@ function Breakables:FindBreakables(bag)
|
||||
--or (foundBreakables[i][IDX_BREAKABLETYPE] == BREAKABLE_DE and DisenchantId)
|
||||
--or PickLockId)
|
||||
if BreakableAbilityName then
|
||||
btn:SetAttribute("type", "spell")
|
||||
btn:SetAttribute("type1", "spell")
|
||||
btn:SetAttribute("spell", BreakableAbilityName)
|
||||
|
||||
btn:SetAttribute("target-bag", foundBreakables[i][IDX_BAG])
|
||||
btn:SetAttribute("target-slot", foundBreakables[i][IDX_SLOT])
|
||||
else
|
||||
btn:SetAttribute("type", "item")
|
||||
btn:SetAttribute("type1", "item")
|
||||
btn:SetAttribute("item", "item:" .. self:GetItemIdFromLink(foundBreakables[i][IDX_LINK]))
|
||||
end
|
||||
|
||||
@ -933,6 +1006,8 @@ function Breakables:OnEnterBreakableButton(this)
|
||||
|
||||
GameTooltip:AddLine(" ")
|
||||
GameTooltip:AddLine(L["You can click on this button to break this item without having to click on the profession button first."], 1, 1, 1, 1)
|
||||
GameTooltip:AddLine(" ")
|
||||
GameTooltip:AddLine(L["You can right-click on this button to ignore this item. Items can be unignored from the options screen."], 1, 1, 1, 1)
|
||||
GameTooltip:Show()
|
||||
showingTooltip = this
|
||||
end
|
||||
@ -978,6 +1053,10 @@ function Breakables:FindBreakablesInSlot(bagId, slotId)
|
||||
local texture, itemCount, locked, quality, readable = GetContainerItemInfo(bagId, slotId)
|
||||
if texture then
|
||||
local itemLink = GetContainerItemLink(bagId, slotId)
|
||||
if self.settings.ignoreList and self.settings.ignoreList[self:GetItemIdFromLink(itemLink)] then
|
||||
return nil
|
||||
end
|
||||
|
||||
local itemName, _, itemRarity, itemLevel, _, itemType, itemSubType, _, equipSlot, itemTexture, vendorPrice = GetItemInfo(itemLink)
|
||||
|
||||
self.myTooltip:SetBagItem(bagId, slotId)
|
||||
|
Reference in New Issue
Block a user