vanilla-wow-addons – Rev 1
?pathlinks?
--[[
Lexan!
BULLETPROOF GLASS ON YOUR AH, BANK AND MAIL WINDOWS!
</needless cheesiness>
By Neronix (Hellscream EU, neronix@gmail.com)
Portions of the AH protector code from Auctioneer
This mod is licensed under the GNU GPL
--]]
Lexan = AceLibrary("AceAddon-2.0"):new("AceEvent-2.0", "AceHook-2.0", "AceConsole-2.0")
function Lexan:OnInitialize()
-- No config table --> New user --> Create table and set default
if ( not LexanConfig ) then
LexanConfig = {
Esc = false
}
end
Lexan:RegisterChatCommand({ "/lexan" }, {
desc = self.notes,
type = "group",
args = {
esc = {
name = 'Use Esc',
desc = 'Toggle the ability for the Esc button to close the AH window',
type = 'toggle',
get = function() return LexanConfig.Esc; end,
set = function(val) LexanConfig.Esc = val end,
}
}
})
end
function Lexan:OnEnable()
self:Hook("ToggleGameMenu") -- Allows us to handle Esc closing the AH window
self:Hook("ToggleWorldMap") -- Tame that mappy bitch!
self:RegisterEvent("AUCTION_HOUSE_SHOW")
self:RegisterEvent("AUCTION_HOUSE_CLOSED")
-- If 1, then the user blocked trades him/herself, meaning we don't need to handle it.
if ( GetCVar("BlockTrades") == "0" ) then
self:RegisterEvent("MAIL_SHOW", "AntiTrade_ON")
self:RegisterEvent("MAIL_CLOSED", "AntiTrade_OFF")
self:RegisterEvent("BANKFRAME_OPENED", "AntiTrade_ON")
self:RegisterEvent("BANKFRAME_CLOSED", "AntiTrade_OFF")
end
end
function Lexan:OnDisable() -- Just in case that the luser disables while protection is enforced, for whatever strange reason...
self:AH_OFF()
self:AntiTrade_OFF()
end
-- ToggleGameMenu is what Esc is bound to by default
function Lexan:ToggleGameMenu(clicked)
-- If the user wants Esc to close the AH window, and the AH window's open,
-- Then do the standard protection disabling routine and let the normal esc stuff handle everything else
if LexanConfig.Esc == true and Lexan.AHProtected == true then
self:AH_OFF()
end
self.hooks["ToggleGameMenu"].orig(clicked)
end
function Lexan:ToggleWorldMap()
-- Prevents conflicts with MetaMap
if METAMAP_VERSION then
MetaMap_ToggleFrame(WorldMapFrame)
-- Prevents conflicts with Atlas' world map replacer. If they're around, then let Atlas handle it
elseif AtlasOptions and Atlas_ReplaceWorldMap() == true then
Atlas_Toggle()
-- End of anti-conflict stuff
-- Instead of putting the frame through the UIPanels system, we just do shit the basic way :P
-- I.e. instead of Show/HideUIPanel, we just do Frame:Show/Hide
-- Hide
elseif WorldMapFrame:IsVisible() then
WorldMapFrame:Hide()
-- Show
else
WorldMapFrame:EnableMouse(1) -- This prevents tooltips from stuff underneath the world map appearing when the world map is on
SetupWorldMapScale(WorldMapFrame)
WorldMapFrame:Show()
end
end
function Lexan:AUCTION_HOUSE_SHOW()
-- Checking for presence of AuctionFrame (Can't do shit without it :P)
if AuctionFrame and AuctionFrame:IsShown() and not self.AHProtected then
-- We're protecting, so...
self.AHProtected = true
-- If the frame is the current doublewide frame, then clear the doublewide
if ( GetDoublewideFrame() == AuctionFrame ) then
SetDoublewideFrame(nil)
end
-- Remove AuctionFrame from the window handling system
-- Essentially the part we've been waiting for...
UIPanelWindows["AuctionFrame"] = nil
-- Protection done!!
end
end
function Lexan:AUCTION_HOUSE_CLOSED()
-- For a start, is protection even on?
if ( self.AHProtected ) and ( AuctionFrame) then
self.AHProtected = false
-- Put the frame back into the UI window handling system
UIPanelWindows["AuctionFrame"] = { area = "doublewide", pushable = 0 };
if ( AuctionFrame:IsVisible() ) then
SetDoublewideFrame(AuctionFrame)
end
end
end
function Lexan:AntiTrade_ON()
if ( GetCVar("BlockTrades") == "0" ) and ( not self.TradesBlockedByUser ) then
-- Just in case the luser logs out via chat command in a city with the
-- windows open, which would cause trades to remain blocked. Not good :P
self:RegisterEvent("PLAYER_LEAVING_WORLD", "AntiTrade_OFF")
SetCVar("BlockTrades", "1")
self.TradesBlockedByMod = true
end
end
function Lexan:AntiTrade_OFF()
if ( self.TradesBlockedByMod ) then
self:UnregisterEvent("PLAYER_LEAVING_WORLD") -- We don't need it anymore for now
SetCVar("BlockTrades", "0")
self.TradesBlockedByMod = false
end
end
Generated by GNU Enscript 1.6.5.90.