Change all use of heroclass to use RAID_CLASS_COLORS instead. This can be changed to CUSTOM_CLASS_COLORS later with a color picker for each class, but to support CoA classes need to go back to being colored properly.

Fix remaining lua errors covered by ascension patches

Add Addon Skins
Add Enhanced Friends List
This commit is contained in:
Andrew6810
2022-10-28 07:12:13 -07:00
parent 60ef8a38af
commit df7cc26a64
205 changed files with 18480 additions and 35 deletions
+627
View File
@@ -0,0 +1,627 @@
local E, L, V, P, G = unpack(ElvUI)
local EP = E.Libs.EP
local AS = E:NewModule("AddOnSkins")
local AddOnName = ...
local lower = string.lower
local GetAddOnInfo = GetAddOnInfo
local IsAddOnLoadOnDemand = IsAddOnLoadOnDemand
local addonList = {
"Omen",
"Recount",
"SexyCooldown",
"DBM",
"Skada",
"Auctionator",
"BugSack",
"CallToArms",
"Postal",
"QuestPointer",
"Clique",
"FloAspectBar",
"FloTotemBar",
"Spy",
"AtlasLoot",
"Atlas",
"FlightMap",
"WeakAuras",
"Overachiever",
"OpenGF",
"KHunterTimers",
"TellMeWhen",
"GearScore",
"AllStats",
"BlackList",
"GnomishVendorShrinker",
"ACP",
"EveryQuest",
"_NPCScan",
"MoveAnything",
"VanasKoS",
"BindPad",
"ZygorGuidesViewer",
"ZygorTalentAdvisor",
"WowLua",
"ChatBar",
"Skillet",
"TotemTimers",
"PlateBuffs",
"MageNuggets",
"InspectEquip",
"AdvancedTradeSkillWindow",
"AtlasQuest",
"AckisRecipeList",
"LightHeaded",
"Carbonite",
"Enchantrix",
"FishingBuddy",
"Talented",
"TinyPad",
"ZOMGBuffs",
"BuyEmAll",
"Doom_CooldownPulse",
"AdiBags",
"PallyPower",
"KarniCrap",
"TradeskillInfo",
"PAB",
"EPGP",
"EPGP_LootMaster",
"RaidRoll",
"RaidCooldowns",
"EventAlert",
"WIM",
"BigWigs",
"Outfitter",
"Poisoner",
"TrinketMenu",
"Stalker",
"ChocolateBar",
"EquipCompare",
"SuperDuperMacro",
"CLCRet",
"FeralbyNight",
"Factionizer",
"PowerAuras",
"Quartz",
"TipTac",
"Swatter",
"BeanCounter",
"Informant",
"SlideBar",
"AuctioneerSuite",
"Altoholic",
"LoseControl",
"SilverDragon",
"_NPCScanOverlay",
"Examiner",
"Mapster",
"ArkInventory",
"QuestGuru",
"QuestGuru_Tracker",
"SatrinaBuffFrame",
"LootCouncil_Lite",
"ElvinCDs",
"oRA3",
"RCLootCouncil",
"QDKP2_GUI",
"LootWonAlert",
}
local addonAlias = {
["DBM"] = "DBM-Core",
["Swatter"] = "!Swatter",
["AuctioneerSuite"] = "Auc-Advanced",
["_NPCScanOverlay"] = "_NPCScan.Overlay",
["ElvinCDs"] = "!ElvinCDs",
}
AS.addons = {}
do
local temp = {}
for alias, addonName in pairs(addonAlias) do
temp[lower(addonName)] = alias
end
for i = 1, GetNumAddOns() do
local name, _, _, enabled = GetAddOnInfo(i)
local state = (enabled and 1) or (IsAddOnLoadOnDemand(i) and 2)
if state then
AS.addons[lower(name)] = state
if temp[name] then
AS.addons[lower(temp[name])] = state
end
end
end
V.addOnSkins = {}
for _, addonName in ipairs(addonList) do
V.addOnSkins[addonName] = true
end
end
function AS:IsAddonEnabled(addon)
return self.addons[lower(addonAlias[addon] or addon)] == 1
end
function AS:IsAddonLOD(addon)
return self.addons[lower(addonAlias[addon] or addon)] == 2
end
function AS:IsAddonLODorEnabled(addon)
return self.addons[lower(addonAlias[addon] or addon)] ~= nil
end
function AS:RegisterAddonOption(addonName, options)
if not self:IsAddonLODorEnabled(addonName) then return end
options[addonName] = {
type = "toggle",
name = addonName,
desc = L["TOGGLESKIN_DESC"],
}
end
local function getOptions()
local positionValues = {
TOPLEFT = "TOPLEFT",
LEFT = "LEFT",
BOTTOMLEFT = "BOTTOMLEFT",
RIGHT = "RIGHT",
TOPRIGHT = "TOPRIGHT",
BOTTOMRIGHT = "BOTTOMRIGHT",
CENTER = "CENTER",
TOP = "TOP",
BOTTOM = "BOTTOM"
}
local backdropValues = {
["Default"] = L["Default"],
["Transparent"] = L["Transparent"],
["NoBackdrop"] = NONE
}
local options = {
order = 50,
type = "group",
childGroups = "tab",
name = string.format("|cff1784d1%s|r", L["AddOn Skins"]),
args = {
skins = {
order = 1,
type = "group",
childGroups = "tab",
name = L["Skins"],
get = function(info) return E.private.addOnSkins[info[#info]] end,
set = function(info, value)
E.private.addOnSkins[info[#info]] = value
E:StaticPopup_Show("PRIVATE_RL")
end,
args = {
header = {
order = 1,
type = "header",
name = L["Skins"]
}
}
},
misc = {
order = 2,
type = "group",
childGroups = "tab",
name = L["Misc Options"],
args = {
header = {
order = 1,
type = "header",
name = L["Misc Options"],
},
skadaGroup = {
order = 2,
type = "group",
name = "Skada",
get = function(info) return E.db.addOnSkins[info[#info]] end,
set = function(info, value)
E.db.addOnSkins[info[#info]] = value
Skada:ApplySettings()
end,
disabled = function() return not AS:IsAddonLODorEnabled("Skada") end,
args = {
skadaTemplate = {
order = 1,
type = "select",
name = L["Template"],
values = backdropValues
},
skadaTemplateGloss = {
order = 2,
type = "toggle",
name = L["Template Gloss"],
disabled = function() return E.db.addOnSkins.skadaTemplate ~= "Default" or not AS:IsAddonLODorEnabled("Skada") end
},
spacer = {
order = 3,
type = "description",
name = ""
},
skadaTitleTemplate = {
order = 4,
type = "select",
name = L["Title Template"],
values = backdropValues
},
skadaTitleTemplateGloss = {
order = 5,
type = "toggle",
name = L["Title Template Gloss"],
disabled = function() return E.db.addOnSkins.skadaTitleTemplate ~= "Default" or not AS:IsAddonLODorEnabled("Skada") end
}
}
},
recountGroup = {
order = 3,
type = "group",
name = "Recount",
get = function(info) return E.db.addOnSkins[info[#info]] end,
set = function(info, value)
local db = E.db.addOnSkins
db[info[#info]] = value
Recount.MainWindow.header:SetTemplate(db.recountTitleTemplate, db.recountTitleTemplate == "Default" and db.recountTitleTemplateGloss or false)
Recount.MainWindow.backdrop:SetTemplate(db.recountTemplate, db.recountTemplate == "Default" and db.recountTemplateGloss or false)
end,
disabled = function() return not AS:IsAddonLODorEnabled("Recount") end,
args = {
recountTemplate = {
order = 1,
type = "select",
name = L["Template"],
values = backdropValues
},
recountTemplateGloss = {
order = 2,
type = "toggle",
name = L["Template Gloss"],
disabled = function() return E.db.addOnSkins.recountTemplate ~= "Default" or not AS:IsAddonLODorEnabled("Recount") end
},
spacer = {
order = 3,
type = "description",
name = ""
},
recountTitleTemplate = {
order = 4,
type = "select",
name = L["Title Template"],
values = backdropValues
},
recountTitleTemplateGloss = {
order = 5,
type = "toggle",
name = L["Title Template Gloss"],
disabled = function() return E.db.addOnSkins.recountTitleTemplate ~= "Default" or not AS:IsAddonLODorEnabled("Recount") end
}
}
},
omenGroup = {
order = 4,
type = "group",
name = "Omen",
get = function(info) return E.db.addOnSkins[info[#info]] end,
set = function(info, value)
local db = E.db.addOnSkins
db[info[#info]] = value
Omen.Title:SetTemplate(db.omenTitleTemplate, db.omenTitleTemplate == "Default" and db.omenTitleTemplateGloss or false)
Omen.BarList:SetTemplate(db.omenTemplate, db.omenTemplate == "Default" and db.omenTemplateGloss or false)
end,
disabled = function() return not AS:IsAddonLODorEnabled("Omen") end,
args = {
omenTemplate = {
order = 1,
type = "select",
name = L["Template"],
values = backdropValues
},
omenTemplateGloss = {
order = 2,
type = "toggle",
name = L["Template Gloss"],
disabled = function() return E.db.addOnSkins.omenTemplate ~= "Default" or not AS:IsAddonLODorEnabled("Omen") end
},
spacer = {
order = 3,
type = "description",
name = ""
},
omenTitleTemplate = {
order = 4,
type = "select",
name = L["Title Template"],
values = backdropValues
},
omenTitleTemplateGloss = {
order = 5,
type = "toggle",
name = L["Title Template Gloss"],
disabled = function() return E.db.addOnSkins.omenTitleTemplate ~= "Default" or not AS:IsAddonLODorEnabled("Omen") end
}
}
},
dbmGroup = {
order = 5,
type = "group",
name = "DBM",
get = function(info) return E.db.addOnSkins[info[#info]] end,
set = function(info, value)
E.db.addOnSkins[info[#info]] = value
if DBM.ReleaseRevision >= 20220412000000 then -- 9.2.14
DBT:ApplyStyle()
else
DBM.Bars:ApplyStyle()
end
DBM.BossHealth:UpdateSettings()
end,
disabled = function() return not AS:IsAddonLODorEnabled("DBM-Core") end,
args = {
dbmBarHeight = {
order = 1,
type = "range",
min = 6, max = 60, step = 1,
name = "Bar Height",
hidden = function() return DBM.ReleaseRevision > 7000 end
},
dbmFont = {
order = 2,
type = "select",
dialogControl = "LSM30_Font",
name = L["Font"],
values = AceGUIWidgetLSMlists.font,
hidden = function() return DBM.ReleaseRevision > 7000 end
},
dbmFontSize = {
order = 3,
type = "range",
min = 6, max = 22, step = 1,
name = L["Font Size"],
hidden = function() return DBM.ReleaseRevision > 7000 end
},
dbmFontOutline = {
order = 4,
type = "select",
name = L["Font Outline"],
values = {
["NONE"] = L["None"],
["OUTLINE"] = "OUTLINE",
["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
["THICKOUTLINE"] = "THICKOUTLINE"
},
hidden = function() return DBM.ReleaseRevision > 7000 end
},
dbmIconSize = {
order = 5,
type = "range",
min = 0.1, max = 2, step = 0.1,
name = L["Icon Size"],
},
dbmTemplate = {
order = 6,
type = "select",
name = L["Template"],
values = backdropValues
},
DBMSkinHalf = {
order = 7,
type = "toggle",
name = L["DBM Half-bar Skin"]
}
}
},
waGroup = {
order = 6,
type = "group",
name = "WeakAuras",
get = function(info) return E.db.addOnSkins[info[#info]] end,
set = function(info, value)
E.db.addOnSkins[info[#info]] = value
E:StaticPopup_Show("PRIVATE_RL")
end,
disabled = function() return not AS:IsAddonLODorEnabled("WeakAuras") end,
hidden = WeakAuras and WeakAuras.IsCorrectVersion ~= nil or false,
args = {
weakAuraAuraBar = {
order = 1,
type = "toggle",
name = L["AuraBar Backdrop"]
},
weakAuraIconCooldown = {
order = 2,
type = "toggle",
name = L["Icon Cooldown"]
}
}
},
chatBarGroup = {
order = 7,
type = "group",
name = "ChatBar",
get = function(info) return E.db.addOnSkins[info[#info]] end,
set = function(info, value)
E.db.addOnSkins[info[#info]] = value
ChatBar_UpdateButtonOrientation()
ChatBar_UpdateButtons()
end,
disabled = function() return not AS:IsAddonLODorEnabled("ChatBar") end,
args = {
chatBarSize = {
order = 1,
type = "range",
min = 0, max = 60, step = 1,
name = "Button Size"
},
chatBarSpacing = {
order = 2,
type = "range",
min = 0, max = 60, step = 1,
name = "Button Spacing"
},
chatBarTextPoint = {
order = 3,
type = "select",
name = L["Text Position"],
values = positionValues
},
chatBarTextXOffset = {
order = 4,
type = "range",
min = -300, max = 300, step = 1,
name = L["Text xOffset"],
desc = L["Offset position for text."]
},
chatBarTextYOffset = {
order = 5,
type = "range",
min = -300, max = 300, step = 1,
name = L["Text yOffset"],
desc = L["Offset position for text."]
}
}
},
bwGroup = {
order = 8,
type = "group",
name = "BigWigs",
get = function(info) return E.db.addOnSkins[info[#info]] end,
set = function(info, value) E.db.addOnSkins[info[#info]] = value end,
disabled = function() return not AS:IsAddonLODorEnabled("BigWigs") end,
args = {
bigwigsBarHeight = {
order = 1,
type = "range",
min = 10, max = 40, step = 1,
name = "Bar Height"
},
bigwigsFontSize = {
order = 2,
type = "range",
min = 6, max = 22, step = 1,
name = L["Font Size"]
},
bigwigsFontOutline = {
order = 3,
type = "select",
name = L["Font Outline"],
values = {
["NONE"] = L["None"],
["OUTLINE"] = "OUTLINE",
["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
["THICKOUTLINE"] = "THICKOUTLINE"
}
}
}
}
}
},
embed = {
order = 3,
type = "group",
name = "Embed Settings",
get = function(info) return E.db.addOnSkins.embed[info[#info]] end,
set = function(info, value)
E.db.addOnSkins.embed[info[#info]] = value
E:GetModule("EmbedSystem"):EmbedUpdate()
end,
args = {
desc = {
order = 1,
type = "description",
name = "Settings to control Embedded AddOns: Available Embeds: Omen | Skada | Recount ",
},
embedType = {
order = 2,
type = "select",
name = L["Embed Type"],
values = {
["DISABLE"] = L["Disable"],
["SINGLE"] = L["Single"],
["DOUBLE"] = L["Double"]
},
},
leftWindow = {
order = 3,
type = "select",
name = L["Left Panel"],
values = {
["Recount"] = "Recount",
["Omen"] = "Omen",
["Skada"] = "Skada",
["Details"] = "Details"
},
disabled = function() return E.db.addOnSkins.embed.embedType == "DISABLE" end
},
rightWindow = {
order = 4,
type = "select",
name = L["Right Panel"],
values = {
["Recount"] = "Recount",
["Omen"] = "Omen",
["Skada"] = "Skada",
["Details"] = "Details"
},
disabled = function() return E.db.addOnSkins.embed.embedType ~= "DOUBLE" end
},
leftWindowWidth = {
order = 5,
type = "range",
min = 100, max = 300, step = 1,
name = L["Left Window Width"]
},
hideChat = {
order = 6,
type = "select",
name = "Hide Chat Frame",
values = E:GetModule("EmbedSystem"):GetChatWindowInfo(),
disabled = function() return E.db.addOnSkins.embed.embedType == "DISABLE" end
},
rightChatPanel = {
order = 7,
type = "toggle",
name = "Embed into Right Chat Panel"
},
belowTopTab = {
order = 8,
type = "toggle",
name = "Embed Below Top Tab"
}
}
}
}
}
local target = options.args.skins.args
for _, addonName in ipairs(addonList) do
AS:RegisterAddonOption(addonName, target)
end
if target.WeakAuras then
target.WeakAuras.hidden = WeakAuras and WeakAuras.IsCorrectVersion ~= nil or false
end
E.Options.args.addOnSkins = options
end
function AS:Initialize()
EP:RegisterPlugin(AddOnName, getOptions)
end
local function InitializeCallback()
AS:Initialize()
end
E:RegisterModule(AS:GetName(), InitializeCallback)