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.

124 lines
3.8 KiB

-- saved variables
Broker_Everything_CharacterDB = {}; -- per character data
Broker_Everything_DataDB = {forcePrefix=true}; -- global data
Broker_Everything_AceDB = {}; -- config data table controlled by AceDB
-- some usefull namespace to locals
local addon, ns = ...;
local C, L = ns.LC.color, ns.L;
local wipe,ipairs,pairs,type=wipe,ipairs,pairs,type;
local UnitLevel,UnitFactionGroup=UnitLevel,UnitFactionGroup;
-- core event frame --
----------------------
local Broker_Everything = CreateFrame("Frame");
function ns.resetAllSavedVariables()
Broker_Everything_DataDB=nil
Broker_Everything_CharacterDB=nil
Broker_Everything_AceDB=nil
Broker_Everything_DataDB.forcePrefix=true
C_UI.Reload();
end
function ns.resetCollectedData()
Broker_Everything_DataDB=nil
Broker_Everything_CharacterDB=nil
C_UI.Reload();
end
function ns.resetConfigs()
Broker_Everything_AceDB=nil
Broker_Everything_DataDB.forcePrefix=true
C_UI.Reload();
end
Broker_Everything:SetScript("OnEvent", function (self, event, ...)
if event == "ADDON_LOADED" and addon==... then
-- character cache
local baseData={"name","class","faction","race"};
if Broker_Everything_CharacterDB.order==nil then
Broker_Everything_CharacterDB.order={};
end
local names = {};
for i=1, #Broker_Everything_CharacterDB.order do
names[Broker_Everything_CharacterDB.order[i]]=1;
end
for name in pairs(Broker_Everything_CharacterDB)do
if name~="order" and not names[name] then
Broker_Everything_CharacterDB[name] = nil;
end
end
if(not Broker_Everything_CharacterDB[ns.player.name_realm])then
tinsert(Broker_Everything_CharacterDB.order,ns.player.name_realm);
Broker_Everything_CharacterDB[ns.player.name_realm] = {orderId=#Broker_Everything_CharacterDB.order};
end
for _,v in ipairs(baseData)do
if(ns.player[v] and Broker_Everything_CharacterDB[ns.player.name_realm][v]~=ns.player[v])then
Broker_Everything_CharacterDB[ns.player.name_realm][v] = ns.player[v];
end
end
Broker_Everything_CharacterDB[ns.player.name_realm].level = UnitLevel("player");
ns.toon = Broker_Everything_CharacterDB[ns.player.name_realm];
-- data cache
if Broker_Everything_DataDB.realms==nil then
Broker_Everything_DataDB.realms = {};
end
ns.data = Broker_Everything_DataDB;
-- init ace option panel
ns.RegisterOptions()
-- modules
ns.moduleInit();
-- slash command
if ns.profile.GeneralOptions.chatCommands then
ns.RegisterSlashCommand();
end
if ns.profile.GeneralOptions.showAddOnLoaded or IsShiftKeyDown() then
ns:print(L["AddOnLoaded"]);
end
ns.eventAddOnLoaded = true;
self:UnregisterEvent(event);
elseif event == "DISPLAY_SIZE_CHANGED" then
ns.ui = {size={UIParent:GetSize()},center={UIParent:GetCenter()}};
elseif event=="PLAYER_LOGIN" then
-- start PLAYER_LOGIN event queue for modules
ns.modulePLQueueInit();
-- iconset
ns.I(true);
ns.updateIcons(true);
ns.eventPlayerEnteredWorld=true;
elseif event=="PLAYER_LEVEL_UP" then
local lvl = UnitLevel("player");
if lvl~=ns.toon.level then
ns.toon.level=lvl;
else
C_Timer.After(1,function()
-- sometimes this function return old level directly on levelup event
ns.toon.level = UnitLevel("player");
end);
end
elseif event=="NEUTRAL_FACTION_SELECT_RESULT" then
ns.player.faction, ns.player.factionL = UnitFactionGroup("player");
L[ns.player.faction] = ns.player.factionL;
ns.toon.faction = ns.player.faction;
end
end)
Broker_Everything:RegisterEvent("ADDON_LOADED");
Broker_Everything:RegisterEvent("PLAYER_LOGIN");
Broker_Everything:RegisterEvent("PLAYER_LEVEL_UP");
Broker_Everything:RegisterEvent("DISPLAY_SIZE_CHANGED");
if ns.client_version>=5 then -- mop
Broker_Everything:RegisterEvent("NEUTRAL_FACTION_SELECT_RESULT");
end