Quantcast

Initial creation

KyrosKrane [07-04-15 - 14:20]
Initial creation
Filename
AnnoyingPopupRemover.lua
AnnoyingPopupRemover.toc
diff --git a/AnnoyingPopupRemover.lua b/AnnoyingPopupRemover.lua
new file mode 100644
index 0000000..395fef4
--- /dev/null
+++ b/AnnoyingPopupRemover.lua
@@ -0,0 +1,153 @@
+-- AutoLootBOP.lua
+-- Written by KyrosKrane Sylvanblade (kyros@kyros.info)
+-- Licensed under the MIT License, as below.
+--
+-- Copyright (c) 2015 KyrosKrane Sylvanblade
+--
+-- Permission is hereby granted, free of charge, to any person obtaining a copy
+-- of this software and associated documentation files (the "Software"), to deal
+-- in the Software without restriction, including without limitation the rights
+-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+-- copies of the Software, and to permit persons to whom the Software is
+-- furnished to do so, subject to the following conditions:
+--
+-- The above copyright notice and this permission notice shall be included in
+-- all copies or substantial portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+-- THE SOFTWARE.
+
+-- This add-on file removes a number of annoying pop-ups.
+--	It removes the popup confirmation dialog when looting a bind-on-pickup item.
+--	It removes the popup confirmation dialog when rolling on a bind-on-pickup item.
+--	It removes the popup confirmation dialog when adding a BOP item to void storage, and that item is modified (gemmed, enchanted, or transmogged) or still tradable with the looting group.
+
+-- Define whether we're in debug mode or production mode. True means debug; false means production.
+local DebugMode = true;
+
+
+-- Print debug output to the chat frame.
+function DebugPrint(...)
+	if (DebugMode) then
+		print (...);
+	end
+end
+
+
+-- Figure out what sort of variable we're dealing with.
+function typeof(var)
+    local _type = type(var);
+    if(_type ~= "table" and _type ~= "userdata") then
+        return _type;
+    end
+    local _meta = getmetatable(var);
+    if(_meta ~= nil and _meta._NAME ~= nil) then
+        return _meta._NAME;
+    else
+        return _type;
+    end
+end -- typeof()
+
+
+-- Debugging code to see what the hell is being passed in...
+function PrintVarArgs(...)
+	local n = select('#', ...)
+	DebugPrint ("There are ", n, " items in varargs.")
+	local msg
+	for i = 1, n do
+		msg = select(i, ...)
+		DebugPrint ("Item ", i, " is ", msg);
+	end
+end -- PrintVarArgs()
+
+-- Create the frame to hold our event catcher, and the list of events.
+local AutoLootBOP_Frame, events = CreateFrame("Frame"), {};
+
+-- Looting a BOP item triggers this event.
+function events:LOOT_BIND_CONFIRM(Self, ...)
+	if (DebugMode) then
+		DebugPrint ("In events:LOOT_BIND_CONFIRM");
+		DebugPrint ("Self is ", Self);
+		--DebugPrint ("typeof Self is ", typeof(Self));
+		PrintVarArgs(...);
+	end -- if Debugmode
+
+	local id = ...;
+	ConfirmLootSlot(id);
+end -- events:LOOT_BIND_CONFIRM()
+
+
+-- Rolling on a BOP item triggers this event.
+function events:CONFIRM_LOOT_ROLL(...)
+	if (DebugMode) then
+		DebugPrint ("In events:CONFIRM_LOOT_ROLL");
+		PrintVarArgs(...);
+	end -- if Debugmode
+
+	-- local id, rollType;
+	-- id = select(1, ...);
+	-- rollType = select(2, ...);
+	local id, rollType = ...;
+
+	DebugPrint ("id is ", id);
+	DebugPrint ("rollType is ", rollType);
+
+	ConfirmLootRoll(id, rollType);
+end -- events:CONFIRM_LOOT_ROLL()
+
+
+-- Depositing an item that's modified (gemmed, enchanted, or transmogged) or a BOP item still tradable in group triggers this event.
+function events:VOID_DEPOSIT_WARNING(...)
+	if (DebugMode) then
+		DebugPrint ("In events:VOID_DEPOSIT_WARNING");
+		PrintVarArgs(...);
+	end -- if Debugmode
+
+	-- Document the incoming parameters.
+	-- local slot, itemLink = ...;
+
+	VoidStorage_UpdateTransferButton(nil);
+	VoidStorage_UpdateTransferButton(nil);
+		-- prior to this event firing, the game triggers "VOID_STORAGE_DEPOSIT_UPDATE", which disables the transfer button and pops up the dialog.
+		-- So, we simulate clicking OK with the UpdateTransferButton, and pass "nil" to indicate the warning dialog isn't showing.
+end -- events:VOID_DEPOSIT_WARNING()
+
+
+-- For debugging only.
+function events:VOID_STORAGE_DEPOSIT_UPDATE(...)
+	-- We don't actually do anything in this function; it's just for debugging.
+	if (not DebugMode) then return end;
+
+	DebugPrint ("In events:VOID_STORAGE_DEPOSIT_UPDATE");
+	PrintVarArgs(...);
+
+	-- Document the incoming parameters.
+	-- local slot = ...;
+
+end -- events:VOID_STORAGE_DEPOSIT_UPDATE()
+
+
+-- Create the event handler function.
+AutoLootBOP_Frame:SetScript("OnEvent", function(self, event, ...)
+	events[event](self, ...); -- call one of the functions above
+end);
+
+-- Register all events for which handlers have been defined
+for k, v in pairs(events) do
+	DebugPrint ("Registering event ", k);
+	AutoLootBOP_Frame:RegisterEvent(k);
+end
+
+-- Disable the dialog that pops to confirm looting BoP gear yourself.
+StaticPopupDialogs["LOOT_BIND"] = nil;
+
+-- Disable the dialog for the event that triggers when rolling on BOP items.
+StaticPopupDialogs["CONFIRM_LOOT_ROLL"] = nil;
+
+-- Disable the dialog for putting tradable or modified items into void storage.
+StaticPopupDialogs["VOID_DEPOSIT_CONFIRM"] = nil;
diff --git a/AnnoyingPopupRemover.toc b/AnnoyingPopupRemover.toc
new file mode 100644
index 0000000..e1680d3
--- /dev/null
+++ b/AnnoyingPopupRemover.toc
@@ -0,0 +1,5 @@
+## Interface: 60200
+## Title: BOP Items Quick-Loot
+## Notes: Allows you to loot bind-on-pickup (BOP) items by clicking them in the loot window, without confirmation. Also removes the BOP confirmation when rolling on BOP items.
+
+zAutoLootBOP.lua