--[[ This file is part of 'Masque', an add-on for World of Warcraft. For license information, please see the included License.txt file. * File...: Masque.lua * Author.: StormFX ]] local MASQUE, Core = ... -- Lua Functions local print = print ---------------------------------------- -- Libraries, etc. ---------------------------------------- -- GLOBALS: LibStub assert(LibStub, "Masque requires LibStub.") local Masque = LibStub("AceAddon-3.0"):NewAddon(MASQUE) Core.API = LibStub:NewLibrary(MASQUE, 70200) Core.Version = GetAddOnMetadata(MASQUE, "Version") local ACR = LibStub("AceConfigRegistry-3.0") local LDB = LibStub("LibDataBroker-1.1", true) local LDBI = LibStub("LibDBIcon-1.0", true) local L = Core.Locale ---------------------------------------- -- Basic Options Table ---------------------------------------- Core.Options = { type = "group", name = MASQUE, args = { General = { type = "group", name = L["General"], order = 0, args = {}, }, }, } ---------------------------------------- -- ADDON_LOADED Event ---------------------------------------- function Masque:OnInitialize() local Defaults = { profile = { Debug = false, Groups = { ["*"] = { Inherit = true, Disabled = false, SkinID = "Blizzard", Gloss = 0, Backdrop = false, Colors = {}, }, }, LDB = { hide = true, minimapPos = 220, radius = 80, }, }, } local db = LibStub("AceDB-3.0"):New("MasqueDB", Defaults, true) db.RegisterCallback(Core, "OnProfileChanged", "Update") db.RegisterCallback(Core, "OnProfileCopied", "Update") db.RegisterCallback(Core, "OnProfileReset", "Update") Core.db = db SLASH_MASQUE1 = "/msq" SLASH_MASQUE2 = "/masque" SlashCmdList["MASQUE"] = function(Cmd, ...) if Cmd == "debug" then Core:Debug() else Core:ShowOptions() end end end ---------------------------------------- -- PLAYER_LOGIN Event ---------------------------------------- function Masque:OnEnable() local db = Core.db.profile ACR:RegisterOptionsTable(MASQUE, Core.Options) Core.ACR = ACR Core.OptionsPanel = LibStub("AceConfigDialog-3.0"):AddToBlizOptions(MASQUE, MASQUE, nil, "General") Core.Options.args.General.args.Load = { type = "execute", name = L["Load Masque Options"], desc = (L["Click this button to load Masque's options. You can also use the %s or %s chat command."]):format("|cffffcc00/msq|r", "|cffffcc00/masque|r"), func = function() Core:LoadOptions() InterfaceOptionsFrame_OpenToCategory(Core.OptionsPanel.Addons) end, hidden = function() return Core.OptionsLoaded end, order = 0, } if LDB then Core.LDBO = LDB:NewDataObject(MASQUE, { type = "launcher", label = MASQUE, icon = "Interface\Addons\Masque\Textures\Icon", OnClick = function(self, Button) if Button == "LeftButton" or Button == "RightButton" then Core:ShowOptions() end end, OnTooltipShow = function(Tip) if not Tip or not Tip.AddLine then return end Tip:AddLine(MASQUE) Tip:AddLine(L["Click to open Masque's options window."], 1, 1, 1) end, }) Core.LDB = LDB if LDBI then LDBI:Register(MASQUE, Core.LDBO, db.LDB) Core.LDBI = LDBI end end end ---------------------------------------- -- Core Methods ---------------------------------------- -- Toggles debug mode. function Core:Debug() local db = self.db.profile if db.Debug then db.Debug = false print("|cffffff99"..L["Masque debug mode disabled."].."|r") else db.Debug = true print("|cffffff99"..L["Masque debug mode enabled."].."|r") end end -- Updates the current profile. function Core:Update() local Global = Core:Group() Global:Update() if LDBI then LDBI:Refresh(MASQUE, Core.db.profile.LDB) end end