CreateFrame("Frame","SGI_EVENT_HANDLER"); SGI_EVENTS = {}; function SGI_EVENTS:ADDON_LOADED() -- Index used to separate settings for different characters. SGI_DATA_INDEX = UnitName("player").." - "..GetRealmName(); -- Make sure the saved variables are correct. --General settings: if (type(SGI_DATA) ~= "table") then SGI_DATA = {}; end -- Fix transition from 6.x to 7.x SGI:ResetFix() if (type(SGI_DATA.lock) ~= "table") then SGI_DATA.lock = {}; end if (type(SGI_DATA.guildList) ~= "table") then SGI_DATA.guildList = {} end if (type(SGI_DATA.guildList[GetRealmName()]) ~= "table") then SGI_DATA.guildList[GetRealmName()] = {}; end --Character based settings. if type(SGI_DATA[SGI_DATA_INDEX]) ~= "table" then SGI_DATA[SGI_DATA_INDEX] = {} end if type(SGI_DATA[SGI_DATA_INDEX].settings) ~= "table" then SGI_DATA[SGI_DATA_INDEX].settings = { inviteMode = 2, lowLimit = SGI_MIN_LEVEL_SUPER_SCAN, highLimit = SGI_MAX_LEVEL_SUPER_SCAN, raceStart = SGI_MAX_LEVEL_SUPER_SCAN, classStart = SGI_MAX_LEVEL_SUPER_SCAN, interval = 5, checkBox = {}, dropDown = {}, frames = {}, filters = {}, } end if type(SGI_DATA[SGI_DATA_INDEX].settings.whispers) ~= "table" then SGI_DATA[SGI_DATA_INDEX].settings.whispers = {} end if type(SGI_BACKUP) ~= "table" then SGI_BACKUP = SGI_DATA.lock end -- If there is a saved keybind, activate it. -- if (SGI_DATA[SGI_DATA_INDEX].keyBind) then -- SetBindingClick(SGI_DATA[SGI_DATA_INDEX].keyBind,"SGI_INVITE_BUTTON"); -- end -- Anti spam. Users of the AddOn GuildShield are ignored. -- GuildShield:Initiate(SGI.RemoveShielded); -- Load locale SGI:LoadLocale(); -- Load the minimap button if (not SGI_DATA[SGI_DATA_INDEX].settings.checkBox["CHECKBOX_HIDE_MINIMAP"]) then SGI:ShowMinimapButton(); end -- if (not SGI_DATA[SGI_DATA_INDEX].settings.checkBox["CHECKBOX_ADV_SCAN"]) then -- SGI_DATA[SGI_DATA_INDEX].settings.checkBox["CHECKBOX_ADV_SCAN"] = FALSE; -- end -- Removed Keybind button, too dangerous code. -- Activate the keybind, if any. -- if (SGI_DATA[SGI_DATA_INDEX].keyBind) then -- SetBindingClick(SGI_DATA[SGI_DATA_INDEX].keyBind, "SGI_INVITE_BUTTON2"); -- end --Debugging, used for development -- SGI:DebugState(SGI_DATA[SGI_DATA_INDEX].debug); --Tell guildies what version you're running -- SGI:BroadcastVersion("GUILD"); legacy --Request lock sync from guildies --SGI:RequestSync(); --Remove locks that are > 2 months old --SGI:RemoveOutdatedLocks(); --SGI_DATA[SGI_DATA_INDEX].settings.checkBox["Mute SGI"]=true --SGI_DATA[SGI_DATA_INDEX].settings.checkBox["CHECKBOX_HIDE_SYSTEM"]=true --print(SGI_DATA[SGI_DATA_INDEX].settings.checkBox["CHECKBOX_HIDE_SYSTEM"]); --Chat Intercept --ChatIntercept:StateSystem(SGI_DATA[SGI_DATA_INDEX].settings.checkBox["CHECKBOX_HIDE_SYSTEM"]); ChatIntercept:StateSystem(false); ChatIntercept:StateWhisper(SGI_DATA[SGI_DATA_INDEX].settings.checkBox["CHECKBOX_HIDE_WHISPER"]); --ChatIntercept:StateRealm(true); --Show changes, if needed --SGI:debug((SGI_DATA[SGI_DATA_INDEX].settings.checkBox["SGI_CHANGES"] and "true" or "nil").." "..(SGI_DATA.showChanges and "true" or "nil")); if (not SGI_DATA[SGI_DATA_INDEX].settings.checkBox["SGI_CHANGES"] and SGI_DATA.showChanges ~= SGI.VERSION_MAJOR) then -- SGI:ShowChanges(); -- SGI_DATA.showChanges = SGI.VERSION_MAJOR; -- SGI:debug("Show changes"); end --Need to load the SuperScan frame for certain functions SGI:CreateSmallSuperScanFrame(); SuperScanFrame:Hide(); end function SGI_EVENTS:UPDATE_MOUSEOVER_UNIT() -- Create a list of players and their guild (if any). -- Used to prevent false positives. if (UnitIsPlayer("mouseover")) then local name = UnitName("mouseover"); local guild = GetGuildInfo("mouseover"); local realm = GetRealmName(); if (not guild or guild == "") then return end if (type(SGI_DATA.guildList[realm][guild]) ~= "table") then SGI_DATA.guildList[realm][guild] = {}; end for k,v in pairs(SGI_DATA.guildList[realm][guild]) do if (v == name) then return; end end tinsert(SGI_DATA.guildList[realm][guild], name); --SGI_DATA.guildList[realm][name] = guild; end end function SGI_EVENTS:PLAYER_LOGOUT() C_ChatInfo.SendAddonMessageLogged("SGI_STOP", "", "GUILD"); end function SGI_EVENTS:CHAT_MSG_ADDON(event, ...) SGI:AddonMessage(event, ...); end function SGI_EVENTS:CHAT_MSG_SYSTEM(event, ...) SGI:SystemMessage(event,message,...) end for event,_ in pairs(SGI_EVENTS) do SGI_EVENT_HANDLER:RegisterEvent(event); end SGI_EVENT_HANDLER:SetScript("OnEvent", function(self,event,...) SGI_EVENTS[event](self, event, ...); end) SGI:debug(">> Events.lua");