Initial commit: HideCoA addon
This commit is contained in:
+127
@@ -0,0 +1,127 @@
|
||||
HideCoA = {}
|
||||
|
||||
local f = CreateFrame("Frame")
|
||||
|
||||
HideCoA.CUSTOM_CLASSES = {
|
||||
"NECROMANCER",
|
||||
"PYROMANCER",
|
||||
"CULTIST",
|
||||
"STARCALLER",
|
||||
"SUNCLERIC",
|
||||
"TINKER",
|
||||
"SPIRITMAGE",
|
||||
"WILDWALKER",
|
||||
"REAPER",
|
||||
"PROPHET",
|
||||
"CHRONOMANCER",
|
||||
"SONOFARUGAL",
|
||||
"GUARDIAN",
|
||||
"STORMBRINGER",
|
||||
"DEMONHUNTER",
|
||||
"BARBARIAN",
|
||||
"WITCHDOCTOR",
|
||||
"WITCHHUNTER",
|
||||
"FLESHWARDEN",
|
||||
"MONK",
|
||||
"RANGER",
|
||||
}
|
||||
|
||||
HideCoA.FRAMES = {
|
||||
"CoAResourceSegmentBar",
|
||||
"CoAResourceOrb",
|
||||
"CoAResourceBar",
|
||||
}
|
||||
|
||||
local function ShouldHideForClass(playerClass, frameName)
|
||||
|
||||
local classSettings = HideCoADB.classSettings[playerClass]
|
||||
|
||||
if not classSettings or classSettings[frameName] == nil then
|
||||
return true
|
||||
end
|
||||
|
||||
return classSettings[frameName]
|
||||
|
||||
end
|
||||
|
||||
local hookedFrames = {}
|
||||
|
||||
local function ApplySetting()
|
||||
|
||||
local _, playerClass = UnitClass("player")
|
||||
|
||||
for _, frameName in ipairs(HideCoA.FRAMES) do
|
||||
|
||||
local frame = _G[frameName]
|
||||
|
||||
if frame then
|
||||
|
||||
if not hookedFrames[frameName] then
|
||||
|
||||
frame:HookScript("OnShow", function(self)
|
||||
local _, currentClass = UnitClass("player")
|
||||
if ShouldHideForClass(currentClass, frameName) then
|
||||
self:Hide()
|
||||
end
|
||||
end)
|
||||
|
||||
hookedFrames[frameName] = true
|
||||
|
||||
end
|
||||
|
||||
local hide = ShouldHideForClass(playerClass, frameName)
|
||||
|
||||
if hide then
|
||||
frame:Hide()
|
||||
else
|
||||
frame:Show()
|
||||
end
|
||||
|
||||
if frame.EnableMouse then
|
||||
frame:EnableMouse(not hide)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
HideCoA.ApplySetting = ApplySetting
|
||||
|
||||
f:RegisterEvent("ADDON_LOADED")
|
||||
f:RegisterEvent("PLAYER_LOGIN")
|
||||
|
||||
f:SetScript("OnEvent", function(self, event, arg1)
|
||||
|
||||
if event == "ADDON_LOADED" and arg1 == "HideCoA" then
|
||||
|
||||
if not HideCoADB then
|
||||
HideCoADB = {}
|
||||
end
|
||||
|
||||
if not HideCoADB.classSettings then
|
||||
HideCoADB.classSettings = {}
|
||||
end
|
||||
|
||||
for _, class in ipairs(HideCoA.CUSTOM_CLASSES) do
|
||||
|
||||
if type(HideCoADB.classSettings[class]) ~= "table" then
|
||||
HideCoADB.classSettings[class] = {}
|
||||
end
|
||||
|
||||
for _, frameName in ipairs(HideCoA.FRAMES) do
|
||||
if HideCoADB.classSettings[class][frameName] == nil then
|
||||
HideCoADB.classSettings[class][frameName] = true
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
elseif event == "PLAYER_LOGIN" then
|
||||
|
||||
ApplySetting()
|
||||
|
||||
end
|
||||
|
||||
end)
|
||||
Reference in New Issue
Block a user