You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
2.1 KiB
106 lines
2.1 KiB
|
1 year ago
|
local ADDON_NAME, PRIVATE_TABLE = ...
|
||
|
|
|
||
|
|
local AutoLooter = LibStub("AceAddon-3.0"):GetAddon("AutoLooter")
|
||
|
|
local L = LibStub("AceLocale-3.0"):GetLocale("AutoLooter")
|
||
|
|
local ListHelper = PRIVATE_TABLE.ListHelper
|
||
|
|
local Util = PRIVATE_TABLE.Util
|
||
|
|
local Color = PRIVATE_TABLE.Color
|
||
|
|
|
||
|
|
function ListHelper.AddItem(sTitle, list)
|
||
|
|
local sLink = sTitle
|
||
|
|
if not sTitle or sTitle == "" then
|
||
|
|
sTitle, sLink = GameTooltip:GetItem()
|
||
|
|
|
||
|
|
if not sTitle or sTitle == "" then
|
||
|
|
for k, _ in pairs(list) do
|
||
|
|
AutoLooter.print(k)
|
||
|
|
end
|
||
|
|
|
||
|
|
return
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
local id = Util.getId(sLink)
|
||
|
|
if not id then
|
||
|
|
AutoLooter.print(L["Invalid item"], ": ", sTitle);
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
local item = Item:CreateFromItemID(id)
|
||
|
|
if not item or item:IsItemEmpty() then
|
||
|
|
AutoLooter.print(L["Invalid item"], ": ", sTitle);
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
item:ContinueOnItemLoad(function()
|
||
|
|
local name, link = GetItemInfo(id)
|
||
|
|
|
||
|
|
if (list[id]) then
|
||
|
|
AutoLooter.print(L["Already in the list"], ": ", Color.YELLOW, link)
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
if (list[name]) then
|
||
|
|
list[name] = nil
|
||
|
|
end
|
||
|
|
|
||
|
|
list[id] = link
|
||
|
|
AutoLooter.print(L["Added"], ": ", Color.YELLOW, link)
|
||
|
|
end)
|
||
|
|
end
|
||
|
|
|
||
|
|
function ListHelper.RemoveItem(sTitle, list)
|
||
|
|
local sLink = sTitle
|
||
|
|
if not sTitle or sTitle == "" then
|
||
|
|
sTitle, sLink = GameTooltip:GetItem()
|
||
|
|
|
||
|
|
if not sTitle or sTitle == "" then
|
||
|
|
for k, _ in pairs(list) do
|
||
|
|
AutoLooter.print(k)
|
||
|
|
end
|
||
|
|
|
||
|
|
return
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
local id = Util.getId(sLink)
|
||
|
|
|
||
|
|
if(not id) then
|
||
|
|
if (list[sTitle]) then
|
||
|
|
list[sTitle] = nil
|
||
|
|
AutoLooter.print(L["Removed"], ": ", Color.YELLOW, sTitle)
|
||
|
|
return
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
if (list[id]) then
|
||
|
|
local link = list[id]
|
||
|
|
list[id] = nil
|
||
|
|
AutoLooter.print(L["Removed"], ": ", Color.YELLOW, link)
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
AutoLooter.print(L["Not listed"], ": ", Color.YELLOW, sTitle)
|
||
|
|
end
|
||
|
|
|
||
|
|
function ListHelper.ListToString(list)
|
||
|
|
local text = ""
|
||
|
|
for k, _ in pairs(list) do
|
||
|
|
text = text .. k .. '\n'
|
||
|
|
end
|
||
|
|
return text
|
||
|
|
end
|
||
|
|
|
||
|
|
function ListHelper.GetValues(list)
|
||
|
|
local values = {}
|
||
|
|
|
||
|
|
for k, v in pairs(list) do
|
||
|
|
if (tonumber(k)) then
|
||
|
|
values[k] = v
|
||
|
|
elseif (v) then
|
||
|
|
values[k] = k
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
return values
|
||
|
|
end
|