local addonName, addon = ... local core = LibStub("Libra"):NewAddon(addonName, addon) addon.display = LibStub("EasyDisplay-1.0") addon.name = addonName:gsub("Broker_", "") local defaults = { profile = { mouseButton = 1, numAddOns = 10, hideTooltip = false, hideTooltipAccessibilityBindings = false, hideLogoutButtons = true, hideReloadUIButton = false, hideOptionsButton = false, hideKeyBindings = true, menu = { character = 1, spellbook = 2, talents = 3, achievements = 4, questlog = 5, guild = 6, lfd = 7, collections = 8, journal = 9, social = 10, mainmenu = 11 }, accessibility = { { name = "bags", modifier = 1 }, { name = "questlog", modifier = 2 }, { name = "pvp", modifier = 3 }, { name = "social", modifier = 4 } } } } addon.buttons = { KEY_BUTTON1, KEY_BUTTON2, } addon.modifiers = { NONE, SHIFT_KEY, CTRL_KEY, ALT_KEY } core:SetOnUpdate(function(self, elapsed) if addon:IsMenuVisible() or not addon.tooltip then return end local t = self.elapsed or 0 self.elapsed = t + elapsed t = self.elapsed if t >= 1 then addon:UpdateTooltip() self.elapsed = nil end end) function core:OnInitialize() self:RegisterEvent("PLAYER_REGEN_ENABLED") self:RegisterEvent("PLAYER_REGEN_DISABLED") self:RegisterEvent("UPDATE_BINDINGS") addon.db = LibStub("AceDB-3.0"):New("Broker_StartMenuDb", defaults, true) addon.db.RegisterCallback(addon, "OnProfileChanged", function() ReloadUI() end) addon.db.RegisterCallback(addon, "OnProfileCopied", function() ReloadUI() end) addon.db.RegisterCallback(addon, "OnProfileReset", function() ReloadUI() end) addon.dataobj = LibStub("LibDataBroker-1.1"):NewDataObject(addon.name, { type = "data source", icon = "Interface\\GroupFrame\\UI-Group-LeaderIcon", text = addon.name, OnClick = function(self, button) addon:BuildMenu() if not addon.db.profile.blockInCombat or not UnitAffectingCombat("player") then addon:OpenMenu(self, button) end GameTooltip:Hide() end, OnEnter = function(self) local _, y = GetCursorPosition() local _, y2 = UIParent:GetCenter() GameTooltip:SetOwner(self, "ANCHOR_NONE") if y > y2 then GameTooltip:SetPoint("TOP", self, "BOTTOM") else GameTooltip:SetPoint("BOTTOM", self, "TOP") end addon:UpdateTooltip() addon.tooltip = true end, OnLeave = function(self) GameTooltip:Hide() addon.tooltip = nil end }) end function core:PLAYER_REGEN_ENABLED() addon.dataobj.text = addon.name addon:UpdateMenu() end function core:PLAYER_REGEN_DISABLED() addon.dataobj.text = "|cffff0000In combat|r" addon:UpdateMenu() end function core:UPDATE_BINDINGS() addon:UpdateMenu() end