|
|
|
|
--[[
|
|
|
|
|
|
|
|
|
|
This file is part of 'Masque', an add-on for World of Warcraft. For bug reports,
|
|
|
|
|
documentation and license information, please visit https://github.com/SFX-WoW/Masque.
|
|
|
|
|
|
|
|
|
|
* File...: Options\General.lua
|
|
|
|
|
* Author.: StormFX
|
|
|
|
|
|
|
|
|
|
'General Settings' Group/Panel
|
|
|
|
|
|
|
|
|
|
]]
|
|
|
|
|
|
|
|
|
|
local MASQUE, Core = ...
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
-- WoW API
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
local ReloadUI = _G.ReloadUI
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
-- Libraries
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
local LIB_DBI = Core.LIB_DBI
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
-- Internal
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
-- @ Masque
|
|
|
|
|
local WOW_RETAIL = Core.WOW_RETAIL
|
|
|
|
|
|
|
|
|
|
-- @ Core\Groups
|
|
|
|
|
local Groups = Core.Groups
|
|
|
|
|
|
|
|
|
|
-- @ Options\Core
|
|
|
|
|
local GetOption, SetOption, Setup = Core.GetOption, Core.SetOption, Core.Setup
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
-- Locals
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
-- Animation Events
|
|
|
|
|
local Effects = {
|
|
|
|
|
Castbar = {
|
|
|
|
|
"UNIT_SPELLCAST_CHANNEL_START",
|
|
|
|
|
"UNIT_SPELLCAST_CHANNEL_STOP",
|
|
|
|
|
"UNIT_SPELLCAST_EMPOWER_START",
|
|
|
|
|
"UNIT_SPELLCAST_EMPOWER_STOP",
|
|
|
|
|
"UNIT_SPELLCAST_START",
|
|
|
|
|
"UNIT_SPELLCAST_STOP",
|
|
|
|
|
},
|
|
|
|
|
Interrupt = {
|
|
|
|
|
"UNIT_SPELLCAST_INTERRUPTED",
|
|
|
|
|
"UNIT_SPELLCAST_SUCCEEDED",
|
|
|
|
|
},
|
|
|
|
|
Reticle = {
|
|
|
|
|
"UNIT_SPELLCAST_FAILED",
|
|
|
|
|
"UNIT_SPELLCAST_RETICLE_CLEAR",
|
|
|
|
|
"UNIT_SPELLCAST_RETICLE_TARGET",
|
|
|
|
|
"UNIT_SPELLCAST_SENT",
|
|
|
|
|
},
|
|
|
|
|
SpellAlert = {
|
|
|
|
|
"SPELL_ACTIVATION_OVERLAY_GLOW_HIDE",
|
|
|
|
|
"SPELL_ACTIVATION_OVERLAY_GLOW_SHOW",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
-- Functions
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
-- Registers/unregisters events that trigger animations.
|
|
|
|
|
local function UpdateEffect(Name, Value)
|
|
|
|
|
local Frame = _G.ActionBarActionEventsFrame
|
|
|
|
|
local Events = Effects[Name]
|
|
|
|
|
|
|
|
|
|
if Value then
|
|
|
|
|
if Name == "SpellAlert" then
|
|
|
|
|
if Value > 0 then
|
|
|
|
|
Frame:RegisterEvent("SPELL_ACTIVATION_OVERLAY_GLOW_HIDE")
|
|
|
|
|
Frame:RegisterEvent("SPELL_ACTIVATION_OVERLAY_GLOW_SHOW")
|
|
|
|
|
else
|
|
|
|
|
Frame:UnregisterEvent("SPELL_ACTIVATION_OVERLAY_GLOW_HIDE")
|
|
|
|
|
Frame:UnregisterEvent("SPELL_ACTIVATION_OVERLAY_GLOW_SHOW")
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
for i = 1, #Events do
|
|
|
|
|
local Event = Events[i]
|
|
|
|
|
|
|
|
|
|
if Event == "UNIT_SPELLCAST_SENT" then
|
|
|
|
|
Frame:RegisterEvent(Event)
|
|
|
|
|
else
|
|
|
|
|
Frame:RegisterUnitEvent(Event, "player")
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
for i = 1, #Events do
|
|
|
|
|
Frame:UnregisterEvent(Events[i])
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
-- Setup
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
-- Creates the 'General Settings' group/panel.
|
|
|
|
|
function Setup.General(self)
|
|
|
|
|
-- @ Locales\enUS
|
|
|
|
|
local L = self.Locale
|
|
|
|
|
|
|
|
|
|
-- @ Masque
|
|
|
|
|
local CRLF = Core.CRLF
|
|
|
|
|
|
|
|
|
|
local Reload = "\n|cff0099ff"..L["Requires an interface reload."].."|r"
|
|
|
|
|
local Tooltip = "|cffffffff"..L["Select to view."].."|r"
|
|
|
|
|
|
|
|
|
|
local Options = {
|
|
|
|
|
type = "group",
|
|
|
|
|
name = L["General Settings"],
|
|
|
|
|
order = 2,
|
|
|
|
|
args = {
|
|
|
|
|
Head = {
|
|
|
|
|
type = "header",
|
|
|
|
|
name = MASQUE.." - "..L["General Settings"],
|
|
|
|
|
hidden = self.GetStandAlone,
|
|
|
|
|
order = 0,
|
|
|
|
|
disabled = true,
|
|
|
|
|
dialogControl = "SFX-Header",
|
|
|
|
|
},
|
|
|
|
|
Desc = {
|
|
|
|
|
type = "description",
|
|
|
|
|
name = L["This section will allow you to adjust Masque's interface and performance settings."]..CRLF,
|
|
|
|
|
order = 1,
|
|
|
|
|
fontSize = "medium",
|
|
|
|
|
},
|
|
|
|
|
Interface = {
|
|
|
|
|
type = "group",
|
|
|
|
|
name = L["Interface"],
|
|
|
|
|
desc = Tooltip,
|
|
|
|
|
get = GetOption,
|
|
|
|
|
set = SetOption,
|
|
|
|
|
order = 2,
|
|
|
|
|
args = {
|
|
|
|
|
Head = {
|
|
|
|
|
type = "header",
|
|
|
|
|
name = L["Interface Settings"],
|
|
|
|
|
order = 0,
|
|
|
|
|
disabled = true,
|
|
|
|
|
dialogControl = "SFX-Header",
|
|
|
|
|
},
|
|
|
|
|
Desc = {
|
|
|
|
|
type = "description",
|
|
|
|
|
name = L["This section will allow you to adjust settings that affect Masque's interface."]..CRLF,
|
|
|
|
|
order = 1,
|
|
|
|
|
fontSize = "medium",
|
|
|
|
|
},
|
|
|
|
|
Icon = {
|
|
|
|
|
type = "select",
|
|
|
|
|
name = L["Menu Icon"],
|
|
|
|
|
desc = L["Select where Masque's menu icon is displayed."],
|
|
|
|
|
get = function(i) return Core.db.profile.LDB.position end,
|
|
|
|
|
set = function(i, Value) Core:UpdateIconPosition(Value) end,
|
|
|
|
|
values = {
|
|
|
|
|
[0] = L["None"],
|
|
|
|
|
[1] = L["Minimap"],
|
|
|
|
|
[2] = (WOW_RETAIL and L["Add-On Compartment"]) or nil,
|
|
|
|
|
},
|
|
|
|
|
order = 2,
|
|
|
|
|
disabled = function() return not LIB_DBI end,
|
|
|
|
|
},
|
|
|
|
|
SPC01 = {
|
|
|
|
|
type = "description",
|
|
|
|
|
name = " ",
|
|
|
|
|
order = 3,
|
|
|
|
|
},
|
|
|
|
|
StandAlone = {
|
|
|
|
|
type = "toggle",
|
|
|
|
|
name = L["Stand-Alone GUI"],
|
|
|
|
|
desc = L["Use a resizable, stand-alone options window."],
|
|
|
|
|
order = 4,
|
|
|
|
|
},
|
|
|
|
|
SPC02 = {
|
|
|
|
|
type = "description",
|
|
|
|
|
name = " ",
|
|
|
|
|
order = 5,
|
|
|
|
|
},
|
|
|
|
|
AltSort = {
|
|
|
|
|
type = "toggle",
|
|
|
|
|
name = L["Alternate Sorting"],
|
|
|
|
|
desc = L["Causes the skins included with Masque to be listed above third-party skins."],
|
|
|
|
|
order = 6,
|
|
|
|
|
},
|
|
|
|
|
SPC03 = {
|
|
|
|
|
type = "description",
|
|
|
|
|
name = " ",
|
|
|
|
|
order = 7,
|
|
|
|
|
},
|
|
|
|
|
SkinInfo = {
|
|
|
|
|
type = "toggle",
|
|
|
|
|
name = L["Skin Information"],
|
|
|
|
|
desc = L["Load the skin information panel."]..Reload,
|
|
|
|
|
set = function(i, Value)
|
|
|
|
|
Core.db.profile.Interface.SkinInfo = Value
|
|
|
|
|
Core.Setup("Info")
|
|
|
|
|
end,
|
|
|
|
|
order = 8,
|
|
|
|
|
},
|
|
|
|
|
SPC04 = {
|
|
|
|
|
type = "description",
|
|
|
|
|
name = " ",
|
|
|
|
|
order = 10,
|
|
|
|
|
},
|
|
|
|
|
Reload = {
|
|
|
|
|
type = "execute",
|
|
|
|
|
name = L["Reload Interface"],
|
|
|
|
|
desc = L["Click to reload the interface."],
|
|
|
|
|
func = function(i) ReloadUI() end,
|
|
|
|
|
order = -1,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
Effects = Core.WOW_RETAIL and {
|
|
|
|
|
type = "group",
|
|
|
|
|
name = L["Advanced"],
|
|
|
|
|
desc = Tooltip,
|
|
|
|
|
get = GetOption,
|
|
|
|
|
set = function(Info, Value)
|
|
|
|
|
local Name = Info[#Info]
|
|
|
|
|
|
|
|
|
|
if Name ~= "Cooldown" then
|
|
|
|
|
UpdateEffect(Name, Value)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
Core.db.profile.Effects[Name] = Value
|
|
|
|
|
end,
|
|
|
|
|
order = 3,
|
|
|
|
|
args = {
|
|
|
|
|
Head = {
|
|
|
|
|
type = "header",
|
|
|
|
|
name = L["Advanced Settings"],
|
|
|
|
|
order = 0,
|
|
|
|
|
disabled = true,
|
|
|
|
|
dialogControl = "SFX-Header",
|
|
|
|
|
},
|
|
|
|
|
Desc = {
|
|
|
|
|
type = "description",
|
|
|
|
|
name = L["This section will allow you to adjust button settings for the default interface."]..CRLF,
|
|
|
|
|
order = 1,
|
|
|
|
|
fontSize = "medium",
|
|
|
|
|
},
|
|
|
|
|
SpellAlert = {
|
|
|
|
|
type = "select",
|
|
|
|
|
name = L["Spell Alerts"],
|
|
|
|
|
desc = L["Select which spell alert animations are enabled."],
|
|
|
|
|
values = {
|
|
|
|
|
[0] = L["None"],
|
|
|
|
|
[1] = L["Flash and Loop"],
|
|
|
|
|
[2] = L["Loop Only"],
|
|
|
|
|
},
|
|
|
|
|
order = 2,
|
|
|
|
|
},
|
|
|
|
|
SPC01 = {
|
|
|
|
|
type = "description",
|
|
|
|
|
name = " ",
|
|
|
|
|
order = 3,
|
|
|
|
|
},
|
|
|
|
|
Castbar = {
|
|
|
|
|
type = "toggle",
|
|
|
|
|
name = L["Cast Animations"],
|
|
|
|
|
desc = L["Enable cast animations on action buttons."],
|
|
|
|
|
order = 4,
|
|
|
|
|
},
|
|
|
|
|
SPC02 = {
|
|
|
|
|
type = "description",
|
|
|
|
|
name = " ",
|
|
|
|
|
order = 5,
|
|
|
|
|
},
|
|
|
|
|
Cooldown = {
|
|
|
|
|
type = "toggle",
|
|
|
|
|
name = L["Cooldown Animations"],
|
|
|
|
|
desc = L["Enable animations when action button cooldowns finish."],
|
|
|
|
|
order = 6,
|
|
|
|
|
hidden = true,
|
|
|
|
|
},
|
|
|
|
|
SPC03 = {
|
|
|
|
|
type = "description",
|
|
|
|
|
name = " ",
|
|
|
|
|
order = 7,
|
|
|
|
|
hidden = true,
|
|
|
|
|
},
|
|
|
|
|
Interrupt = {
|
|
|
|
|
type = "toggle",
|
|
|
|
|
name = L["Interrupt Animations"],
|
|
|
|
|
desc = L["Enable interrupt animations on action buttons."],
|
|
|
|
|
order = 8,
|
|
|
|
|
},
|
|
|
|
|
SPC04 = {
|
|
|
|
|
type = "description",
|
|
|
|
|
name = " ",
|
|
|
|
|
order = 9,
|
|
|
|
|
},
|
|
|
|
|
Reticle = {
|
|
|
|
|
type = "toggle",
|
|
|
|
|
name = L["Targeting Reticles"],
|
|
|
|
|
desc = L["Enable targeting reticles on action buttons."],
|
|
|
|
|
order = 10,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
} or nil,
|
|
|
|
|
Developer = {
|
|
|
|
|
type = "group",
|
|
|
|
|
name = L["Developer"],
|
|
|
|
|
desc = Tooltip,
|
|
|
|
|
order = 10,
|
|
|
|
|
args = {
|
|
|
|
|
Head = {
|
|
|
|
|
type = "header",
|
|
|
|
|
name = L["Developer Settings"],
|
|
|
|
|
order = 0,
|
|
|
|
|
disabled = true,
|
|
|
|
|
dialogControl = "SFX-Header",
|
|
|
|
|
},
|
|
|
|
|
Desc = {
|
|
|
|
|
type = "description",
|
|
|
|
|
name = L["This section will allow you to adjust settings that affect working with Masque's API."]..CRLF,
|
|
|
|
|
order = 1,
|
|
|
|
|
fontSize = "medium",
|
|
|
|
|
},
|
|
|
|
|
Debug = {
|
|
|
|
|
type = "toggle",
|
|
|
|
|
name = L["Debug Mode"],
|
|
|
|
|
desc = L["Causes Masque to throw Lua errors whenever it encounters a problem with an add-on or skin."],
|
|
|
|
|
get = GetOption,
|
|
|
|
|
set = self.ToggleDebug,
|
|
|
|
|
order = 2,
|
|
|
|
|
},
|
|
|
|
|
SPC01 = {
|
|
|
|
|
type = "description",
|
|
|
|
|
name = " ",
|
|
|
|
|
order = 10,
|
|
|
|
|
},
|
|
|
|
|
Purge = {
|
|
|
|
|
type = "execute",
|
|
|
|
|
name = L["Clean Database"],
|
|
|
|
|
desc = L["Click to purge the settings of all unused add-ons and groups."],
|
|
|
|
|
func = function(i)
|
|
|
|
|
local db = Core.db.profile.Groups
|
|
|
|
|
|
|
|
|
|
for ID in pairs(db) do
|
|
|
|
|
if not Groups[ID] then
|
|
|
|
|
db[ID] = nil
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end,
|
|
|
|
|
order = -1,
|
|
|
|
|
confirm = true,
|
|
|
|
|
confirmText = L["This action cannot be undone. Continue?"],
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
self.Options.args.General = Options
|
|
|
|
|
|
|
|
|
|
local Path = "General"
|
|
|
|
|
self:AddOptionsPanel(Path, self.LIB_ACD:AddToBlizOptions(MASQUE, L["General Settings"], MASQUE, Path))
|
|
|
|
|
|
|
|
|
|
-- GC
|
|
|
|
|
Setup.General = nil
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
-- Core
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
Core.UpdateEffect = UpdateEffect
|