This commit is contained in:
Andrew6810
2022-10-21 07:30:59 -07:00
parent cb55a92503
commit 3b75efe038
107 changed files with 25274 additions and 2 deletions
+271
View File
@@ -0,0 +1,271 @@
--[[
Copyright (C) 2006-2007 Nymbia
Copyright (C) 2010 Hendrik "Nevcairiel" Leppkes < h.leppkes@gmail.com >
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
]]
local Quartz3 = LibStub("AceAddon-3.0"):NewAddon("Quartz3", "AceConsole-3.0")
local L = LibStub("AceLocale-3.0"):GetLocale("Quartz3")
local media = LibStub("LibSharedMedia-3.0")
local db
----------------------------
-- Upvalues
-- GLOBALS: LibStub, QuartzDB
local type, pairs, tonumber = type, pairs, tonumber
local defaults = {
profile = {
modules = { ["*"] = true },
hidesamwise = true,
sparkcolor = {1, 1, 1, 0.5},
spelltextcolor = {1, 1, 1},
timetextcolor = {1, 1, 1},
castingcolor = {1.0, 0.49, 0},
channelingcolor = {0.32, 0.3, 1},
completecolor = {0.12, 0.86, 0.15},
failcolor = {1.0, 0.09, 0},
backgroundcolor = {0, 0, 0},
bordercolor = {0, 0, 0},
backgroundalpha = 1,
borderalpha = 1,
casttimeprecision = 1,
},
}
media:Register("statusbar", "BantoBar", "Interface\\Addons\\Quartz\\textures\\BantoBar")
media:Register("statusbar", "Frost", "Interface\\AddOns\\Quartz\\textures\\Frost")
media:Register("statusbar", "Healbot", "Interface\\AddOns\\Quartz\\textures\\Healbot")
media:Register("statusbar", "LiteStep", "Interface\\AddOns\\Quartz\\textures\\LiteStep")
media:Register("statusbar", "Rocks", "Interface\\AddOns\\Quartz\\textures\\Rocks")
media:Register("statusbar", "Runes", "Interface\\AddOns\\Quartz\\textures\\Runes")
media:Register("statusbar", "Xeon", "Interface\\AddOns\\Quartz\\textures\\Xeon")
media:Register("border", "Tooltip enlarged", "Interface\\AddOns\\Quartz\\textures\\Tooltip-BigBorder")
function Quartz3:OnInitialize()
self.db = LibStub("AceDB-3.0"):New("Quartz3DB", defaults, true)
db = self.db.profile
self:SetupOptions()
end
function Quartz3:OnEnable()
if QuartzDB then
QuartzDB = nil
LibStub("AceTimer-3.0").ScheduleTimer(self, function()
self:Print(L["Congratulations! You've just upgraded Quartz from the old Ace2-based version to the new Ace3 version!"])
self:Print(L["Sadly, this also means your configuration was lost. You'll have to reconfigure Quartz using the new options integrated into the Interface Options Panel, quickly accessible with /quartz"])
self:Print(L["Sorry for the inconvenience, and thanks for using Quartz!"])
end, 1)
end
self.db.RegisterCallback(self, "OnProfileChanged", "ApplySettings")
self.db.RegisterCallback(self, "OnProfileCopied", "ApplySettings")
self.db.RegisterCallback(self, "OnProfileReset", "ApplySettings")
media.RegisterCallback(self, "LibSharedMedia_Registered", "ApplySettings")
media.RegisterCallback(self, "LibSharedMedia_SetGlobal", "ApplySettings")
CONFIGMODE_CALLBACKS = CONFIGMODE_CALLBACKS or {}
CONFIGMODE_CALLBACKS["Quartz3"] = function(action)
if action == "ON" then
self:Unlock(false)
elseif action == "OFF" then
self:Lock()
end
end
self:ApplySettings()
end
function Quartz3:ApplySettings()
db = self.db.profile
for k,v in self:IterateModules() do
if self:GetModuleEnabled(k) and not v:IsEnabled() then
self:EnableModule(k)
elseif not self:GetModuleEnabled(k) and v:IsEnabled() then
self:DisableModule(k)
end
if type(v.ApplySettings) == "function" then
v:ApplySettings()
end
end
end
function Quartz3:ToggleLock(showUI)
local func = self.unlock and "Lock" or "Unlock"
self[func](self, showUI)
end
function Quartz3:Unlock(showUI)
self.unlock = true
for k,v in self:IterateModules() do
if v:IsEnabled() and type(v.Unlock) == "function" then
v:Unlock()
end
end
if showUI then
self:ShowUnlockDialog()
end
end
function Quartz3:Lock()
self.unlock = nil
for k,v in self:IterateModules() do
if v:IsEnabled() and type(v.Lock) == "function" then
v:Lock()
end
end
if self.unlock_dialog then self.unlock_dialog:Hide() end
end
function Quartz3:ShowUnlockDialog()
if not self.unlock_dialog then
local f = CreateFrame("Frame", "Quartz3UnlockDialog", UIParent)
f:SetFrameStrata("DIALOG")
f:SetToplevel(true)
f:EnableMouse(true)
f:SetClampedToScreen(true)
f:SetWidth(360)
f:SetHeight(110)
f:SetBackdrop{
bgFile="Interface\\DialogFrame\\UI-DialogBox-Background" ,
edgeFile="Interface\\DialogFrame\\UI-DialogBox-Border",
tile = true,
insets = {left = 11, right = 12, top = 12, bottom = 11},
tileSize = 32,
edgeSize = 32,
}
f:SetPoint("TOP", 0, -50)
f:Hide()
f:SetScript("OnShow", function() PlaySound("igMainMenuOption") end)
f:SetScript("OnHide", function() PlaySound("gsTitleOptionExit") end)
local tr = f:CreateTitleRegion()
tr:SetAllPoints(f)
local header = f:CreateTexture(nil, "ARTWORK")
header:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header")
header:SetWidth(256); header:SetHeight(64)
header:SetPoint("TOP", 0, 12)
local title = f:CreateFontString("ARTWORK")
title:SetFontObject("GameFontNormal")
title:SetPoint("TOP", header, "TOP", 0, -14)
title:SetText(L["Quartz3"])
local desc = f:CreateFontString("ARTWORK")
desc:SetFontObject("GameFontHighlight")
desc:SetJustifyV("TOP")
desc:SetJustifyH("LEFT")
desc:SetPoint("TOPLEFT", 18, -32)
desc:SetPoint("BOTTOMRIGHT", -18, 48)
desc:SetText(L["Bars unlocked. Move them now and click Lock when you are done."])
local lockBars = CreateFrame("CheckButton", "Quartz3UnlockDialogLock", f, "OptionsButtonTemplate")
getglobal(lockBars:GetName() .. "Text"):SetText(L["Lock"])
lockBars:SetScript("OnClick", function(self)
Quartz3:Lock()
LibStub("AceConfigRegistry-3.0"):NotifyChange("Quartz3")
end)
--position buttons
lockBars:SetPoint("BOTTOMRIGHT", -14, 14)
self.unlock_dialog = f
end
self.unlock_dialog:Show()
end
local copyExclude = {
x = true,
y = true,
}
function Quartz3:CopySettings(from, to)
for k,v in pairs(from) do
if to[k] and not copyExclude[k] and type(v) ~= "table" then
to[k] = v
end
end
end
function Quartz3:GetModuleEnabled(module)
return db.modules[module]
end
function Quartz3:SetModuleEnabled(module, value)
local old = db.modules[module]
db.modules[module] = value
if old ~= value then
if value then
self:EnableModule(module)
else
self:DisableModule(module)
end
end
end
function Quartz3:Merge(source, target)
if type(target) ~= "table" then target = {} end
for k,v in pairs(source) do
if type(v) == "table" then
target[k] = self:Merge(v, target[k])
elseif not target[k] then
target[k] = v
end
end
return target
end
Quartz3.Util = {}
function Quartz3.Util.TimeFormat(num, isCastTime)
if num <= 10 or (isCastTime and num <= 60) then
return ("%%.%df"):format(db.casttimeprecision), num
elseif num <= 60 then
return "%d", num
elseif num <= 3600 then
return "%d:%02d", num / 60, num % 60
else
return "%d:%02d", num / 3600, (num % 3600) / 60
end
end
do
local numerals = { -- 25"s enough for now, I think?
"I", "II", "III", "IV", "V",
"VI", "VII", "VIII", "IX", "X",
"XI", "XII", "XIII", "XIV", "XV",
"XVI", "XVII", "XVIII", "XIX", "XX",
"XXI", "XXII", "XXIII", "XXIV", "XXV",
}
function Quartz3.Util.ConvertRankToRomanNumeral(rank, style)
local mask, arg = nil, nil
local number = tonumber(rank:match(L["Rank (%d+)"]))
if number and number > 0 then
if style == "number" then
mask, arg = "%s %d", number
elseif style == "full" then
mask, arg = "%s (%s)", rank
elseif style == "roman" then
mask, arg = "%s %s", numerals[number]
else -- full roman
mask, arg = "%s (%s)", L["Rank %s"]:format(numerals[number])
end
end
return mask, arg
end
end