vanilla-wow-addons – Rev 1
?pathlinks?
--[[
Events.lua
The main event handler for Bagnon and Banknon.
It controls when the frames update, and when and when they are not shown.
The UI by default partially supports showing/hiding at the mailbox, and fully supports the inventory frame showing/hiding at a vendor.
I've extended the behavior in the following ways:
If a frame was previously shown by a user, it will not automatically close.
The events of showing the bank, tradeskill, auction, and trading can also be set to open the inventory or bank windows.
--]]
bgn_atBank = nil; --a flag for if the player is at the bank or not
function BagnonEvents_OnEvent()
--[[
Events For Updating Items
--]]
if ( event == "BAG_UPDATE" or event == "BAG_UPDATE_COOLDOWN") then
if( Bagnon and Bagnon:IsVisible() and Bagnon_FrameHasBag("Bagnon", arg1) ) then
BagnonFrame_Update(Bagnon, arg1);
elseif( Banknon and Banknon:IsVisible() and Bagnon_FrameHasBag("Banknon", arg1) ) then
BagnonFrame_Update(Banknon, arg1);
end
elseif( event == "PLAYERBANKSLOTS_CHANGED") then
if( Banknon and Banknon:IsVisible() and Bagnon_FrameHasBag("Banknon", -1) ) then
BagnonFrame_Update(Banknon, -1);
end
elseif( event == "ITEM_LOCK_CHANGED" ) then
if( Bagnon and Bagnon:IsVisible() ) then
BagnonFrame_UpdateLock(Bagnon);
end
if( Banknon and Banknon:IsVisible() ) then
BagnonFrame_UpdateLock(Banknon);
end
--the keyring's size changes based on the player's level
elseif( event == "PLAYER_LEVEL_UP") then
if( Bagnon and Bagnon:IsVisible() and Bagnon_FrameHasBag("Bagnon", KEYRING_CONTAINER) ) then
BagnonFrame_Generate(Bagnon);
end
--[[
Automatic Frame Opening/Closing Events
--]]
elseif(event == "BANKFRAME_OPENED") then
bgn_atBank = 1;
if(BagnonSets.showBagsAtBank) then
BagnonFrame_Open("Bagnon", 1);
end
if(BagnonSets.showBankAtBank and Bagnon_IsAddOnEnabled("Banknon")) then
BagnonFrame_Open("Banknon", 1);
else
BagnonEvents_ShowBlizBank();
end
elseif(event == "BANKFRAME_CLOSED") then
bgn_atBank = nil;
if(BagnonSets.showBagsAtBank) then
BagnonFrame_Close("Bagnon", 1);
end
if(BagnonSets.showBankAtBank) then
BagnonFrame_Close("Banknon", 1);
end
elseif(event == "TRADE_SHOW") then
if(BagnonSets.showBagsAtTrade) then
BagnonFrame_Open("Bagnon", 1);
end
if(BagnonSets.showBankAtTrade) then
BagnonFrame_Open("Banknon", 1);
end
elseif(event == "TRADE_CLOSED") then
if(BagnonSets.showBagsAtTrade) then
BagnonFrame_Close("Bagnon", 1);
end
if(BagnonSets.showBankAtTrade) then
BagnonFrame_Close("Banknon", 1);
end
elseif(event == "TRADE_SKILL_SHOW") then
if(BagnonSets.showBagsAtCraft) then
BagnonFrame_Open("Bagnon", 1);
end
if(BagnonSets.showBankAtCraft) then
BagnonFrame_Open("Banknon", 1);
end
elseif(event == "TRADE_SKILL_CLOSE") then
if(BagnonSets.showBagsAtCraft) then
BagnonFrame_Close("Bagnon", 1);
end
if(BagnonSets.showBankAtCraft) then
BagnonFrame_Close("Banknon", 1);
end
elseif(event == "AUCTION_HOUSE_SHOW") then
if(BagnonSets.showBagsAtAH) then
BagnonFrame_Open("Bagnon", 1);
end
if(BagnonSets.showBankAtAH) then
BagnonFrame_Open("Banknon", 1);
end
elseif(event == "AUCTION_HOUSE_CLOSED") then
if(BagnonSets.showBagsAtAH) then
BagnonFrame_Close("Bagnon", 1);
end
if(BagnonSets.showBankAtAH) then
BagnonFrame_Close("Banknon", 1);
end
elseif(event == "MAIL_SHOW") then
if(BagnonSets.showBankAtMail) then
BagnonFrame_Open("Banknon", 1);
end
elseif(event == "MAIL_CLOSED") then
BagnonFrame_Close("Bagnon", 1);
if(BagnonSets.showBankAtMail) then
BagnonFrame_Close("Banknon", 1);
end
elseif(event == "MERCHANT_SHOW") then
if(BagnonSets.showBankAtVendor) then
BagnonFrame_Open("Banknon", 1);
end
elseif(event == "MERCHANT_CLOSED") then
if(BagnonSets.showBankAtVendor) then
BagnonFrame_Close("Banknon", 1);
end
--[[ Loading Event ]]--
elseif(event == "ADDON_LOADED" and arg1 == "Bagnon_Core") then
BagnonEvents:UnregisterEvent("ADDON_LOADED");
BagnonEvents_Load(this);
end
end
function BagnonEvents_Load(eventFrame)
BankFrame:UnregisterEvent("BANKFRAME_OPENED");
--disable the ItemOnUpdate function for those using KCItems, since it causes a pretty bad memory leak
if KC_Items then
BagnonItem_OnUpdate = function() return; end;
end
BagnonEvents_LoadVariables();
BagnonEvents_ObtainLocalizedNames();
Infield.AddRescaleAction(BagnonEvents_RescaleAll);
eventFrame:RegisterEvent("BAG_UPDATE");
eventFrame:RegisterEvent("PLAYERBANKSLOTS_CHANGED");
eventFrame:RegisterEvent("ITEM_LOCK_CHANGED");
eventFrame:RegisterEvent("BAG_UPDATE_COOLDOWN");
eventFrame:RegisterEvent("PLAYER_LEVEL_UP");
eventFrame:RegisterEvent("BANKFRAME_OPENED");
eventFrame:RegisterEvent("BANKFRAME_CLOSED");
eventFrame:RegisterEvent("TRADE_SHOW");
eventFrame:RegisterEvent("TRADE_CLOSED");
eventFrame:RegisterEvent("TRADE_SKILL_SHOW");
eventFrame:RegisterEvent("TRADE_SKILL_CLOSE");
eventFrame:RegisterEvent("AUCTION_HOUSE_SHOW");
eventFrame:RegisterEvent("AUCTION_HOUSE_CLOSED");
eventFrame:RegisterEvent("MAIL_SHOW");
eventFrame:RegisterEvent("MAIL_CLOSED");
eventFrame:RegisterEvent("MERCHANT_SHOW");
eventFrame:RegisterEvent("MERCHANT_CLOSED");
end
function BagnonEvents_LoadVariables()
if(not BagnonSets) then
BagnonSets = {
showBagsAtBank = 1,
showBagsAtAH = 1,
showBankAtBank = 1,
showTooltips = 1,
qualityBorders = 1,
version = BAGNON_VERSION,
};
BagnonMsg(BAGNON_INITIALIZED);
elseif(BagnonSets.version ~= BAGNON_VERSION) then
if(BagnonSets.overrideBank) then
BagnonSets.showBankAtBank = 1;
BagnonSets.overrideBank = nil;
end
BagnonSets.version = BAGNON_VERSION;
BagnonMsg(BAGNON_UPDATED);
end
end
local function BagnonHasInfo()
return (GetLocale() == "enUS" or
GetLocale() == "deDE" or
GetLocale() == "frFR" or
GetLocale() == "zhCN" or
GetLocale() == "zhTW" or
BagnonSets.noDebug);
end
--try and get localized names, so that its possible to do special bag coloring
function BagnonEvents_ObtainLocalizedNames()
if( not BagnonHasInfo() ) then
BagnonMsg("Obtaining localized data. Please report the following to where you downloaded Bagnon from.");
BagnonMsg( GetLocale() );
end
--backpack
local name, _, _, _, iType, subType = GetItemInfo(4500);
if(name) then
if( not BagnonHasInfo() ) then
BagnonMsg( "Backpack: " .. (iType or "null") .. ", " .. (subType or "null") );
end
if(iType) then
BAGNON_ITEMTYPE_CONTAINER = iType;
BAGNON_SUBTYPE_BAG = subType;
end
end
--ammo
name, _, _, _, iType, subType = GetItemInfo(8218);
if(name) then
if( not BagnonHasInfo() ) then
BagnonMsg( "Ammo: " .. (iType or "null") .. ", " .. (subType or "null") );
end
if(iType) then
BAGNON_ITEMTYPE_QUIVER = iType;
end
end
--soul pouch
name, _, _, _, iType, subType = GetItemInfo(21340);
if(name) then
if( not BagnonHasInfo() ) then
BagnonMsg( "Soul Bag: " .. (iType or "null") .. ", " .. (subType or "null") );
end
if(subType) then
BAGNON_SUBTYPE_SOULBAG = subType;
end
end
end
function BagnonEvents_RescaleAll()
if(Bagnon) then
BagnonFrame_Reposition(Bagnon);
end
if(Banknon) then
BagnonFrame_Reposition(Banknon);
end
end
--[[
Taken from Blizzard's code
Shows the normal bank frame
--]]
function BagnonEvents_ShowBlizBank()
BankFrameTitleText:SetText( UnitName("npc") );
SetPortraitTexture(BankPortraitTexture,"npc");
ShowUIPanel(BankFrame);
if( not BankFrame:IsVisible() ) then
CloseBankFrame();
end
UpdateBagSlotStatus();
end
--[[ Create the Event Handler Frame ]]--
CreateFrame("Frame", "BagnonEvents")
BagnonEvents:RegisterEvent("ADDON_LOADED");
BagnonEvents:SetScript("OnEvent", BagnonEvents_OnEvent);
BagnonEvents:Hide();
Generated by GNU Enscript 1.6.5.90.