240 lines
11 KiB
Lua
240 lines
11 KiB
Lua
--UPDATE_BIND_TABLE UPDATE_BINDS UPDATE_BAR_TABLE UPDATE_BARS DELETE_SET LIST_SETS
|
|
--[[
|
|
UPDATE_BIND_TABLE saves current binds
|
|
UPDATE_BINDS restores saved binds
|
|
UPDATE_BAR_TABLE saves current bar layout also supports sets
|
|
UPDATE_BARS restores bar layout; defaults to the "default" set
|
|
DELETE_SET deletes a specified set
|
|
LIST_SETS lists all sets
|
|
DELETE and LIST only work for bar layouts
|
|
|
|
|
|
|
|
/run WeakAuras.ScanEvents("UPDATE_BINDS")
|
|
/run WeakAuras.ScanEvents("UPDATE_BIND_TABLE")
|
|
|
|
]]
|
|
function(e, ...)
|
|
if InCombatLockdown() ~= 1 then
|
|
if e == "UPDATE_BIND_TABLE" then
|
|
if not WeakAurasSaved.CustomTrash then WeakAurasSaved.CustomTrash = {} end
|
|
if not WeakAurasSaved.CustomTrash.BindTableTwo then WeakAurasSaved.CustomTrash.BindTableTwo = {} end
|
|
for i = 1, GetNumBindings() do
|
|
local comm, bind, bind2 = GetBinding(i)
|
|
if comm and bind2 and not WeakAurasSaved.CustomTrash.BindTableTwo[comm] then
|
|
print("Adding", comm, "with bind", bind2, "to bind table")
|
|
WeakAurasSaved.CustomTrash.BindTableTwo[comm] = {}
|
|
WeakAurasSaved.CustomTrash.BindTableTwo[comm].bind = bind2
|
|
WeakAurasSaved.CustomTrash.BindTableTwo[comm].index = i
|
|
end
|
|
if comm and not bind2 and WeakAurasSaved.CustomTrash.BindTableTwo[comm] then
|
|
print("Removing", comm, "with no bind from the bind table")
|
|
WeakAurasSaved.CustomTrash.BindTableTwo[comm] = nil
|
|
end
|
|
end
|
|
elseif e == "UPDATE_BINDS" then
|
|
for k, v in pairs(WeakAurasSaved.CustomTrash.BindTableTwo) do
|
|
local command, bind, bind2 = GetBinding(v.index)
|
|
if bind2 ~= v.bind then
|
|
--The key should be aura_env.keyBinds[command] but the key is bind2
|
|
print("Key", command, "has bind", bind2, "but should have", v.bind)
|
|
if bind2 then SetBinding(bind2) end
|
|
if v.bind then SetBinding(v.bind, command) end
|
|
end
|
|
end
|
|
SaveBindings(1)
|
|
elseif e == "UPDATE_BAR_TABLE" then
|
|
local arg2 = "default"
|
|
if ... then arg2 = ... end
|
|
if not WeakAurasSaved.CustomTrash then WeakAurasSaved.CustomTrash = {} end
|
|
if not WeakAurasSaved.CustomTrash.BarTable then WeakAurasSaved.CustomTrash.BarTable = {} end
|
|
if not WeakAurasSaved.CustomTrash.BarTable[arg2] then WeakAurasSaved.CustomTrash.BarTable[arg2] = {} end
|
|
for i = 1, 72 do
|
|
PickupAction(i)
|
|
if GetCursorInfo() then
|
|
local type = GetCursorInfo()
|
|
local id, name = nil, nil
|
|
if not type then WeakAurasSaved.CustomTrash.BarTable[arg2][i] = nil end
|
|
if type == "spell" then
|
|
id = select(4, GetCursorInfo())
|
|
elseif type == "mount" then
|
|
id = select(2, GetCursorInfo())
|
|
elseif type == "macro" then
|
|
id = select(2, GetCursorInfo())
|
|
name = select(1, GetMacroInfo(id))
|
|
elseif type == "item" then
|
|
id = select(2, GetCursorInfo())
|
|
elseif type == "equipmentset" then
|
|
name = select(2, GetCursorInfo())
|
|
end --elseif end
|
|
if not WeakAurasSaved.CustomTrash.BarTable[arg2][i] then WeakAurasSaved.CustomTrash.BarTable[arg2][i] = {} end
|
|
if id ~= WeakAurasSaved.CustomTrash.BarTable[arg2][i].id or type ~= WeakAurasSaved.CustomTrash.BarTable[arg2][i].type then
|
|
WeakAurasSaved.CustomTrash.BarTable[arg2][i].type = type
|
|
WeakAurasSaved.CustomTrash.BarTable[arg2][i].id = id
|
|
WeakAurasSaved.CustomTrash.BarTable[arg2][i].name = name
|
|
if not name then
|
|
print("Adding", type, "by id", id, "on slot", i, "to the table")
|
|
elseif name then
|
|
print("Adding", type, "by id", id, "and name", name, "on slot", i, "to the table")
|
|
end
|
|
end
|
|
end
|
|
PickupAction(i)
|
|
end
|
|
elseif e == "UPDATE_BARS" then
|
|
local arg2 = "default"
|
|
if ... then arg2 = ... end
|
|
for k, v in pairs(WeakAurasSaved.CustomTrash.BarTable[arg2]) do
|
|
if v.type == "spell" then
|
|
if GetCursorInfo() then ClearCursor() end
|
|
PickupAction(k)
|
|
if GetCursorInfo() then
|
|
local id = select(4, GetCursorInfo())
|
|
if id ~= v.id then
|
|
ClearCursor()
|
|
PickupSpell(v.id)
|
|
PickupAction(k)
|
|
ClearCursor()
|
|
end
|
|
PickupAction(k)
|
|
else
|
|
ClearCursor()
|
|
PickupSpell(v.id)
|
|
PickupAction(k)
|
|
ClearCursor()
|
|
end
|
|
elseif v.type == "mount" then
|
|
local mid, mindex
|
|
--Looking for mount in mount journal
|
|
for i = 1, C_MountJournal.GetNumMounts() do
|
|
mid = select(12, C_MountJournal.GetDisplayedMountInfo(i))
|
|
local ishave = select(11, C_MountJournal.GetDisplayedMountInfo(i))
|
|
if mid == v.id then
|
|
mindex = i
|
|
break
|
|
end
|
|
if ishave == false then
|
|
break
|
|
end
|
|
end
|
|
|
|
--Checking what's on the bar
|
|
if GetCursorInfo() then ClearCursor() end
|
|
PickupAction(k)
|
|
if GetCursorInfo() then
|
|
local id = select(2, GetCursorInfo())
|
|
if id ~= v.id and mindex then
|
|
ClearCursor()
|
|
C_MountJournal.Pickup(mindex)
|
|
PickupAction(k)
|
|
ClearCursor()
|
|
end
|
|
PickupAction(k)
|
|
elseif not GetCursorInfo() and mindex then
|
|
ClearCursor()
|
|
C_MountJournal.Pickup(mindex)
|
|
PickupAction(k)
|
|
ClearCursor()
|
|
end
|
|
elseif v.type == "macro" then
|
|
if GetCursorInfo() then ClearCursor() end
|
|
PickupAction(k)
|
|
if GetCursorInfo() then
|
|
local id = select(2, GetCursorInfo())
|
|
local name = select(1, GetMacroInfo(id))
|
|
if id ~= v.id or name ~= v.name then
|
|
ClearCursor()
|
|
PickupMacro(v.id)
|
|
PickupAction(k)
|
|
ClearCursor()
|
|
end
|
|
PickupAction(k)
|
|
else
|
|
ClearCursor()
|
|
local name = GetMacroInfo(v.id)
|
|
if name == v.name then
|
|
PickupMacro(v.id)
|
|
PickupAction(k)
|
|
ClearCursor()
|
|
end
|
|
end
|
|
elseif v.type == "equipmentset" then
|
|
if GetCursorInfo() then ClearCursor() end
|
|
local eqindex
|
|
for i = 1, GetNumEquipmentSets() do
|
|
local nam = GetEquipmentSetInfo(i)
|
|
if nam == v.name then
|
|
eqindex = i
|
|
break
|
|
end
|
|
end
|
|
if eqindex then
|
|
PickupAction(k)
|
|
if GetCursorInfo() then
|
|
local name = select(2, GetCursorInfo())
|
|
if name ~= v.name then
|
|
ClearCursor()
|
|
PickupEquipmentSet(eqindex)
|
|
PickupAction(k)
|
|
ClearCursor()
|
|
end
|
|
PickupAction(k)
|
|
else
|
|
ClearCursor()
|
|
PickupEquipmentSet(eqindex)
|
|
PickupAction(k)
|
|
ClearCursor()
|
|
end
|
|
end
|
|
elseif v.type == "item" then
|
|
if GetCursorInfo() then ClearCursor() end
|
|
local ios, jos
|
|
for i = 0, 4 do
|
|
for j = 1, GetContainerNumSlots(i) do
|
|
local link = select(7, GetContainerItemInfo(i, j))
|
|
if link then
|
|
local id = link:match("item:(%d+):")
|
|
if id then
|
|
id = tonumber(id)
|
|
if id == v.id then
|
|
ios = i
|
|
jos = j
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if ios and jos then
|
|
PickupAction(k)
|
|
if GetCursorInfo() then
|
|
local id = select(2, GetCursorInfo())
|
|
if id ~= v.id then
|
|
ClearCursor()
|
|
PickupContainerItem(ios, jos)
|
|
PickupAction(k)
|
|
ClearCursor()
|
|
end
|
|
PickupAction(k)
|
|
else
|
|
ClearCursor()
|
|
PickupContainerItem(ios, jos)
|
|
PickupAction(k)
|
|
ClearCursor()
|
|
end
|
|
end
|
|
end --elseif end
|
|
end
|
|
elseif e == "DELETE_SET" then
|
|
local arg2 = ...
|
|
if arg2 and WeakAurasSaved.CustomTrash.BarTable[arg2] then
|
|
WeakAurasSaved.CustomTrash.BarTable[arg2] = nil
|
|
end
|
|
elseif e == "LIST_SETS" then
|
|
for k, v in pairs(WeakAurasSaved.CustomTrash.BarTable) do
|
|
print(k)
|
|
end
|
|
end --elseif end
|
|
end
|
|
end
|