diff --git a/ElvUI/Libraries/oUF/elements/combopoints.lua b/ElvUI/Libraries/oUF/elements/combopoints.lua
index e8d5e55..447bf38 100644
--- a/ElvUI/Libraries/oUF/elements/combopoints.lua
+++ b/ElvUI/Libraries/oUF/elements/combopoints.lua
@@ -75,7 +75,7 @@ local function Path(self, ...)
* event - the event triggering the update (string)
* ... - the arguments accompanying the event
--]]
- return (self.ComboPoints.Override or Update) (self, ...)
+ return (self.ComboPoints.Override or Update) (self, unpack(arg))
end
local function ForceUpdate(element)
diff --git a/ElvUI/Libraries/oUF/elements/elements.xml b/ElvUI/Libraries/oUF/elements/elements.xml
index 067089a..434f556 100644
--- a/ElvUI/Libraries/oUF/elements/elements.xml
+++ b/ElvUI/Libraries/oUF/elements/elements.xml
@@ -13,8 +13,7 @@
-
--->
\ No newline at end of file
diff --git a/ElvUI/Libraries/oUF/elements/happinessindicator.lua b/ElvUI/Libraries/oUF/elements/happinessindicator.lua
index 80e5f81..286571c 100644
--- a/ElvUI/Libraries/oUF/elements/happinessindicator.lua
+++ b/ElvUI/Libraries/oUF/elements/happinessindicator.lua
@@ -81,7 +81,7 @@ local function Path(self, ...)
* event - the event triggering the update (string)
* ... - the arguments accompanying the event
--]]
- return (self.HappinessIndicator.Override or Update) (self, ...)
+ return (self.HappinessIndicator.Override or Update) (self, unpack(arg))
end
local function ForceUpdate(element)
diff --git a/ElvUI/Media/Textures/resting.blp b/ElvUI/Media/Textures/resting.blp
new file mode 100644
index 0000000..12e9bb6
Binary files /dev/null and b/ElvUI/Media/Textures/resting.blp differ
diff --git a/ElvUI/Media/Textures/resting.tga b/ElvUI/Media/Textures/resting.tga
deleted file mode 100644
index 73d3add..0000000
Binary files a/ElvUI/Media/Textures/resting.tga and /dev/null differ
diff --git a/ElvUI/Modules/NamePlates/StyleFilter.lua b/ElvUI/Modules/NamePlates/StyleFilter.lua
index 49a985b..cdd8f41 100644
--- a/ElvUI/Modules/NamePlates/StyleFilter.lua
+++ b/ElvUI/Modules/NamePlates/StyleFilter.lua
@@ -1,4 +1,4 @@
-local E, L, V, P, G = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local mod = E:GetModule("NamePlates");
local LSM = LibStub("LibSharedMedia-3.0");
diff --git a/ElvUI/Modules/UnitFrames/Elements/AuraBars.lua b/ElvUI/Modules/UnitFrames/Elements/AuraBars.lua
index 8c1db99..201dfa4 100644
--- a/ElvUI/Modules/UnitFrames/Elements/AuraBars.lua
+++ b/ElvUI/Modules/UnitFrames/Elements/AuraBars.lua
@@ -1,4 +1,4 @@
-local E, L, V, P, G = unpack(ElvUI) --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local E, L, V, P, G = unpack(ElvUI) --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local UF = E:GetModule("UnitFrames")
--Cache global variables
diff --git a/ElvUI/Modules/UnitFrames/Elements/Castbar.lua b/ElvUI/Modules/UnitFrames/Elements/Castbar.lua
index 4499d9c..348b8e5 100644
--- a/ElvUI/Modules/UnitFrames/Elements/Castbar.lua
+++ b/ElvUI/Modules/UnitFrames/Elements/Castbar.lua
@@ -1,4 +1,4 @@
-local E, L, V, P, G = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local UF = E:GetModule("UnitFrames");
--Cache global variables
@@ -56,6 +56,11 @@ function UF:Construct_Castbar(frame, moverName)
castbar.Spark:SetBlendMode("ADD")
castbar.Spark:SetVertexColor(1, 1, 1)
+ --Set to castbar.SafeZone
+ castbar.LatencyTexture = castbar:CreateTexture(nil, "OVERLAY")
+ castbar.LatencyTexture:SetTexture(E.media.blankTex)
+ castbar.LatencyTexture:SetVertexColor(0.69, 0.31, 0.31, 0.75)
+
castbar.bg = castbar:CreateTexture(nil, "BORDER")
castbar.bg:Hide()
@@ -97,6 +102,15 @@ function UF:Configure_Castbar(frame)
castbar.Holder:GetScript("OnSizeChanged")(castbar.Holder)
end
+ --Latency
+ if db.castbar.latency then
+ castbar.SafeZone = castbar.LatencyTexture
+ castbar.LatencyTexture:Show()
+ else
+ castbar.SafeZone = nil
+ castbar.LatencyTexture:Hide()
+ end
+
--Icon
if db.castbar.icon then
castbar.Icon = castbar.ButtonIcon
diff --git a/ElvUI/Modules/UnitFrames/Elements/Classbars.lua b/ElvUI/Modules/UnitFrames/Elements/Classbars.lua
new file mode 100644
index 0000000..a9e3980
--- /dev/null
+++ b/ElvUI/Modules/UnitFrames/Elements/Classbars.lua
@@ -0,0 +1,269 @@
+local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local UF = E:GetModule("UnitFrames");
+
+local ns = oUF
+local ElvUF = ns.oUF
+assert(ElvUF, "ElvUI was unable to locate oUF.")
+
+--Cache global variables
+--Lua functions
+local select = select
+local floor = math.floor
+local find, format, sub, gsub = string.find, string.format, string.sub, string.gsub
+--WoW API / Variables
+local CreateFrame = CreateFrame
+
+function UF:Configure_ClassBar(frame)
+ if not frame.VARIABLES_SET then return end
+ local bars = frame[frame.ClassBar]
+ if not bars then return end
+
+ local db = frame.db
+ bars.Holder = frame.ClassBarHolder
+ bars.origParent = frame
+
+ --Fix height in case it is lower than the theme allows, or in case it's higher than 30px when not detached
+ if (not self.thinBorders and not E.PixelMode) and frame.CLASSBAR_HEIGHT > 0 and frame.CLASSBAR_HEIGHT < 7 then --A height of 7 means 6px for borders and just 1px for the actual power statusbar
+ frame.CLASSBAR_HEIGHT = 7
+ if db.classbar then db.classbar.height = 7 end
+ UF.ToggleResourceBar(bars) --Trigger update to health if needed
+ elseif (self.thinBorders or E.PixelMode) and frame.CLASSBAR_HEIGHT > 0 and frame.CLASSBAR_HEIGHT < 3 then --A height of 3 means 2px for borders and just 1px for the actual power statusbar
+ frame.CLASSBAR_HEIGHT = 3
+ if db.classbar then db.classbar.height = 3 end
+ UF.ToggleResourceBar(bars) --Trigger update to health if needed
+ elseif (not frame.CLASSBAR_DETACHED and frame.CLASSBAR_HEIGHT > 30) then
+ frame.CLASSBAR_HEIGHT = 10
+ if db.classbar then db.classbar.height = 10 end
+ --Override visibility if Classbar is DruidAltMana in order to fix a bug when Auto Hide is enabled, height is higher than 30 and it goes from detached to not detached
+ local overrideVisibility = frame.ClassBar == "DruidAltMana"
+ UF.ToggleResourceBar(bars, overrideVisibility) --Trigger update to health if needed
+ end
+
+ --We don't want to modify the original frame.CLASSBAR_WIDTH value, as it bugs out when the classbar gains more buttons
+ local CLASSBAR_WIDTH = frame.CLASSBAR_WIDTH
+
+ local color = E.db.unitframe.colors.borderColor
+ bars.backdrop:SetBackdropBorderColor(color.r, color.g, color.b)
+
+ if frame.USE_MINI_CLASSBAR and not frame.CLASSBAR_DETACHED then
+ bars:ClearAllPoints()
+ E:Point(bars, "CENTER", frame.Health.backdrop, "TOP", 0, 0)
+
+ if frame.ClassBar == "DruidAltMana" then
+ CLASSBAR_WIDTH = CLASSBAR_WIDTH * 2/3
+ else
+ CLASSBAR_WIDTH = CLASSBAR_WIDTH * (frame.MAX_CLASS_BAR - 1) / frame.MAX_CLASS_BAR
+ end
+
+ bars:SetParent(frame)
+ bars:SetFrameLevel(50) --RaisedElementParent uses 100, we want it lower than this
+
+ if bars.Holder and bars.Holder.mover then
+ bars.Holder.mover:SetScale(0.0001)
+ bars.Holder.mover:SetAlpha(0)
+ end
+ elseif not frame.CLASSBAR_DETACHED then
+ bars:ClearAllPoints()
+
+ if frame.ORIENTATION == "RIGHT" then
+ E:Point(bars, "BOTTOMRIGHT", frame.Health.backdrop, "TOPRIGHT", -frame.BORDER, frame.SPACING*3)
+ else
+ E:Point(bars, "BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", frame.BORDER, frame.SPACING*3)
+ end
+
+ bars:SetParent(frame)
+ bars:SetFrameLevel(frame:GetFrameLevel() + 5)
+
+ if bars.Holder and bars.Holder.mover then
+ bars.Holder.mover:SetScale(0.0001)
+ bars.Holder.mover:SetAlpha(0)
+ end
+ else --Detached
+ CLASSBAR_WIDTH = db.classbar.detachedWidth - ((frame.BORDER + frame.SPACING)*2)
+ bars.Holder:Size(db.classbar.detachedWidth, db.classbar.height)
+
+ if not bars.Holder.mover then
+ bars:Width(CLASSBAR_WIDTH)
+ bars:Height(frame.CLASSBAR_HEIGHT - ((frame.BORDER+frame.SPACING)*2))
+ bars:ClearAllPoints()
+ E:Point(bars, "BOTTOMLEFT", bars.Holder, "BOTTOMLEFT", frame.BORDER + frame.SPACING, frame.BORDER + frame.SPACING)
+ E:CreateMover(bars.Holder, "ClassBarMover", L["Classbar"], nil, nil, nil, "ALL,SOLO")
+ else
+ bars:ClearAllPoints()
+ E:Point(bars, "BOTTOMLEFT", bars.Holder, "BOTTOMLEFT", frame.BORDER + frame.SPACING, frame.BORDER + frame.SPACING)
+ bars.Holder.mover:SetScale(1)
+ bars.Holder.mover:SetAlpha(1)
+ end
+
+ if db.classbar.parent == "UIPARENT" then
+ bars:SetParent(E.UIParent)
+ else
+ bars:SetParent(frame)
+ end
+
+ if not db.classbar.strataAndLevel.useCustomStrata then
+ bars:SetFrameStrata("LOW")
+ else
+ bars:SetFrameStrata(db.classbar.strataAndLevel.frameStrata)
+ end
+
+ if not db.classbar.strataAndLevel.useCustomLevel then
+ bars:SetFrameLevel(frame:GetFrameLevel() + 5)
+ else
+ bars:SetFrameLevel(db.classbar.strataAndLevel.frameLevel)
+ end
+ end
+
+ bars:Width(CLASSBAR_WIDTH)
+ bars:Height(frame.CLASSBAR_HEIGHT - ((frame.BORDER + frame.SPACING)*2))
+
+ if frame.ClassBar == "DruidAltMana" then
+ if frame.CLASSBAR_DETACHED and db.classbar.verticalOrientation then
+ bars:SetOrientation("VERTICAL")
+ else
+ bars:SetOrientation("HORIZONTAL")
+ end
+ end
+
+ if frame.USE_CLASSBAR then
+ if frame.DruidAltMana and not frame:IsElementEnabled("DruidAltMana") then
+ frame:EnableElement("DruidAltMana")
+ end
+ else
+ if frame.DruidAltMana and frame:IsElementEnabled("DruidAltMana") then
+ frame:DisableElement("DruidAltMana")
+ end
+ end
+end
+
+local function ToggleResourceBar(bars, overrideVisibility)
+ local frame = bars.origParent or bars:GetParent()
+ local db = frame.db
+ if not db then return end
+
+ frame.CLASSBAR_SHOWN = bars:IsShown()
+
+ local height
+ if db.classbar then
+ height = db.classbar.height
+ elseif db.combobar then
+ height = db.combobar.height
+ end
+
+ if bars.text then
+ if frame.CLASSBAR_SHOWN then
+ bars.text:SetAlpha(1)
+ else
+ bars.text:SetAlpha(0)
+ end
+ end
+
+ frame.CLASSBAR_HEIGHT = (frame.USE_CLASSBAR and (frame.CLASSBAR_SHOWN and height) or 0)
+ frame.CLASSBAR_YOFFSET = (not frame.USE_CLASSBAR or not frame.CLASSBAR_SHOWN or frame.CLASSBAR_DETACHED) and 0 or (frame.USE_MINI_CLASSBAR and ((frame.SPACING+(frame.CLASSBAR_HEIGHT/2))) or (frame.CLASSBAR_HEIGHT - (frame.BORDER-frame.SPACING)))
+
+ if not frame.CLASSBAR_DETACHED then --Only update when necessary
+ UF:Configure_HealthBar(frame)
+ UF:Configure_Portrait(frame, true) --running :Hide on portrait makes the frame all funky
+ end
+end
+UF.ToggleResourceBar = ToggleResourceBar
+
+-------------------------------------------------------------
+-- DRUID
+-------------------------------------------------------------
+function UF:Construct_DruidAltMana(frame)
+ local druidAltMana = CreateFrame("StatusBar", "DruidAltMana", frame)
+ druidAltMana:SetFrameLevel(druidAltMana:GetFrameLevel() + 1)
+ druidAltMana.colorPower = true
+ druidAltMana.PostUpdate = UF.PostUpdateDruidAltMana
+ druidAltMana.PostUpdateVisibility = UF.PostVisibilityDruidAltMana
+ druidAltMana:CreateBackdrop("Default")
+ UF["statusbars"][druidAltMana] = true
+ druidAltMana:SetStatusBarTexture(E["media"].blankTex)
+
+ druidAltMana.bg = druidAltMana:CreateTexture(nil, "BORDER")
+ druidAltMana.bg:SetAllPoints(druidAltMana)
+ druidAltMana.bg:SetTexture(E["media"].blankTex)
+ druidAltMana.bg.multiplier = 0.3
+
+ druidAltMana.text = druidAltMana:CreateFontString(nil, "OVERLAY")
+ UF:Configure_FontString(druidAltMana.text)
+
+ druidAltMana:SetScript("OnShow", ToggleResourceBar)
+ druidAltMana:SetScript("OnHide", ToggleResourceBar)
+
+ return druidAltMana
+end
+
+function UF:PostUpdateDruidAltMana(_, min, max, event)
+ local frame = self.origParent or self:GetParent()
+ local db = frame.db
+
+ if frame.USE_CLASSBAR and ((min ~= max or (not db.classbar.autoHide)) and (event ~= "ElementDisable")) then
+ if db.classbar.additionalPowerText then
+ local powerValue = frame.Power.value
+ local powerValueText = powerValue:GetText()
+ local powerValueParent = powerValue:GetParent()
+ local powerTextPosition = db.power.position
+ local color = ElvUF["colors"].power[0]
+ color = E:RGBToHex(color[1], color[2], color[3])
+
+ --Attempt to remove |cFFXXXXXX color codes in order to determine if power text is really empty
+ if powerValueText then
+ local _, endIndex = find(powerValueText, "|cff")
+ if endIndex then
+ endIndex = endIndex + 7 --Add hex code
+ powerValueText = sub(powerValueText, endIndex)
+ powerValueText = gsub(powerValueText, "%s+", "")
+ end
+ end
+
+ self.text:ClearAllPoints()
+ if not frame.CLASSBAR_DETACHED then
+ self.text:SetParent(powerValueParent)
+ if (powerValueText and (powerValueText ~= "" and powerValueText ~= " ")) then
+ if find(powerTextPosition, "RIGHT") then
+ E:Point(self.text, "RIGHT", powerValue, "LEFT", 3, 0)
+ self.text:SetText(format(color.."%d%%|r |cffD7BEA5- |r", floor(min / max * 100)))
+ elseif find(powerTextPosition, "LEFT") then
+ E:Point(self.text, "LEFT", powerValue, "RIGHT", -3, 0)
+ self.text:SetText(format("|cffD7BEA5 -|r"..color.." %d%%|r", floor(min / max * 100)))
+ else
+ if select(4, powerValue:GetPoint()) <= 0 then
+ E:Point(self.text, "LEFT", powerValue, "RIGHT", -3, 0)
+ self.text:SetText(format(" |cffD7BEA5-|r"..color.." %d%%|r", floor(min / max * 100)))
+ else
+ E:Point(self.text, "RIGHT", powerValue, "LEFT", 3, 0)
+ self.text:SetText(format(color.."%d%%|r |cffD7BEA5- |r", floor(min / max * 100)))
+ end
+ end
+ else
+ E:Point(self.text, powerValue:GetPoint())
+ self.text:SetText(format(color.."%d%%|r", floor(min / max * 100)))
+ end
+ else
+ self.text:SetParent(self)
+ E:Point(self.text, "CENTER", self)
+ self.text:SetText(format(color.."%d%%|r", floor(min / max * 100)))
+ end
+ else --Text disabled
+ self.text:SetText()
+ end
+ self:Show()
+ else --Bar disabled
+ self.text:SetText()
+ self:Hide()
+ end
+end
+
+function UF:PostVisibilityDruidAltMana(enabled, stateChanged)
+ local frame = self.origParent or self:GetParent()
+
+ if stateChanged then
+ ToggleResourceBar(frame[frame.ClassBar])
+ UF:Configure_ClassBar(frame)
+ UF:Configure_HealthBar(frame)
+ UF:Configure_Power(frame)
+ UF:Configure_InfoPanel(frame, true) --2nd argument is to prevent it from setting template, which removes threat border
+ end
+end
\ No newline at end of file
diff --git a/ElvUI/Modules/UnitFrames/Elements/CombatIndicator.lua b/ElvUI/Modules/UnitFrames/Elements/CombatIndicator.lua
index e5ba971..2bc1601 100644
--- a/ElvUI/Modules/UnitFrames/Elements/CombatIndicator.lua
+++ b/ElvUI/Modules/UnitFrames/Elements/CombatIndicator.lua
@@ -1,11 +1,6 @@
local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local UF = E:GetModule("UnitFrames");
---Cache global variables
---Lua functions
-
---WoW API / Variables
-
function UF:Construct_CombatIndicator(frame)
local combat = frame.RaisedElementParent.TextureParent:CreateTexture(nil, "OVERLAY")
combat:SetWidth(19)
diff --git a/ElvUI/Modules/UnitFrames/Elements/ComboPoints.lua b/ElvUI/Modules/UnitFrames/Elements/ComboPoints.lua
new file mode 100644
index 0000000..045b2ee
--- /dev/null
+++ b/ElvUI/Modules/UnitFrames/Elements/ComboPoints.lua
@@ -0,0 +1,277 @@
+local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local UF = E:GetModule("UnitFrames");
+
+--WoW API / Variables
+local CreateFrame = CreateFrame
+local GetBonusBarOffset = GetBonusBarOffset
+local GetComboPoints = GetComboPoints
+local MAX_COMBO_POINTS = MAX_COMBO_POINTS
+
+local CombobarDetached
+function UF:CombobarDetachedUpdate()
+ if E.myclass ~= "DRUID" then return end
+
+ if ElvUF_Target.CLASSBAR_DETACHED and UF.db.units.target.combobar.parent == "UIPARENT" then
+ if not CombobarDetached then
+ CombobarDetached = CreateFrame("Frame", nil, UIParent)
+
+ CombobarDetached:RegisterEvent("PLAYER_ENTERING_WORLD")
+ CombobarDetached:RegisterEvent("UPDATE_SHAPESHIFT_FORM")
+
+ CombobarDetached:SetScript("OnEvent", function(self, event, unit)
+ print(self, event, unit)
+ if event == "PLAYER_ENTERING_WORLD" then
+ E:ShapeshiftDelayedUpdate(ElvUF_Target.ComboPoints.Override, ElvUF_Target)
+ end
+
+ ElvUF_Target.ComboPoints.Override(ElvUF_Target, event, unit)
+ end)
+ end
+
+ CombobarDetached:Show()
+ elseif CombobarDetached then
+ CombobarDetached:Hide()
+ end
+end
+
+function UF:Construct_Combobar(frame)
+ local ComboPoints = CreateFrame("Frame", nil, frame)
+ E:CreateBackdrop(ComboPoints, "Default", nil, nil, UF.thinBorders, true)
+ ComboPoints.Override = UF.UpdateComboDisplay
+
+ for i = 1, MAX_COMBO_POINTS do
+ ComboPoints[i] = CreateFrame("StatusBar", frame:GetName().."ComboBarButton"..i, ComboPoints)
+ UF["statusbars"][ComboPoints[i]] = true
+ ComboPoints[i]:SetStatusBarTexture(E.media.blankTex)
+ ComboPoints[i]:SetAlpha(0.15)
+ E:CreateBackdrop(ComboPoints[i], "Default", nil, nil, UF.thinBorders, true)
+ ComboPoints[i].backdrop:SetParent(ComboPoints)
+ end
+
+ if E.myclass == "DRUID" then
+ frame:RegisterEvent("UPDATE_SHAPESHIFT_FORM", UF.UpdateComboDisplay)
+
+ frame:RegisterEvent("PLAYER_ENTERING_WORLD", function()
+ E:ShapeshiftDelayedUpdate(ElvUF_Target.ComboPoints.Override, ElvUF_Target)
+ end)
+
+ self:CombobarDetachedUpdate()
+ end
+
+ ComboPoints:SetScript("OnShow", UF.ToggleResourceBar)
+ ComboPoints:SetScript("OnHide", UF.ToggleResourceBar)
+
+ return ComboPoints
+end
+
+function UF:Configure_ComboPoints(frame)
+ if not frame.VARIABLES_SET then return end
+ local ComboPoints = frame.ComboPoints
+ if not ComboPoints then return end
+
+ local db = frame.db
+ ComboPoints.Holder = frame.ComboPointsHolder
+ ComboPoints.origParent = frame
+
+ if (not self.thinBorders and not E.PixelMode) and frame.CLASSBAR_HEIGHT > 0 and frame.CLASSBAR_HEIGHT < 7 then --A height of 7 means 6px for borders and just 1px for the actual power statusbar
+ frame.CLASSBAR_HEIGHT = 7
+ if db.combobar then db.combobar.height = 7 end
+ UF.ToggleResourceBar(ComboPoints) --Trigger update to health if needed
+ elseif (self.thinBorders or E.PixelMode) and frame.CLASSBAR_HEIGHT > 0 and frame.CLASSBAR_HEIGHT < 3 then --A height of 3 means 2px for borders and just 1px for the actual power statusbar
+ frame.CLASSBAR_HEIGHT = 3
+ if db.combobar then db.combobar.height = 3 end
+ UF.ToggleResourceBar(ComboPoints) --Trigger update to health if needed
+ elseif (not frame.CLASSBAR_DETACHED and frame.CLASSBAR_HEIGHT > 30) then
+ frame.CLASSBAR_HEIGHT = 10
+ if db.combobar then db.combobar.height = 10 end
+ UF.ToggleResourceBar(ComboPoints) --Trigger update to health if needed
+ end
+
+ local CLASSBAR_WIDTH = frame.CLASSBAR_WIDTH
+
+ local color = E.db.unitframe.colors.borderColor
+ ComboPoints.backdrop:SetBackdropBorderColor(color.r, color.g, color.b)
+
+ color = self.db.colors.classResources.bgColor
+ ComboPoints.backdrop:SetBackdropColor(color.r, color.g, color.b)
+
+ if frame.USE_MINI_CLASSBAR and not frame.CLASSBAR_DETACHED then
+ ComboPoints:ClearAllPoints()
+ E:Point(ComboPoints, "CENTER", frame.Health.backdrop, "TOP", 0, 0)
+ CLASSBAR_WIDTH = CLASSBAR_WIDTH * (frame.MAX_CLASS_BAR - 1) / frame.MAX_CLASS_BAR
+
+ ComboPoints:SetParent(frame)
+ ComboPoints:SetFrameLevel(50) --RaisedElementParent uses 100, we want it lower than this
+
+ if ComboPoints.Holder and ComboPoints.Holder.mover then
+ ComboPoints.Holder.mover:SetScale(0.0001)
+ ComboPoints.Holder.mover:SetAlpha(0)
+ end
+ elseif not frame.CLASSBAR_DETACHED then
+ ComboPoints:ClearAllPoints()
+ if frame.ORIENTATION == "RIGHT" then
+ E:Point(ComboPoints, "BOTTOMRIGHT", frame.Health.backdrop, "TOPRIGHT", -frame.BORDER, frame.SPACING*3)
+ else
+ E:Point(ComboPoints, "BOTTOMLEFT", frame.Health.backdrop, "TOPLEFT", frame.BORDER, frame.SPACING*3)
+ end
+
+ ComboPoints:SetParent(frame)
+ ComboPoints:SetFrameLevel(frame:GetFrameLevel() + 5)
+
+ if ComboPoints.Holder and ComboPoints.Holder.mover then
+ ComboPoints.Holder.mover:SetScale(0.0001)
+ ComboPoints.Holder.mover:SetAlpha(0)
+ end
+ else --Detached
+ CLASSBAR_WIDTH = db.combobar.detachedWidth - ((frame.BORDER + frame.SPACING)*2)
+ E:Size(ComboPoints.Holder, db.combobar.detachedWidth, db.combobar.height)
+
+ if not ComboPoints.Holder.mover then
+ E:Width(ComboPoints, CLASSBAR_WIDTH)
+ E:Height(ComboPoints, frame.CLASSBAR_HEIGHT - ((frame.BORDER + frame.SPACING)*2))
+ ComboPoints:ClearAllPoints()
+ E:Point(ComboPoints, "BOTTOMLEFT", ComboPoints.Holder, "BOTTOMLEFT", frame.BORDER + frame.SPACING, frame.BORDER + frame.SPACING)
+ E:CreateMover(ComboPoints.Holder, "ComboBarMover", L["Combobar"], nil, nil, nil, "ALL,SOLO")
+ else
+ ComboPoints:ClearAllPoints()
+ E:Point(ComboPoints, "BOTTOMLEFT", ComboPoints.Holder, "BOTTOMLEFT", frame.BORDER + frame.SPACING, frame.BORDER + frame.SPACING)
+ ComboPoints.Holder.mover:SetScale(1)
+ ComboPoints.Holder.mover:SetAlpha(1)
+ end
+
+ if db.combobar.parent == "UIPARENT" then
+ ComboPoints:SetParent(E.UIParent)
+ else
+ ComboPoints:SetParent(frame)
+ end
+
+ if not db.combobar.strataAndLevel.useCustomStrata then
+ ComboPoints:SetFrameStrata("LOW")
+ else
+ ComboPoints:SetFrameStrata(db.combobar.strataAndLevel.frameStrata)
+ end
+
+ if not db.combobar.strataAndLevel.useCustomLevel then
+ ComboPoints:SetFrameLevel(frame:GetFrameLevel() + 5)
+ else
+ ComboPoints:SetFrameLevel(db.combobar.strataAndLevel.frameLevel)
+ end
+ end
+
+ E:Width(ComboPoints, CLASSBAR_WIDTH)
+ E:Height(ComboPoints, frame.CLASSBAR_HEIGHT - ((frame.BORDER + frame.SPACING)*2))
+
+ for i = 1, frame.MAX_CLASS_BAR do
+ ComboPoints[i]:SetStatusBarColor(unpack(ElvUF.colors.ComboPoints[i]))
+
+ color = E.db.unitframe.colors.borderColor
+ ComboPoints[i].backdrop:SetBackdropBorderColor(color.r, color.g, color.b)
+
+ color = self.db.colors.classResources.bgColor
+ ComboPoints[i].backdrop:SetBackdropColor(color.r, color.g, color.b)
+
+ E:Height(ComboPoints[i], ComboPoints:GetHeight())
+ ComboPoints[i]:Hide()
+ ComboPoints[i].backdrop:Hide()
+
+ if frame.USE_MINI_CLASSBAR then
+ if frame.CLASSBAR_DETACHED and db.combobar.orientation == "VERTICAL" then
+ ComboPoints[i]:SetWidth(CLASSBAR_WIDTH)
+ ComboPoints.Holder:SetHeight(((frame.CLASSBAR_HEIGHT + db.combobar.spacing)* frame.MAX_CLASS_BAR) - db.combobar.spacing) -- fix the holder height
+ elseif frame.CLASSBAR_DETACHED and db.combobar.orientation == "HORIZONTAL" then
+ ComboPoints[i]:SetWidth((CLASSBAR_WIDTH - ((db.combobar.spacing + (frame.BORDER*2 + frame.SPACING*2))*(frame.MAX_CLASS_BAR - 1)))/frame.MAX_CLASS_BAR)
+ ComboPoints.Holder:SetHeight(frame.CLASSBAR_HEIGHT)
+ else
+ ComboPoints[i]:SetWidth((CLASSBAR_WIDTH - ((5 + (frame.BORDER*2 + frame.SPACING*2))*(frame.MAX_CLASS_BAR - 1)))/frame.MAX_CLASS_BAR) --Width accounts for 5px spacing between each button, excluding borders
+ ComboPoints.Holder:SetHeight(frame.CLASSBAR_HEIGHT) -- set the holder height to default
+ end
+ elseif i ~= MAX_COMBO_POINTS then
+ E:Width(ComboPoints[i], (CLASSBAR_WIDTH - ((frame.MAX_CLASS_BAR - 1)*(frame.BORDER-frame.SPACING))) / frame.MAX_CLASS_BAR) --combobar width minus total width of dividers between each button, divided by number of buttons
+ end
+
+ ComboPoints[i]:ClearAllPoints()
+
+ if i == 1 then
+ E:Point(ComboPoints[i], "LEFT", ComboPoints)
+ else
+ if frame.USE_MINI_CLASSBAR then
+ if frame.CLASSBAR_DETACHED and db.combobar.orientation == "VERTICAL" then
+ E:Point(ComboPoints[i], "BOTTOM", ComboPoints[i - 1], "TOP", 0, (db.combobar.spacing + frame.BORDER*2 + frame.SPACING*2))
+ elseif frame.CLASSBAR_DETACHED and db.combobar.orientation == "HORIZONTAL" then
+ E:Point(ComboPoints[i], "LEFT", ComboPoints[i - 1], "RIGHT", (db.combobar.spacing + frame.BORDER*2 + frame.SPACING*2), 0) --5px spacing between borders of each button(replaced with Detached Spacing option)
+ else
+ E:Point(ComboPoints[i], "LEFT", ComboPoints[i - 1], "RIGHT", (5 + frame.BORDER*2 + frame.SPACING*2), 0) --5px spacing between borders of each button
+ end
+ elseif i == frame.MAX_CLASS_BAR then
+ E:Point(ComboPoints[i], "LEFT", ComboPoints[i - 1], "RIGHT", frame.BORDER-frame.SPACING, 0)
+ E:Point(ComboPoints[i], "RIGHT", ComboPoints)
+ else
+ E:Point(ComboPoints[i], "LEFT", ComboPoints[i - 1], "RIGHT", frame.BORDER-frame.SPACING, 0)
+ end
+ end
+
+ if not frame.USE_MINI_CLASSBAR then
+ ComboPoints[i].backdrop:Hide()
+ else
+ ComboPoints[i].backdrop:Show()
+ end
+
+ ComboPoints[i]:Show()
+ end
+
+ if not frame.USE_MINI_CLASSBAR then
+ ComboPoints.backdrop:Show()
+ else
+ ComboPoints.backdrop:Hide()
+ end
+
+ self:CombobarDetachedUpdate()
+
+ if frame.USE_CLASSBAR and not frame:IsElementEnabled("ComboPoints") then
+ frame:EnableElement("ComboPoints")
+ ComboPoints:Show()
+ elseif not frame.USE_CLASSBAR and frame:IsElementEnabled("ComboPoints") then
+ frame:DisableElement("ComboPoints")
+ ComboPoints:Hide()
+ end
+
+ if not frame:IsShown() then
+ ComboPoints:ForceUpdate()
+ end
+end
+
+function UF:UpdateComboDisplay(event, unit)
+ if unit == "pet" then return end
+
+ local db = self.db
+ if not db then return end
+
+ local element = self.ComboPoints
+
+ if db.combobar.enable then
+ if E.myclass ~= "ROGUE" and (E.myclass ~= "DRUID" or (E.myclass == "DRUID" and GetBonusBarOffset() ~= 1)) then
+ element:Hide()
+ UF.ToggleResourceBar(element)
+ else
+ local cp = GetComboPoints("player", "target")
+
+ if cp == 0 and db.combobar.autoHide then
+ element:Hide()
+ UF.ToggleResourceBar(element)
+ else
+ element:Show()
+ for i = 1, MAX_COMBO_POINTS do
+ if i <= cp then
+ element[i]:SetAlpha(1)
+ else
+ element[i]:SetAlpha(0.2)
+ end
+ end
+ UF.ToggleResourceBar(element)
+ end
+ end
+ else
+ element:Hide()
+ UF.ToggleResourceBar(element)
+ end
+end
\ No newline at end of file
diff --git a/ElvUI/Modules/UnitFrames/Elements/CustomText.lua b/ElvUI/Modules/UnitFrames/Elements/CustomText.lua
new file mode 100644
index 0000000..ca2a3e3
--- /dev/null
+++ b/ElvUI/Modules/UnitFrames/Elements/CustomText.lua
@@ -0,0 +1,52 @@
+local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local UF = E:GetModule("UnitFrames");
+
+--Cache global variables
+--Lua functions
+local pairs = pairs
+
+function UF:Configure_CustomTexts(frame)
+ local db = frame.db
+
+ --Make sure CustomTexts are hidden if they don't exist in current profile
+ for objectName, object in pairs(frame.customTexts) do
+ if (not db.customTexts) or (db.customTexts and not db.customTexts[objectName]) then
+ object:Hide()
+ frame.customTexts[objectName] = nil
+ end
+ end
+
+ if db.customTexts then
+ local customFont = UF.LSM:Fetch("font", UF.db.font)
+ for objectName in pairs(db.customTexts) do
+ if not frame.customTexts[objectName] then
+ frame.customTexts[objectName] = frame.RaisedElementParent:CreateFontString(nil, "OVERLAY")
+ end
+
+ local objectDB = db.customTexts[objectName]
+
+ if objectDB.font then
+ customFont = UF.LSM:Fetch("font", objectDB.font)
+ end
+
+ local attachPoint = self:GetObjectAnchorPoint(frame, objectDB.attachTextTo)
+ E:FontTemplate(frame.customTexts[objectName], customFont, objectDB.size or UF.db.fontSize, objectDB.fontOutline or UF.db.fontOutline)
+ frame.customTexts[objectName]:SetJustifyH(objectDB.justifyH or "CENTER")
+ frame.customTexts[objectName]:ClearAllPoints()
+ E:Point(frame.customTexts[objectName], objectDB.justifyH or "CENTER", attachPoint, objectDB.justifyH or "CENTER", objectDB.xOffset, objectDB.yOffset)
+
+ --This takes care of custom texts that were added before the enable option was added.
+ if objectDB.enable == nil then
+ objectDB.enable = true
+ end
+
+ if objectDB.enable then
+ frame:Tag(frame.customTexts[objectName], objectDB.text_format or "")
+ frame.customTexts[objectName]:Show()
+ else
+ frame:Untag(frame.customTexts[objectName])
+ frame.customTexts[objectName]:Hide()
+ end
+ end
+ end
+end
\ No newline at end of file
diff --git a/ElvUI/Modules/UnitFrames/Elements/DebuffHighlight.lua b/ElvUI/Modules/UnitFrames/Elements/DebuffHighlight.lua
new file mode 100644
index 0000000..c9cec69
--- /dev/null
+++ b/ElvUI/Modules/UnitFrames/Elements/DebuffHighlight.lua
@@ -0,0 +1,59 @@
+local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local UF = E:GetModule("UnitFrames");
+
+function UF:Construct_DebuffHighlight(frame)
+ local dbh = frame:CreateTexture(nil, "OVERLAY")
+ E:SetInside(dbh, frame.Health.backdrop)
+ dbh:SetTexture(E.media.blankTex)
+ dbh:SetVertexColor(0, 0, 0, 0)
+ dbh:SetBlendMode("ADD")
+ frame.DebuffHighlightFilter = true
+ frame.DebuffHighlightAlpha = 0.45
+ frame.DebuffHighlightFilterTable = E.global.unitframe.DebuffHighlightColors
+
+ E:CreateShadow(frame, "Default")
+ local x = frame.shadow
+ frame.shadow = nil
+ x:Hide()
+
+ frame.DBHGlow = x
+
+ if frame.Health then
+ dbh:SetParent(frame.Health)
+ frame.DBHGlow:SetParent(frame.Health)
+ end
+
+ dbh.PostUpdate = UF.PostUpdate_DebuffHighlight
+
+ return dbh
+end
+
+function UF:Configure_DebuffHighlight(frame)
+ if E.db.unitframe.debuffHighlighting ~= "NONE" then
+ frame:EnableElement("DebuffHighlight")
+ frame.DebuffHighlightFilterTable = E.global.unitframe.DebuffHighlightColors
+ if E.db.unitframe.debuffHighlighting == "GLOW" then
+ frame.DebuffHighlightBackdrop = true
+ if frame.ThreatIndicator then
+ frame.DBHGlow:SetAllPoints(frame.ThreatIndicator.glow)
+ elseif frame.TargetGlow then
+ frame.DBHGlow:SetAllPoints(frame.TargetGlow)
+ end
+ else
+ frame.DebuffHighlightBackdrop = false
+ end
+ else
+ frame:DisableElement("DebuffHighlight")
+ end
+end
+
+function UF:PostUpdate_DebuffHighlight(object, debuffType, texture, wasFiltered, style, color)
+ if debuffType and not wasFiltered then
+ color = UF.db.colors.debuffHighlight[debuffType]
+ if object.DebuffHighlightBackdrop and object.DBHGlow then
+ object.DBHGlow:SetBackdropBorderColor(color.r, color.g, color.b, color.a)
+ else
+ object.DebuffHighlight:SetVertexColor(color.r, color.g, color.b, color.a)
+ end
+ end
+end
\ No newline at end of file
diff --git a/ElvUI/Modules/UnitFrames/Elements/FrameGlow.lua b/ElvUI/Modules/UnitFrames/Elements/FrameGlow.lua
index e531585..f8e05e2 100644
--- a/ElvUI/Modules/UnitFrames/Elements/FrameGlow.lua
+++ b/ElvUI/Modules/UnitFrames/Elements/FrameGlow.lua
@@ -1,12 +1,18 @@
local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local UF = E:GetModule("UnitFrames");
+local ns = oUF
+local ElvUF = ns.oUF
+assert(ElvUF, "ElvUI was unable to locate oUF.")
+
+--Cache global variables
+--Lua functions
local _G = _G
local pairs = pairs
local select = select
local assert = assert
local tinsert = table.insert
-
+--WoW API / Variables
local CreateFrame = CreateFrame
local UnitIsUnit = UnitIsUnit
local UnitReaction = UnitReaction
@@ -67,7 +73,7 @@ function UF:FrameGlow_ClassGlowPosition(frame, powerName, glow, offset, fromScri
UF:FrameGlow_HookPowerBar(frame, power, powerName, glow, offset)
end
- local portrait = (frame.USE_PORTRAIT and not frame.PORTRAIT_WIDTH == 0) and (frame.Portrait and frame.Portrait.backdrop)
+ local portrait = (frame.USE_PORTRAIT and not frame.USE_PORTRAIT_OVERLAY) and (frame.Portrait and frame.Portrait.backdrop)
if powerName == "HappinessIndicator" and (power and power.backdrop and power:IsVisible()) then
if frame.ORIENTATION == "RIGHT" then
@@ -79,21 +85,11 @@ function UF:FrameGlow_ClassGlowPosition(frame, powerName, glow, offset, fromScri
end
else
if (power and power.backdrop and power:IsVisible()) and (not (frame.CLASSBAR_DETACHED or frame.USE_MINI_CLASSBAR)) then
- if frame.ORIENTATION == "RIGHT" then
- glow:SetPoint("TOPLEFT", power.backdrop, -offset, offset)
- glow:SetPoint("TOPRIGHT", portrait or power.backdrop, offset, offset)
- else
- glow:SetPoint("TOPLEFT", portrait or power.backdrop, -offset, offset)
- glow:SetPoint("TOPRIGHT", power.backdrop, offset, offset)
- end
+ glow:SetPoint("TOPLEFT", (frame.ORIENTATION == "LEFT" and portrait) or power.backdrop, -offset, offset)
+ glow:SetPoint("TOPRIGHT", (frame.ORIENTATION == "RIGHT" and portrait) or power.backdrop, offset, offset)
elseif frame.Health and frame.Health.backdrop then
- if frame.ORIENTATION == "RIGHT" then
- glow:SetPoint("TOPLEFT", frame.Health.backdrop, -offset, offset)
- glow:SetPoint("TOPRIGHT", portrait or frame.Health.backdrop, offset, offset)
- else
- glow:SetPoint("TOPLEFT", portrait or frame.Health.backdrop, -offset, offset)
- glow:SetPoint("TOPRIGHT", frame.Health.backdrop, offset, offset)
- end
+ glow:SetPoint("TOPLEFT", (frame.ORIENTATION == "LEFT" and portrait) or frame.Health.backdrop, -offset, offset)
+ glow:SetPoint("TOPRIGHT", (frame.ORIENTATION == "RIGHT" and portrait) or frame.Health.backdrop, offset, offset)
end
end
end
@@ -101,23 +97,18 @@ end
function UF:FrameGlow_PositionGlow(frame, mainGlow, powerGlow)
if not (frame and frame.VARIABLES_SET) then return end
- local additionalPower = frame.AdditionalPower
- local runes = frame.Runes
+ local infoPanel = frame.InfoPanel
+ local druidMana = frame.DruidAltMana
local comboPoints = frame.ComboPoints
local happiness = frame.HappinessIndicator
local power = frame.Power and frame.Power.backdrop
local health = frame.Health and frame.Health.backdrop
- local portrait = (frame.USE_PORTRAIT and not frame.PORTRAIT_WIDTH ~= 0) and (frame.Portrait and frame.Portrait.backdrop)
+ local portrait = (frame.USE_PORTRAIT and not frame.USE_PORTRAIT_OVERLAY) and (frame.Portrait and frame.Portrait.backdrop)
local offset = (E.PixelMode and E.mult*3) or E.mult*4 -- edgeSize is 3
mainGlow:ClearAllPoints()
- if frame.ORIENTATION == "RIGHT" then
- mainGlow:SetPoint("TOPLEFT", health, -offset, offset)
- mainGlow:SetPoint("TOPRIGHT", portrait or health, offset, offset)
- else
- mainGlow:SetPoint("TOPLEFT", portrait or health, -offset, offset)
- mainGlow:SetPoint("TOPRIGHT", health, offset, offset)
- end
+ mainGlow:SetPoint("TOPLEFT", (frame.ORIENTATION == "LEFT" and portrait) or health, -offset, offset)
+ mainGlow:SetPoint("TOPRIGHT", (frame.ORIENTATION == "RIGHT" and portrait) or health, offset, offset)
if frame.USE_POWERBAR_OFFSET or frame.USE_MINI_POWERBAR then
mainGlow:SetPoint("BOTTOMLEFT", health, -offset, -offset)
@@ -136,10 +127,8 @@ function UF:FrameGlow_PositionGlow(frame, mainGlow, powerGlow)
powerGlow:SetPoint("BOTTOMRIGHT", power, offset, -offset)
end
- if additionalPower then
- UF:FrameGlow_ClassGlowPosition(frame, "AdditionalPower", mainGlow, offset)
- elseif runes then
- UF:FrameGlow_ClassGlowPosition(frame, "Runes", mainGlow, offset)
+ if druidMana then
+ UF:FrameGlow_ClassGlowPosition(frame, "DruidAltMana", mainGlow, offset)
elseif comboPoints then
UF:FrameGlow_ClassGlowPosition(frame, "ComboPoints", mainGlow, offset)
elseif happiness then
@@ -174,15 +163,7 @@ function UF:FrameGlow_CreateGlow(frame, mouse)
if not frame.Highlight then
frame.Highlight = CreateFrame("Frame", nil, frame)
frame.Highlight:Hide()
- HookScript(frame, "OnEnter", function()
- frame.isHighlight = true
- UF:FrameGlow_CheckMouseover(frame)
- end)
- HookScript(frame, "OnLeave", function()
- frame.isHighlight = false
- UF:FrameGlow_CheckMouseover(frame)
- end)
-
+
HookScript(frame.Highlight, "OnEvent", function()
if event == "UPDATE_MOUSEOVER_UNIT" then
UF:FrameGlow_CheckMouseover(frame)
@@ -190,6 +171,23 @@ function UF:FrameGlow_CreateGlow(frame, mouse)
UF:FrameGlow_CheckTarget(frame)
end
end)
+
+ HookScript(frame, "OnEnter", function()
+ frame.isHighlight = true
+ for _, frame in ipairs(ElvUF.objects) do
+ if frame.unit then
+ UF:FrameGlow_CheckMouseover(frame)
+ end
+ end
+ end)
+ HookScript(frame, "OnLeave", function()
+ frame.isHighlight = false
+ for _, frame in ipairs(ElvUF.objects) do
+ if frame.unit then
+ UF:FrameGlow_CheckMouseover(frame)
+ end
+ end
+ end)
end
mainGlow.powerGlow = powerGlow
@@ -337,7 +335,6 @@ function UF:FrameGlow_CheckMouseover(frame, onEnter)
frame.Highlight.texture:Hide()
end
end
-
if (shouldShow == "both" or shouldShow == "texture") and frame.Highlight.texture and not frame.Highlight.texture:IsShown() then
frame.Highlight.texture:Show()
end
@@ -371,7 +368,6 @@ function UF:Construct_HighlightGlow(frame, glow)
end
end)
- frame.Highlight:Show()
frame.Highlight:SetScript("OnUpdate", function()
if this.elapsed and this.elapsed > 0.1 then
if not UF:FrameGlow_MouseOnUnit(frame) then
@@ -429,11 +425,6 @@ function UF:FrameGlow_UpdateFrames()
UF:FrameGlow_ConfigureGlow(self[unit], unit, dbTexture)
end
- -- arena{1-5}, boss{1-5}
- for unit in pairs(self.groupunits) do
- UF:FrameGlow_ConfigureGlow(self[unit], unit, dbTexture)
- end
-
-- assist, tank, party, raid, raid40, raidpet
for groupName in pairs(self.headers) do
assert(self[groupName], "UF FrameGlow: Invalid group specified.")
@@ -457,4 +448,4 @@ function UF:FrameGlow_UpdateFrames()
end
end
end
-end
\ No newline at end of file
+end
diff --git a/ElvUI/Modules/UnitFrames/Elements/GPS.lua b/ElvUI/Modules/UnitFrames/Elements/GPS.lua
index 9d4cee9..e74169c 100644
--- a/ElvUI/Modules/UnitFrames/Elements/GPS.lua
+++ b/ElvUI/Modules/UnitFrames/Elements/GPS.lua
@@ -1,9 +1,6 @@
local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local UF = E:GetModule("UnitFrames");
---Cache global variables
---Lua functions
-
--WoW API / Variables
local CreateFrame = CreateFrame
diff --git a/ElvUI/Modules/UnitFrames/Elements/Happiness.lua b/ElvUI/Modules/UnitFrames/Elements/Happiness.lua
new file mode 100644
index 0000000..9d75428
--- /dev/null
+++ b/ElvUI/Modules/UnitFrames/Elements/Happiness.lua
@@ -0,0 +1,128 @@
+local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local UF = E:GetModule("UnitFrames");
+
+--Cache global variables
+--Lua functions
+local CreateFrame = CreateFrame
+
+function UF:Construct_Happiness(frame)
+ local HappinessIndicator = CreateFrame("Statusbar", nil, frame)
+
+ HappinessIndicator.backdrop = CreateFrame("Frame", nil, HappinessIndicator)
+ UF["statusbars"][HappinessIndicator] = true
+ E:SetTemplate(HappinessIndicator.backdrop, "Default", nil, nil, self.thinBorders, true)
+ HappinessIndicator.backdrop:SetFrameLevel(HappinessIndicator:GetFrameLevel() - 1)
+ E:SetInside(HappinessIndicator, HappinessIndicator.backdrop)
+ HappinessIndicator:SetOrientation("VERTICAL")
+ HappinessIndicator:SetMinMaxValues(0, 100)
+ HappinessIndicator:SetFrameLevel(50)
+
+ HappinessIndicator.bg = HappinessIndicator:CreateTexture(nil, "BORDER")
+ HappinessIndicator.bg:SetAllPoints(HappinessIndicator)
+ HappinessIndicator.bg:SetTexture(E.media.blankTex)
+ HappinessIndicator.bg.multiplier = 0.3
+
+ HappinessIndicator.Override = UF.HappinessOverride
+
+ return HappinessIndicator
+end
+
+function UF:Configure_Happiness(frame)
+ if not frame.VARIABLES_SET then return end
+
+ local HappinessIndicator = frame.HappinessIndicator
+ local db = frame.db
+
+ frame.HAPPINESS_WIDTH = HappinessIndicator and frame.HAPPINESS_SHOWN and (db.happiness.width + (frame.BORDER*3)) or 0
+
+ if db.happiness.enable then
+ if not frame:IsElementEnabled("HappinessIndicator") then
+ frame:EnableElement("HappinessIndicator")
+ end
+
+ HappinessIndicator.backdrop:ClearAllPoints()
+ if db.power.enable and not frame.USE_MINI_POWERBAR and not frame.USE_INSET_POWERBAR and not frame.POWERBAR_DETACHED and not frame.USE_POWERBAR_OFFSET then
+ if frame.ORIENTATION == "RIGHT" then
+ E:Point(HappinessIndicator.backdrop, "BOTTOMRIGHT", frame.Power, "BOTTOMLEFT", -frame.BORDER + (frame.BORDER - frame.SPACING*3), -frame.BORDER)
+ E:Point(HappinessIndicator.backdrop, "TOPLEFT", frame.Health, "TOPLEFT", -frame.HAPPINESS_WIDTH, frame.BORDER)
+ else
+ E:Point(HappinessIndicator.backdrop, "BOTTOMLEFT", frame.Power, "BOTTOMRIGHT", frame.BORDER + (-frame.BORDER + frame.SPACING*3), -frame.BORDER)
+ E:Point(HappinessIndicator.backdrop, "TOPRIGHT", frame.Health, "TOPRIGHT", frame.HAPPINESS_WIDTH, frame.BORDER)
+ end
+ else
+ if frame.ORIENTATION == "RIGHT" then
+ E:Point(HappinessIndicator.backdrop, "BOTTOMRIGHT", frame.Health, "BOTTOMLEFT", -frame.BORDER + (frame.BORDER - frame.SPACING*3), -frame.BORDER)
+ E:Point(HappinessIndicator.backdrop, "TOPLEFT", frame.Health, "TOPLEFT", -frame.HAPPINESS_WIDTH, frame.BORDER)
+ else
+ E:Point(HappinessIndicator.backdrop, "BOTTOMLEFT", frame.Health, "BOTTOMRIGHT", frame.BORDER + (-frame.BORDER + frame.SPACING*3), -frame.BORDER)
+ E:Point(HappinessIndicator.backdrop, "TOPRIGHT", frame.Health, "TOPRIGHT", frame.HAPPINESS_WIDTH, frame.BORDER)
+ end
+ end
+ else
+ if frame:IsElementEnabled("HappinessIndicator") then
+ frame:DisableElement("HappinessIndicator")
+ end
+ end
+end
+
+function UF:HappinessOverride(event, unit)
+ if not unit or self.unit ~= unit then return end
+
+ local db = self.db
+ if not db then return end
+
+ local element = self.HappinessIndicator
+
+ if element.PreUpdate then
+ element:PreUpdate()
+ end
+
+ local _, hunterPet = HasPetUI()
+ local happiness, damagePercentage = GetPetHappiness()
+ local value, r, g, b
+
+ if hunterPet and happiness then
+ if damagePercentage == 75 then
+ value = 33
+ r, g, b = 0.8, 0.2, 0.1
+ elseif damagePercentage == 100 then
+ value = 66
+ r, g, b = 1, 1, 0
+ elseif damagePercentage == 125 then
+ value = 100
+ r, g, b = 0, 0.8, 0
+ end
+
+ element:SetValue(value)
+ element:SetStatusBarColor(r, g, b)
+ element.bg:SetVertexColor(r, g, b, 0.15)
+
+ if damagePercentage == 125 and db.happiness.autoHide then
+ element:Hide()
+ else
+ element:Show()
+ end
+ else
+ return element:Hide()
+ end
+
+ local isShown = element:IsShown()
+ local stateChanged
+
+ if (self.HAPPINESS_SHOWN and not isShown) or (not self.HAPPINESS_SHOWN and isShown) then
+ stateChanged = true
+ end
+
+ self.HAPPINESS_SHOWN = isShown
+
+ if stateChanged then
+ UF:Configure_Happiness(self)
+ UF:Configure_HealthBar(self)
+ UF:Configure_Power(self)
+ UF:Configure_InfoPanel(self, true)
+ end
+
+ if element.PostUpdate then
+ return element:PostUpdate(unit, happiness, damagePercentage)
+ end
+end
\ No newline at end of file
diff --git a/ElvUI/Modules/UnitFrames/Elements/Health.lua b/ElvUI/Modules/UnitFrames/Elements/Health.lua
index 0f580bc..993e49f 100644
--- a/ElvUI/Modules/UnitFrames/Elements/Health.lua
+++ b/ElvUI/Modules/UnitFrames/Elements/Health.lua
@@ -99,10 +99,10 @@ function UF:Configure_HealthBar(frame)
--Position
health:ClearAllPoints()
if frame.ORIENTATION == "LEFT" then
- health:SetPoint("TOPRIGHT", frame, "TOPRIGHT", -frame.BORDER - frame.SPACING, -frame.BORDER - frame.SPACING - frame.CLASSBAR_YOFFSET)
+ health:SetPoint("TOPRIGHT", frame, "TOPRIGHT", -frame.BORDER - frame.SPACING - (frame.HAPPINESS_WIDTH or 0), -frame.BORDER - frame.SPACING - frame.CLASSBAR_YOFFSET)
if frame.USE_POWERBAR_OFFSET then
- health:SetPoint("TOPRIGHT", frame, "TOPRIGHT", -frame.BORDER - frame.SPACING - frame.POWERBAR_OFFSET, -frame.BORDER - frame.SPACING - frame.CLASSBAR_YOFFSET)
+ health:SetPoint("TOPRIGHT", frame, "TOPRIGHT", -frame.BORDER - frame.SPACING - frame.POWERBAR_OFFSET - (frame.HAPPINESS_WIDTH or 0), -frame.BORDER - frame.SPACING - frame.CLASSBAR_YOFFSET"TOPLEFT", frame, "TOPLEFT", frame.BORDER + frame.SPACING + (frame.HAPPINESS_WIDTH or 0), -frame.BORDER - frame.SPACING - frame.CLASSBAR_YOFFSET)
health:SetWidth(frame.UNIT_WIDTH - (frame.PORTRAIT_WIDTH + frame.BORDER + frame.SPACING) - (frame.BORDER + frame.SPACING + frame.POWERBAR_OFFSET))
health:SetHeight(frame.UNIT_HEIGHT - (frame.BORDER + frame.SPACING + frame.POWERBAR_OFFSET) - (frame.BORDER + frame.SPACING + frame.CLASSBAR_YOFFSET))
elseif frame.POWERBAR_DETACHED or not frame.USE_POWERBAR or frame.USE_INSET_POWERBAR then
@@ -116,10 +116,10 @@ function UF:Configure_HealthBar(frame)
health:SetHeight(frame.UNIT_HEIGHT - (frame.BORDER + frame.SPACING + frame.CLASSBAR_YOFFSET) - (frame.BORDER + frame.SPACING + frame.BOTTOM_OFFSET))
end
elseif frame.ORIENTATION == "RIGHT" then
- health:SetPoint("TOPLEFT", frame, "TOPLEFT", frame.BORDER + frame.SPACING, -frame.BORDER - frame.SPACING - frame.CLASSBAR_YOFFSET)
+ health:SetPoint("TOPLEFT", frame, "TOPLEFT", frame.BORDER + frame.SPACING + (frame.HAPPINESS_WIDTH or 0), -frame.BORDER - frame.SPACING - frame.CLASSBAR_YOFFSET)
if frame.USE_POWERBAR_OFFSET then
- health:SetPoint("TOPLEFT", frame, "TOPLEFT", frame.BORDER + frame.SPACING + frame.POWERBAR_OFFSET, -frame.BORDER - frame.SPACING - frame.CLASSBAR_YOFFSET)
+ health:SetPoint("TOPLEFT", frame, "TOPLEFT", frame.BORDER + frame.SPACING + frame.POWERBAR_OFFSET + (frame.HAPPINESS_WIDTH or 0), -frame.BORDER - frame.SPACING - frame.CLASSBAR_YOFFSET)
health:SetWidth(frame.UNIT_WIDTH - (frame.PORTRAIT_WIDTH + frame.BORDER + frame.SPACING) - (frame.BORDER + frame.SPACING + frame.POWERBAR_OFFSET))
health:SetHeight(frame.UNIT_HEIGHT - (frame.BORDER + frame.SPACING + frame.POWERBAR_OFFSET) - (frame.BORDER + frame.SPACING + frame.CLASSBAR_YOFFSET))
elseif frame.POWERBAR_DETACHED or not frame.USE_POWERBAR or frame.USE_INSET_POWERBAR then
@@ -133,7 +133,7 @@ function UF:Configure_HealthBar(frame)
health:SetHeight(frame.UNIT_HEIGHT - (frame.BORDER + frame.SPACING + frame.CLASSBAR_YOFFSET) - (frame.BORDER + frame.SPACING + frame.BOTTOM_OFFSET))
end
elseif frame.ORIENTATION == "MIDDLE" then
- health:SetPoint("TOPRIGHT", frame, "TOPRIGHT", -frame.BORDER - frame.SPACING, -frame.BORDER - frame.SPACING - frame.CLASSBAR_YOFFSET)
+ health:SetPoint("TOPRIGHT", frame, "TOPRIGHT", -frame.BORDER - frame.SPACING - (frame.HAPPINESS_WIDTH or 0), -frame.BORDER - frame.SPACING - frame.CLASSBAR_YOFFSET)
if frame.USE_POWERBAR_OFFSET then
health:SetPoint("TOPRIGHT", frame, "TOPRIGHT", -frame.BORDER - frame.SPACING - frame.POWERBAR_OFFSET, -frame.BORDER - frame.SPACING - frame.CLASSBAR_YOFFSET)
diff --git a/ElvUI/Modules/UnitFrames/Elements/InfoPanel.lua b/ElvUI/Modules/UnitFrames/Elements/InfoPanel.lua
index fe2a8da..4c6e915 100644
--- a/ElvUI/Modules/UnitFrames/Elements/InfoPanel.lua
+++ b/ElvUI/Modules/UnitFrames/Elements/InfoPanel.lua
@@ -22,16 +22,16 @@ function UF:Configure_InfoPanel(frame, noTemplateChange)
if frame.ORIENTATION == "RIGHT" then
frame.InfoPanel:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -frame.BORDER - frame.SPACING, frame.BORDER + frame.SPACING)
if frame.USE_POWERBAR and not frame.USE_INSET_POWERBAR and not frame.POWERBAR_DETACHED then
- frame.InfoPanel:SetPoint("TOPLEFT", frame.Power.backdrop, "BOTTOMLEFT", frame.BORDER, -(frame.SPACING*3))
+ frame.InfoPanel:SetPoint("TOPLEFT", frame.Power.backdrop, "BOTTOMLEFT", frame.BORDER - (frame.HAPPINESS_WIDTH or 0), -(frame.SPACING*3))
else
- frame.InfoPanel:SetPoint("TOPLEFT", frame.Health.backdrop, "BOTTOMLEFT", frame.BORDER, -(frame.SPACING*3))
+ frame.InfoPanel:SetPoint("TOPLEFT", frame.Health.backdrop, "BOTTOMLEFT", frame.BORDER - (frame.HAPPINESS_WIDTH or 0), -(frame.SPACING*3))
end
else
frame.InfoPanel:SetPoint("BOTTOMLEFT", frame, "BOTTOMLEFT", frame.BORDER + frame.SPACING, frame.BORDER + frame.SPACING)
if frame.USE_POWERBAR and not frame.USE_INSET_POWERBAR and not frame.POWERBAR_DETACHED then
- frame.InfoPanel:SetPoint("TOPRIGHT", frame.Power.backdrop, "BOTTOMRIGHT", -frame.BORDER, -(frame.SPACING*3))
+ frame.InfoPanel:SetPoint("TOPRIGHT", frame.Power.backdrop, "BOTTOMRIGHT", -frame.BORDER + (frame.HAPPINESS_WIDTH or 0), -(frame.SPACING*3))
else
- frame.InfoPanel:SetPoint("TOPRIGHT", frame.Health.backdrop, "BOTTOMRIGHT", -frame.BORDER, -(frame.SPACING*3))
+ frame.InfoPanel:SetPoint("TOPRIGHT", frame.Health.backdrop, "BOTTOMRIGHT", -frame.BORDER + (frame.HAPPINESS_WIDTH or 0), -(frame.SPACING*3))
end
end
diff --git a/ElvUI/Modules/UnitFrames/Elements/Load_Elements.xml b/ElvUI/Modules/UnitFrames/Elements/Load_Elements.xml
index 9442aaf..ef868f5 100644
--- a/ElvUI/Modules/UnitFrames/Elements/Load_Elements.xml
+++ b/ElvUI/Modules/UnitFrames/Elements/Load_Elements.xml
@@ -2,17 +2,25 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ElvUI/Modules/UnitFrames/Elements/Portrait.lua b/ElvUI/Modules/UnitFrames/Elements/Portrait.lua
index 284dd64..191b1a1 100644
--- a/ElvUI/Modules/UnitFrames/Elements/Portrait.lua
+++ b/ElvUI/Modules/UnitFrames/Elements/Portrait.lua
@@ -1,119 +1,117 @@
-local E, L, V, P, G = unpack(ElvUI);
+local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local UF = E:GetModule("UnitFrames");
-local CreateFrame = CreateFrame;
+--WoW API / Variables
+local CreateFrame = CreateFrame
function UF:Construct_Portrait(frame, type)
- local portrait;
- if(type == "texture") then
- local backdrop = CreateFrame("Frame", nil, frame);
- portrait = frame:CreateTexture(nil, "OVERLAY");
- portrait:SetTexCoord(0.15, 0.85, 0.15, 0.85);
- E:SetOutside(backdrop, portrait);
- backdrop:SetFrameLevel(frame:GetFrameLevel());
- E:SetTemplate(backdrop, "Default");
- portrait.backdrop = backdrop;
+ local portrait
+
+ if type == "texture" then
+ local backdrop = CreateFrame("Frame", nil, frame)
+ portrait = frame:CreateTexture(nil, "OVERLAY")
+ portrait:SetTexCoord(0.15, 0.85, 0.15, 0.85)
+ E:SetOutside(backdrop, portrait)
+ backdrop:SetFrameLevel(frame:GetFrameLevel())
+ E:SetTemplate(backdrop, "Default")
+ portrait.backdrop = backdrop
else
- portrait = CreateFrame("PlayerModel", nil, frame);
+ portrait = CreateFrame("PlayerModel", nil, frame)
E:CreateBackdrop(portrait, "Default", nil, nil, self.thinBorders, true)
end
- portrait.PostUpdate = self.PortraitUpdate;
+ portrait.PostUpdate = self.PortraitUpdate
- portrait.overlay = CreateFrame("Frame", nil, frame);
- portrait.overlay:SetFrameLevel(frame.Health:GetFrameLevel() + 5);
+ portrait.overlay = CreateFrame("Frame", nil, frame)
+ portrait.overlay:SetFrameLevel(frame.Health:GetFrameLevel() + 5) --Set to "frame.Health:GetFrameLevel()" if you don"t want portrait cut off.
- return portrait;
+ return portrait
end
function UF:Configure_Portrait(frame, dontHide)
- if(not frame.VARIABLES_SET) then return; end
- local db = frame.db;
- if(frame.Portrait and not dontHide) then
- frame.Portrait:Hide();
- frame.Portrait:ClearAllPoints();
- frame.Portrait.backdrop:Hide();
+ if not frame.VARIABLES_SET then return end
+ local db = frame.db
+ if frame.Portrait and not dontHide then
+ frame.Portrait:Hide()
+ frame.Portrait:ClearAllPoints()
+ frame.Portrait.backdrop:Hide()
end
- frame.Portrait = db.portrait.style == "2D" and frame.Portrait2D or frame.Portrait3D;
+ frame.Portrait = db.portrait.style == "2D" and frame.Portrait2D or frame.Portrait3D
- local portrait = frame.Portrait;
- if(frame.USE_PORTRAIT) then
- if(not frame:IsElementEnabled("Portrait")) then
- frame:EnableElement("Portrait", frame.unit);
+ local portrait = frame.Portrait
+ if frame.USE_PORTRAIT then
+ if not frame:IsElementEnabled("Portrait") then
+ frame:EnableElement("Portrait")
end
local color = E.db.unitframe.colors.borderColor
portrait.backdrop:SetBackdropBorderColor(color.r, color.g, color.b)
- portrait:ClearAllPoints();
- portrait.backdrop:ClearAllPoints();
- if(frame.USE_PORTRAIT_OVERLAY) then
- if(db.portrait.style == "3D") then
- portrait:SetFrameLevel(frame.Health:GetFrameLevel() + 1);
+ portrait:ClearAllPoints()
+ portrait.backdrop:ClearAllPoints()
+ if frame.USE_PORTRAIT_OVERLAY then
+ if db.portrait.style == "3D" then
+ portrait:SetFrameLevel(frame.Health:GetFrameLevel())
else
- portrait:SetParent(frame.Health);
+ portrait:SetParent(frame.Health)
end
- --portrait:SetAllPoints(frame.Health);
- portrait:SetWidth(frame.Health:GetWidth())
- portrait:SetHeight(frame.Health:GetHeight())
- portrait:SetPoint("TOPLEFT", frame.Health, "TOPLEFT", 0, -frame.BORDER)
-
- portrait:SetAlpha(0.35);
- if(not dontHide) then
- portrait:Show();
+ portrait:SetAllPoints(frame.Health)
+ portrait:SetAlpha(0.35)
+ if not dontHide then
+ portrait:Show()
end
- portrait.backdrop:Hide();
+ portrait.backdrop:Hide()
else
- portrait:SetAlpha(1);
- if(not dontHide) then
- portrait:Show();
+ portrait:SetAlpha(1)
+ if not dontHide then
+ portrait:Show()
end
- portrait.backdrop:Show();
- if(db.portrait.style == "3D") then
- portrait:SetFrameLevel(frame.Health:GetFrameLevel() - 4);
+ portrait.backdrop:Show()
+ if db.portrait.style == "3D" then
+ portrait:SetFrameLevel(frame.Health:GetFrameLevel() - 4) --Make sure portrait is behind Health and Power
else
- portrait:SetParent(frame.Health);
+ portrait:SetParent(frame)
end
- if(frame.ORIENTATION == "LEFT") then
- portrait.backdrop:SetPoint("TOPLEFT", frame, "TOPLEFT", frame.SPACING, frame.USE_MINI_CLASSBAR and -(frame.CLASSBAR_YOFFSET+frame.SPACING) or -frame.SPACING);
+ if frame.ORIENTATION == "LEFT" then
+ E:Point(portrait.backdrop, "TOPLEFT", frame, "TOPLEFT", frame.SPACING, frame.USE_MINI_CLASSBAR and -(frame.CLASSBAR_YOFFSET+frame.SPACING) or -frame.SPACING)
- if(frame.USE_MINI_POWERBAR or frame.USE_POWERBAR_OFFSET or not frame.USE_POWERBAR or frame.USE_INSET_POWERBAR or frame.POWERBAR_DETACHED) then
- portrait.backdrop:SetPoint("BOTTOMRIGHT", frame.Health.backdrop, "BOTTOMLEFT", frame.BORDER - frame.SPACING*3, 0);
+ if frame.USE_MINI_POWERBAR or frame.USE_POWERBAR_OFFSET or not frame.USE_POWERBAR or frame.USE_INSET_POWERBAR or frame.POWERBAR_DETACHED then
+ E:Point(portrait.backdrop, "BOTTOMRIGHT", frame.Health.backdrop, "BOTTOMLEFT", frame.BORDER - frame.SPACING*3, 0)
else
- portrait.backdrop:SetPoint("BOTTOMRIGHT", frame.Power.backdrop, "BOTTOMLEFT", frame.BORDER - frame.SPACING*3, 0);
+ E:Point(portrait.backdrop, "BOTTOMRIGHT", frame.Power.backdrop, "BOTTOMLEFT", frame.BORDER - frame.SPACING*3, 0)
end
- elseif(frame.ORIENTATION == "RIGHT") then
- portrait.backdrop:SetPoint("TOPRIGHT", frame, "TOPRIGHT", -frame.SPACING, frame.USE_MINI_CLASSBAR and -(frame.CLASSBAR_YOFFSET+frame.SPACING) or -frame.SPACING);
+ elseif frame.ORIENTATION == "RIGHT" then
+ E:Point(portrait.backdrop, "TOPRIGHT", frame, "TOPRIGHT", -frame.SPACING, frame.USE_MINI_CLASSBAR and -(frame.CLASSBAR_YOFFSET+frame.SPACING) or -frame.SPACING)
- if(frame.USE_MINI_POWERBAR or frame.USE_POWERBAR_OFFSET or not frame.USE_POWERBAR or frame.USE_INSET_POWERBAR or frame.POWERBAR_DETACHED) then
- portrait.backdrop:SetPoint("BOTTOMLEFT", frame.Health.backdrop, "BOTTOMRIGHT", -frame.BORDER + frame.SPACING*3, 0);
+ if frame.USE_MINI_POWERBAR or frame.USE_POWERBAR_OFFSET or not frame.USE_POWERBAR or frame.USE_INSET_POWERBAR or frame.POWERBAR_DETACHED then
+ E:Point(portrait.backdrop, "BOTTOMLEFT", frame.Health.backdrop, "BOTTOMRIGHT", -frame.BORDER + frame.SPACING*3, 0)
else
- portrait.backdrop:SetPoint("BOTTOMLEFT", frame.Power.backdrop, "BOTTOMRIGHT", -frame.BORDER + frame.SPACING*3, 0);
+ E:Point(portrait.backdrop, "BOTTOMLEFT", frame.Power.backdrop, "BOTTOMRIGHT", -frame.BORDER + frame.SPACING*3, 0)
end
end
- E:SetInside(portrait, portrait.backdrop, frame.BORDER);
+ E:SetInside(portrait, portrait.backdrop, frame.BORDER)
end
else
- if(frame:IsElementEnabled("Portrait")) then
- frame:DisableElement("Portrait");
- portrait:Hide();
- portrait.backdrop:Hide();
+ if frame:IsElementEnabled("Portrait") then
+ frame:DisableElement("Portrait")
+ portrait:Hide()
+ portrait.backdrop:Hide()
end
end
end
function UF:PortraitUpdate()
- local db = self:GetParent().db;
- if(not db) then return; end
+ local db = self:GetParent().db
+ if not db then return end
- local portrait = db.portrait;
- if(portrait.enable and self:GetParent().USE_PORTRAIT_OVERLAY) then
- self:SetAlpha(0);
- self:SetAlpha(0.35);
+ local portrait = db.portrait
+ if portrait.enable and self:GetParent().USE_PORTRAIT_OVERLAY then
+ self:SetAlpha(0)
+ self:SetAlpha(0.35)
else
self:SetAlpha(1)
end
-end
\ No newline at end of file
+end
diff --git a/ElvUI/Modules/UnitFrames/Elements/Power.lua b/ElvUI/Modules/UnitFrames/Elements/Power.lua
index 0424447..2f9416c 100644
--- a/ElvUI/Modules/UnitFrames/Elements/Power.lua
+++ b/ElvUI/Modules/UnitFrames/Elements/Power.lua
@@ -132,17 +132,17 @@ function UF:Configure_Power(frame)
power.backdrop:SetFrameLevel(49)
elseif frame.USE_POWERBAR_OFFSET then
if frame.ORIENTATION == "LEFT" then
- power:SetPoint("TOPRIGHT", frame.Health, "TOPRIGHT", frame.POWERBAR_OFFSET, -frame.POWERBAR_OFFSET)
+ power:SetPoint("TOPRIGHT", frame.Health, "TOPRIGHT", frame.POWERBAR_OFFSET + frame.HAPPINESS_WIDTH, -frame.POWERBAR_OFFSET)
power:SetWidth(frame.UNIT_WIDTH - (frame.PORTRAIT_WIDTH + frame.BORDER + frame.SPACING) - (frame.BORDER + frame.SPACING + frame.POWERBAR_OFFSET))
power:SetHeight(frame.UNIT_HEIGHT - (frame.BORDER + frame.SPACING + frame.POWERBAR_OFFSET) - (frame.BORDER + frame.SPACING + frame.CLASSBAR_YOFFSET))
elseif frame.ORIENTATION == "MIDDLE" then
+ power:SetPoint("TOPLEFT", frame, "TOPLEFT", frame.BORDER + frame.SPACING, -frame.POWERBAR_OFFSET -frame.CLASSBAR_YOFFSET)
power:SetWidth(frame.UNIT_WIDTH - frame.PORTRAIT_WIDTH - ((frame.BORDER + frame.SPACING) * 2))
power:SetHeight(frame.UNIT_HEIGHT - (frame.POWERBAR_OFFSET + frame.CLASSBAR_YOFFSET) - frame.BORDER)
- power:SetPoint("TOPLEFT", frame, "TOPLEFT", frame.BORDER + frame.SPACING, -frame.POWERBAR_OFFSET -frame.CLASSBAR_YOFFSET)
else
+ power:SetPoint("TOPLEFT", frame.Health, "TOPLEFT", -frame.POWERBAR_OFFSET - frame.HAPPINESS_WIDTH, -frame.POWERBAR_OFFSET)
power:SetWidth(frame.UNIT_WIDTH - frame.PORTRAIT_WIDTH - frame.POWERBAR_OFFSET)
power:SetHeight(frame.UNIT_HEIGHT - frame.POWERBAR_OFFSET)
- power:SetPoint("TOPLEFT", frame.Health, "TOPLEFT", -frame.POWERBAR_OFFSET, -frame.POWERBAR_OFFSET)
end
power:SetFrameLevel(frame.Health:GetFrameLevel() -5) --Health uses 10
power.backdrop:SetFrameLevel(frame.Health:GetFrameLevel() - 6)
@@ -158,14 +158,14 @@ function UF:Configure_Power(frame)
if frame.ORIENTATION == "LEFT" then
power:SetWidth(frame.POWERBAR_WIDTH - frame.BORDER*2)
- power:SetPoint("RIGHT", frame, "BOTTOMRIGHT", -(frame.BORDER*2 + 4), ((frame.POWERBAR_HEIGHT-frame.BORDER)/2))
+ power:SetPoint("RIGHT", frame, "BOTTOMRIGHT", -(frame.BORDER*2 + 4) -frame.HAPPINESS_WIDTH, ((frame.POWERBAR_HEIGHT-frame.BORDER)/2))
elseif frame.ORIENTATION == "RIGHT" then
power:SetWidth(frame.POWERBAR_WIDTH - frame.BORDER*2)
- power:SetPoint("LEFT", frame, "BOTTOMLEFT", (frame.BORDER*2 + 4), ((frame.POWERBAR_HEIGHT-frame.BORDER)/2))
+ power:SetPoint("LEFT", frame, "BOTTOMLEFT", (frame.BORDER*2 + 4) +frame.HAPPINESS_WIDTH, ((frame.POWERBAR_HEIGHT-frame.BORDER)/2))
else
power:SetWidth(frame.UNIT_WIDTH - ((frame.BORDER*2 + 4) * 2))
power:SetHeight(frame.POWERBAR_HEIGHT - frame.BORDER*2)
- power:SetPoint("LEFT", frame, "BOTTOMLEFT", (frame.BORDER*2 + 4), ((frame.POWERBAR_HEIGHT-frame.BORDER)/2))
+ power:SetPoint("RIGHT", frame, "BOTTOMRIGHT", -(frame.BORDER*2 + 4) -frame.HAPPINESS_WIDTH, ((frame.POWERBAR_HEIGHT-frame.BORDER)/2))
end
power:SetFrameLevel(50)
diff --git a/ElvUI/Modules/UnitFrames/Elements/PvPIcon.lua b/ElvUI/Modules/UnitFrames/Elements/PvPIcon.lua
new file mode 100644
index 0000000..364b8da
--- /dev/null
+++ b/ElvUI/Modules/UnitFrames/Elements/PvPIcon.lua
@@ -0,0 +1,67 @@
+local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local UF = E:GetModule("UnitFrames");
+
+function UF:Construct_PvPIcon(frame)
+ local PvPIndicator = frame.RaisedElementParent.TextureParent:CreateTexture(nil, "ARTWORK")
+ E:Size(PvPIndicator, 30, 30)
+ PvPIndicator:SetPoint("CENTER", frame, "CENTER")
+
+ PvPIndicator.Override = UF.UpdateOverridePvP
+
+ return PvPIndicator
+end
+
+function UF:Configure_PVPIcon(frame)
+ local PvPIndicator = frame.PvPIndicator
+ PvPIndicator:ClearAllPoints()
+ E:Point(PvPIndicator, frame.db.pvpIcon.anchorPoint, frame.Health, frame.db.pvpIcon.anchorPoint, frame.db.pvpIcon.xOffset, frame.db.pvpIcon.yOffset)
+
+ local scale = frame.db.pvpIcon.scale or 1
+ E:Size(PvPIndicator, 30 * scale)
+
+ if frame.db.pvpIcon.enable and not frame:IsElementEnabled("PvPIndicator") then
+ frame:EnableElement("PvPIndicator")
+ elseif not frame.db.pvpIcon.enable and frame:IsElementEnabled("PvPIndicator") then
+ frame:DisableElement("PvPIndicator")
+ end
+end
+
+function UF:UpdateOverridePvP(event, unit)
+ if not unit or self.unit ~= unit then return end
+
+ local element = self.PvPIndicator
+
+ if element.PreUpdate then
+ element:PreUpdate()
+ end
+
+ local status
+ local factionGroup = UnitFactionGroup(unit)
+
+ if UnitIsPVPFreeForAll(unit) then
+ element:SetTexture("Interface\\TargetingFrame\\UI-PVP-FFA")
+ element:SetTexCoord(0, 0.65625, 0, 0.65625)
+
+ status = "ffa"
+ elseif factionGroup and UnitIsPVP(unit) then
+ element:SetTexture("Interface\\AddOns\\ElvUI\\media\\textures\\PVP-Icons")
+
+ if factionGroup == "Alliance" then
+ element:SetTexCoord(0.545, 0.935, 0.070, 0.940)
+ else
+ element:SetTexCoord(0.100, 0.475, 0.070, 0.940)
+ end
+
+ status = factionGroup
+ end
+
+ if status then
+ element:Show()
+ else
+ element:Hide()
+ end
+
+ if element.PostUpdate then
+ return element:PostUpdate(unit, status)
+ end
+end
\ No newline at end of file
diff --git a/ElvUI/Modules/UnitFrames/Elements/RaidIcon.lua b/ElvUI/Modules/UnitFrames/Elements/RaidIcon.lua
index 7d0e527..3c54869 100644
--- a/ElvUI/Modules/UnitFrames/Elements/RaidIcon.lua
+++ b/ElvUI/Modules/UnitFrames/Elements/RaidIcon.lua
@@ -1,4 +1,4 @@
-local E, L, V, P, G = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local UF = E:GetModule("UnitFrames");
function UF:Construct_RaidIcon(frame)
diff --git a/ElvUI/Modules/UnitFrames/Elements/RaidRoleIcons.lua b/ElvUI/Modules/UnitFrames/Elements/RaidRoleIcons.lua
index a031d0e..85204d1 100644
--- a/ElvUI/Modules/UnitFrames/Elements/RaidRoleIcons.lua
+++ b/ElvUI/Modules/UnitFrames/Elements/RaidRoleIcons.lua
@@ -1,12 +1,13 @@
local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local UF = E:GetModule("UnitFrames");
---Cache global variables
---Lua functions
-
--WoW API / Variables
local CreateFrame = CreateFrame
+local ns = oUF
+local ElvUF = ns.oUF
+assert(ElvUF, "ElvUI was unable to locate oUF.")
+
function UF:Construct_RaidRoleFrames(frame)
local anchor = CreateFrame("Frame", nil, frame.RaisedElementParent)
frame.LeaderIndicator = anchor:CreateTexture(nil, "OVERLAY")
@@ -39,7 +40,7 @@ function UF:Configure_RaidRoleIcons(frame)
frame:EnableElement("MasterLooterIndicator")
frame:EnableElement("AssistantIndicator")
end
-
+
raidRoleFrameAnchor:ClearAllPoints()
if frame.db.raidRoleIcons.position == "TOPLEFT" then
raidRoleFrameAnchor:SetPoint("LEFT", frame.Health, "TOPLEFT", 2, 0)
diff --git a/ElvUI/Modules/UnitFrames/Elements/Range.lua b/ElvUI/Modules/UnitFrames/Elements/Range.lua
index ff40f7d..415672c 100644
--- a/ElvUI/Modules/UnitFrames/Elements/Range.lua
+++ b/ElvUI/Modules/UnitFrames/Elements/Range.lua
@@ -1,4 +1,4 @@
-local E, L, V, P, G = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local UF = E:GetModule("UnitFrames");
function UF:Construct_Range()
@@ -11,14 +11,14 @@ end
function UF:Configure_Range(frame)
local range = frame.Range
if frame.db.rangeCheck then
- if not frame:IsElementEnabled('Range') then
- frame:EnableElement('Range')
+ if not frame:IsElementEnabled("Range") then
+ frame:EnableElement("Range")
end
range.outsideAlpha = E.db.unitframe.OORAlpha
else
- if frame:IsElementEnabled('Range') then
- frame:DisableElement('Range')
+ if frame:IsElementEnabled("Range") then
+ frame:DisableElement("Range")
end
end
end
diff --git a/ElvUI/Modules/UnitFrames/Elements/ReadyCheckIcon.lua b/ElvUI/Modules/UnitFrames/Elements/ReadyCheckIcon.lua
new file mode 100644
index 0000000..320f7ef
--- /dev/null
+++ b/ElvUI/Modules/UnitFrames/Elements/ReadyCheckIcon.lua
@@ -0,0 +1,28 @@
+local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local UF = E:GetModule("UnitFrames");
+
+function UF:Construct_ReadyCheckIcon(frame)
+ local tex = frame.RaisedElementParent.TextureParent:CreateTexture(nil, "OVERLAY")
+ E:Size(tex, 12)
+ E:Point(tex, "BOTTOM", frame.Health, "BOTTOM", 0, 2)
+
+ return tex
+end
+
+function UF:Configure_ReadyCheckIcon(frame)
+ local ReadyCheckIndicator = frame.ReadyCheckIndicator
+ local db = frame.db
+
+ if db.readycheckIcon.enable then
+ if not frame:IsElementEnabled("ReadyCheckIndicator") then
+ frame:EnableElement("ReadyCheckIndicator")
+ end
+
+ local attachPoint = self:GetObjectAnchorPoint(frame, db.readycheckIcon.attachTo)
+ ReadyCheckIndicator:ClearAllPoints()
+ E:Point(ReadyCheckIndicator, db.readycheckIcon.position, attachPoint, db.readycheckIcon.position, db.readycheckIcon.xOffset, db.readycheckIcon.yOffset)
+ E:Size(ReadyCheckIndicator, db.readycheckIcon.size)
+ else
+ frame:DisableElement("ReadyCheckIndicator")
+ end
+end
\ No newline at end of file
diff --git a/ElvUI/Modules/UnitFrames/Elements/RestingIndicator.lua b/ElvUI/Modules/UnitFrames/Elements/RestingIndicator.lua
index 26f964d..ef5118d 100644
--- a/ElvUI/Modules/UnitFrames/Elements/RestingIndicator.lua
+++ b/ElvUI/Modules/UnitFrames/Elements/RestingIndicator.lua
@@ -1,40 +1,54 @@
local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local UF = E:GetModule("UnitFrames");
---Cache global variables
---Lua functions
-
---WoW API / Variables
+local RestingTextures = {
+ ["DEFAULT"] = [[Interface\CharacterFrame\UI-StateIcon]],
+ ["RESTING"] = [[Interface\AddOns\ElvUI\media\textures\resting]],
+ ["RESTING1"] = [[Interface\AddOns\ElvUI\media\textures\resting1]]
+}
function UF:Construct_RestingIndicator(frame)
- local resting = frame.RaisedElementParent.TextureParent:CreateTexture(nil, "OVERLAY")
- resting:SetWidth(22)
- resting:SetHeight(22)
-
- return resting
+ return frame.RaisedElementParent.TextureParent:CreateTexture(nil, "OVERLAY")
end
function UF:Configure_RestingIndicator(frame)
if not frame.VARIABLES_SET then return end
- local rIcon = frame.RestingIndicator
- local db = frame.db
- if db.restIcon then
+
+ local Icon = frame.RestingIndicator
+ local db = frame.db.RestIcon
+
+ if db.enable then
if not frame:IsElementEnabled("RestingIndicator") then
frame:EnableElement("RestingIndicator")
end
- rIcon:ClearAllPoints()
- if frame.ORIENTATION == "RIGHT" then
- rIcon:SetPoint("CENTER", frame.Health, "TOPLEFT", -3, 6)
+ if db.defaultColor then
+ Icon:SetVertexColor(1, 1, 1, 1)
+ Icon:SetDesaturated(false)
else
- if frame.USE_PORTRAIT and not frame.USE_PORTRAIT_OVERLAY then
- rIcon:SetPoint("CENTER", frame.Portrait, "TOPLEFT", -3, 6)
- else
- rIcon:SetPoint("CENTER", frame.Health, "TOPLEFT", -3, 6)
- end
+ Icon:SetVertexColor(db.color.r, db.color.g, db.color.b, db.color.a)
+ Icon:SetDesaturated(true)
+ end
+
+ if db.texture == "CUSTOM" and db.customTexture then
+ Icon:SetTexture(db.customTexture)
+ Icon:SetTexCoord(0, 1, 0, 1)
+ elseif db.texture ~= "DEFAULT" and RestingTextures[db.texture] then
+ Icon:SetTexture(RestingTextures[db.texture])
+ Icon:SetTexCoord(0, 1, 0, 1)
+ else
+ Icon:SetTexture(RestingTextures.DEFAULT)
+ Icon:SetTexCoord(0, .5, 0, .421875)
+ end
+
+ E:Size(Icon, db.size)
+ Icon:ClearAllPoints()
+ if frame.ORIENTATION ~= "RIGHT" and (frame.USE_PORTRAIT and not frame.USE_PORTRAIT_OVERLAY) then
+ E:Point(Icon, "CENTER", frame.Portrait, db.anchorPoint, db.xOffset, db.yOffset)
+ else
+ E:Point(Icon, "CENTER", frame.Health, db.anchorPoint, db.xOffset, db.yOffset)
end
elseif frame:IsElementEnabled("RestingIndicator") then
frame:DisableElement("RestingIndicator")
- rIcon:Hide()
end
end
\ No newline at end of file
diff --git a/ElvUI/Modules/UnitFrames/Elements/ResurrectionIcon.lua b/ElvUI/Modules/UnitFrames/Elements/ResurrectionIcon.lua
new file mode 100644
index 0000000..a2ee07e
--- /dev/null
+++ b/ElvUI/Modules/UnitFrames/Elements/ResurrectionIcon.lua
@@ -0,0 +1,34 @@
+local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local UF = E:GetModule("UnitFrames");
+
+function UF:Construct_ResurrectionIcon(frame)
+ local tex = frame.RaisedElementParent.TextureParent:CreateTexture(nil, "OVERLAY")
+ tex:SetTexture([[Interface\AddOns\ElvUI\media\textures\Raid-Icon-Rez]])
+ E:Point(tex, "CENTER", frame.Health, "CENTER")
+ E:Size(tex, 30)
+ tex:SetDrawLayer("OVERLAY", 7)
+
+ return tex
+end
+
+function UF:Configure_ResurrectionIcon(frame)
+ local RI = frame.ResurrectIndicator
+ local db = frame.db
+
+ if db.resurrectIcon.enable then
+ if not frame:IsElementEnabled("ResurrectIndicator") then
+ frame:EnableElement("ResurrectIndicator")
+ end
+ RI:Show()
+ E:Size(RI, db.resurrectIcon.size)
+
+ local attachPoint = self:GetObjectAnchorPoint(frame, db.resurrectIcon.attachToObject)
+ RI:ClearAllPoints()
+ E:Point(RI, db.resurrectIcon.attachTo, attachPoint, db.resurrectIcon.attachTo, db.resurrectIcon.xOffset, db.resurrectIcon.yOffset)
+ else
+ if frame:IsElementEnabled("ResurrectIndicator") then
+ frame:DisableElement("ResurrectIndicator")
+ end
+ RI:Hide()
+ end
+end
\ No newline at end of file
diff --git a/ElvUI/Modules/UnitFrames/Groups/Party.lua b/ElvUI/Modules/UnitFrames/Groups/Party.lua
index b20027b..a11e8aa 100644
--- a/ElvUI/Modules/UnitFrames/Groups/Party.lua
+++ b/ElvUI/Modules/UnitFrames/Groups/Party.lua
@@ -1,8 +1,10 @@
-local E, L, V, P, G = unpack(ElvUI)
-local UF = E:GetModule("UnitFrames")
+local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local UF = E:GetModule("UnitFrames");
+--Cache global variables
+--Lua functions
local _G = _G
-
+--WoW API / Variables
local CreateFrame = CreateFrame
local ns = oUF
diff --git a/ElvUI/Modules/UnitFrames/Groups/Raid.lua b/ElvUI/Modules/UnitFrames/Groups/Raid.lua
index d856a49..2ae2ef9 100644
--- a/ElvUI/Modules/UnitFrames/Groups/Raid.lua
+++ b/ElvUI/Modules/UnitFrames/Groups/Raid.lua
@@ -1,8 +1,6 @@
local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local UF = E:GetModule("UnitFrames");
---Cache global variables
---Lua functions
--WoW API / Variables
local CreateFrame = CreateFrame
diff --git a/ElvUI/Modules/UnitFrames/UnitFrames.lua b/ElvUI/Modules/UnitFrames/UnitFrames.lua
index a7b1984..571cbfc 100644
--- a/ElvUI/Modules/UnitFrames/UnitFrames.lua
+++ b/ElvUI/Modules/UnitFrames/UnitFrames.lua
@@ -8,7 +8,7 @@ UF.LSM = LSM
local _G = _G
local select, pairs, type, unpack, assert, tostring = select, pairs, type, unpack, assert, tostring
local min = math.min
-local tinsert = table.insert
+local tremove, tinsert = table.remove, table.insert
local find, gsub, format = string.find, string.gsub, string.format
--WoW API / Variables
local hooksecurefunc = hooksecurefunc
@@ -25,11 +25,13 @@ ElvUF = ns.oUF
assert(ElvUF, "ElvUI was unable to locate oUF.")
UF.headerstoload = {}
+UF.unitgroupstoload = {}
UF.unitstoload = {}
UF.groupPrototype = {}
UF.headerPrototype = {}
UF.headers = {}
+UF.groupunits = {}
UF.units = {}
UF.statusbars = {}
@@ -202,6 +204,7 @@ function UF:Construct_UF(frame, unit)
end
frame.SHADOW_SPACING = 3
+ frame.HAPPINESS_WIDTH = 0
frame.CLASSBAR_YOFFSET = 0 --placeholder
frame.BOTTOM_OFFSET = 0 --placeholder
@@ -301,12 +304,12 @@ function UF:UpdateColors()
ElvUF.colors.power[2] = E:GetColorTable(db.power.FOCUS);
ElvUF.colors.power[3] = E:GetColorTable(db.power.ENERGY);
- --[[ElvUF.colors.ComboPoints = {}
+ ElvUF.colors.ComboPoints = {}
ElvUF.colors.ComboPoints[1] = E:GetColorTable(db.classResources.comboPoints[1])
ElvUF.colors.ComboPoints[2] = E:GetColorTable(db.classResources.comboPoints[2])
ElvUF.colors.ComboPoints[3] = E:GetColorTable(db.classResources.comboPoints[3])
ElvUF.colors.ComboPoints[4] = E:GetColorTable(db.classResources.comboPoints[4])
- ElvUF.colors.ComboPoints[5] = E:GetColorTable(db.classResources.comboPoints[5])]]
+ ElvUF.colors.ComboPoints[5] = E:GetColorTable(db.classResources.comboPoints[5])
ElvUF.colors.reaction[1] = bad
ElvUF.colors.reaction[2] = bad
@@ -1092,4 +1095,4 @@ local function InitializeCallback()
UF:Initialize()
end
-E:RegisterInitialModule(UF:GetName(), InitializeCallback)
\ No newline at end of file
+E:RegisterInitialModule(UF:GetName(), InitializeCallback)
diff --git a/ElvUI/Modules/UnitFrames/Units/Pet.lua b/ElvUI/Modules/UnitFrames/Units/Pet.lua
index c3eb5f5..0a47de3 100644
--- a/ElvUI/Modules/UnitFrames/Units/Pet.lua
+++ b/ElvUI/Modules/UnitFrames/Units/Pet.lua
@@ -12,19 +12,20 @@ assert(ElvUF, "ElvUI was unable to locate oUF.")
function UF:Construct_PetFrame(frame)
frame.Health = self:Construct_HealthBar(frame, true, true, "RIGHT")
frame.Health.frequentUpdates = true
-
frame.Power = self:Construct_PowerBar(frame, true, true, "LEFT")
- frame.Power.frequentUpdates = true
-
frame.Name = self:Construct_NameText(frame)
-
frame.Portrait3D = self:Construct_Portrait(frame, "model")
frame.Portrait2D = self:Construct_Portrait(frame, "texture")
frame.Buffs = self:Construct_Buffs(frame)
frame.Debuffs = self:Construct_Debuffs(frame)
- frame.InfoPanel = self:Construct_InfoPanel(frame)
+ frame.Range = self:Construct_Range(frame)
+ if E.myclass == "HUNTER" then
+ frame.HappinessIndicator = self:Construct_Happiness(frame)
+ end
frame.MouseGlow = self:Construct_MouseGlow(frame)
frame.TargetGlow = self:Construct_TargetGlow(frame)
+ frame.InfoPanel = self:Construct_InfoPanel(frame)
+ frame.customTexts = {}
E:Point(frame, "BOTTOM", E.UIParent, "BOTTOM", 0, 118)
E:CreateMover(frame, frame:GetName().."Mover", L["Pet Frame"], nil, nil, nil, "ALL,SOLO")
@@ -56,6 +57,9 @@ function UF:Update_PetFrame(frame, db)
frame.USE_INFO_PANEL = not frame.USE_MINI_POWERBAR and not frame.USE_POWERBAR_OFFSET and db.infoPanel.enable
frame.INFO_PANEL_HEIGHT = frame.USE_INFO_PANEL and db.infoPanel.height or 0
+ frame.HAPPINESS_SHOWN = frame.HappinessIndicator and frame.HappinessIndicator:IsShown()
+ frame.HAPPINESS_WIDTH = frame.HAPPINESS_SHOWN and (db.happiness.width + (frame.BORDER*2)) or 0
+
frame.BOTTOM_OFFSET = UF:GetHealthBottomOffset(frame)
frame.VARIABLES_SET = true
@@ -64,7 +68,6 @@ function UF:Update_PetFrame(frame, db)
frame.colors = ElvUF.colors
frame.Portrait = frame.Portrait or (db.portrait.style == "2D" and frame.Portrait2D or frame.Portrait3D)
frame:RegisterForClicks(self.db.targetOnMouseDown and "LeftButtonDown" or "LeftButtonUp", self.db.targetOnMouseDown and "RightButtonDown" or "RightButtonUp")
-
E:Size(frame, frame.UNIT_WIDTH, frame.UNIT_HEIGHT)
E:Size(_G[frame:GetName().."Mover"], frame:GetWidth(), frame:GetHeight())
@@ -82,8 +85,15 @@ function UF:Update_PetFrame(frame, db)
UF:Configure_Auras(frame, "Buffs")
UF:Configure_Auras(frame, "Debuffs")
- E:SetMoverSnapOffset(frame:GetName().."Mover", -(12 + db.castbar.height))
+ UF:Configure_Range(frame)
+
+ if E.myclass == "HUNTER" then
+ UF:Configure_Happiness(frame)
+ end
+
+ UF:Configure_CustomTexts(frame)
+
frame:UpdateAllElements("ElvUI_UpdateAllElements")
end
-tinsert(UF.unitstoload, "pet")
\ No newline at end of file
+tinsert(UF.unitstoload, "pet")
diff --git a/ElvUI/Modules/UnitFrames/Units/Player.lua b/ElvUI/Modules/UnitFrames/Units/Player.lua
index 4320db7..3cb70d1 100644
--- a/ElvUI/Modules/UnitFrames/Units/Player.lua
+++ b/ElvUI/Modules/UnitFrames/Units/Player.lua
@@ -4,6 +4,8 @@ local UF = E:GetModule("UnitFrames");
--Cache global variables
--Lua functions
local _G = _G
+--WoW API / Variables
+local CreateFrame = CreateFrame
local ns = oUF
local ElvUF = ns.oUF
@@ -14,25 +16,40 @@ local CAN_HAVE_CLASSBAR = E.myclass == "DRUID"
function UF:Construct_PlayerFrame(frame)
frame.Health = self:Construct_HealthBar(frame, true, true, "RIGHT")
frame.Health.frequentUpdates = true
-
frame.Power = self:Construct_PowerBar(frame, true, true, "LEFT")
frame.Power.frequentUpdates = true
-
frame.Name = self:Construct_NameText(frame)
-
frame.Portrait3D = self:Construct_Portrait(frame, "model")
frame.Portrait2D = self:Construct_Portrait(frame, "texture")
frame.Buffs = self:Construct_Buffs(frame)
frame.Debuffs = self:Construct_Debuffs(frame)
frame.Castbar = self:Construct_Castbar(frame, L["Player Castbar"])
- frame.RaidTargetIndicator = UF:Construct_RaidIcon(frame)
+
+ if CAN_HAVE_CLASSBAR then
+ frame.ClassBarHolder = CreateFrame("Frame", nil, frame)
+ E:Point(frame.ClassBarHolder, "BOTTOM", E.UIParent, "BOTTOM", 0, 150)
+ end
+
+ if E.myclass == "DRUID" then
+ frame.DruidAltMana = self:Construct_DruidAltMana(frame)
+ frame.ClassBar = "DruidAltMana"
+ end
+
+ frame.MouseGlow = self:Construct_MouseGlow(frame)
+ frame.TargetGlow = self:Construct_TargetGlow(frame)
+ frame.RaidTargetIndicator = self:Construct_RaidIcon(frame)
+ frame.RaidRoleFramesAnchor = self:Construct_RaidRoleFrames(frame)
frame.RestingIndicator = self:Construct_RestingIndicator(frame)
frame.CombatIndicator = self:Construct_CombatIndicator(frame)
frame.PvPText = self:Construct_PvPIndicator(frame)
+ frame.DebuffHighlight = self:Construct_DebuffHighlight(frame)
frame.InfoPanel = self:Construct_InfoPanel(frame)
+ frame.PvPIndicator = self:Construct_PvPIcon(frame)
+ frame.CombatFade = true
+ frame.customTexts = {}
- frame:SetPoint("BOTTOMLEFT", E.UIParent, "BOTTOM", -413, 68)
- E:CreateMover(frame, frame:GetName().."Mover", L["Player Frame"], nil, nil, nil, "ALL,SOLO")
+ E:Point(frame, "BOTTOMLEFT", E.UIParent, "BOTTOM", -413, 68)
+ E:CreateMover(frame, frame:GetName().."Mover", L["Player Frame"], nil, nil, nil, "ALL,SOLO", nil, "unitframe,player,generalGroup")
frame.unitframeType = "player"
end
@@ -61,7 +78,7 @@ function UF:Update_PlayerFrame(frame, db)
frame.CAN_HAVE_CLASSBAR = CAN_HAVE_CLASSBAR
frame.MAX_CLASS_BAR = frame.MAX_CLASS_BAR or UF.classMaxResourceBar[E.myclass] or 0
frame.USE_CLASSBAR = db.classbar.enable and frame.CAN_HAVE_CLASSBAR
- frame.CLASSBAR_SHOWN = frame.CAN_HAVE_CLASSBAR and frame.ClassBar and frame[frame.ClassBar]:IsShown()
+ frame.CLASSBAR_SHOWN = frame.CAN_HAVE_CLASSBAR and frame[frame.ClassBar]:IsShown()
frame.CLASSBAR_DETACHED = db.classbar.detachFromFrame
frame.USE_MINI_CLASSBAR = db.classbar.fill == "spaced" and frame.USE_CLASSBAR
frame.CLASSBAR_HEIGHT = frame.USE_CLASSBAR and db.classbar.height or 0
@@ -81,7 +98,6 @@ function UF:Update_PlayerFrame(frame, db)
frame.colors = ElvUF.colors
frame.Portrait = frame.Portrait or (db.portrait.style == "2D" and frame.Portrait2D or frame.Portrait3D)
frame:RegisterForClicks(self.db.targetOnMouseDown and "LeftButtonDown" or "LeftButtonUp", self.db.targetOnMouseDown and "RightButtonDown" or "RightButtonUp")
-
E:Size(frame, frame.UNIT_WIDTH, frame.UNIT_HEIGHT)
E:Size(_G[frame:GetName().."Mover"], frame:GetWidth(), frame:GetHeight())
@@ -107,8 +123,24 @@ function UF:Update_PlayerFrame(frame, db)
UF:Configure_Castbar(frame)
+ UF:Configure_ClassBar(frame)
+
+ if db.combatfade and not frame:IsElementEnabled("CombatFade") then
+ frame:EnableElement("CombatFade")
+ elseif not db.combatfade and frame:IsElementEnabled("CombatFade") then
+ frame:DisableElement("CombatFade")
+ end
+
+ UF:Configure_DebuffHighlight(frame)
+
UF:Configure_RaidIcon(frame)
+ UF:Configure_PVPIcon(frame)
+
+ UF:Configure_RaidRoleIcons(frame)
+
+ UF:Configure_CustomTexts(frame)
+
E:SetMoverSnapOffset(frame:GetName().."Mover", -(12 + db.castbar.height))
frame:UpdateAllElements("ElvUI_UpdateAllElements")
end
diff --git a/ElvUI/Modules/UnitFrames/Units/Target.lua b/ElvUI/Modules/UnitFrames/Units/Target.lua
index 1a00969..ace844e 100644
--- a/ElvUI/Modules/UnitFrames/Units/Target.lua
+++ b/ElvUI/Modules/UnitFrames/Units/Target.lua
@@ -4,6 +4,8 @@ local UF = E:GetModule("UnitFrames");
--Cache global variables
--Lua functions
local _G = _G
+--WoW API / Variables
+local CreateFrame = CreateFrame
local ns = oUF
local ElvUF = ns.oUF
@@ -12,21 +14,31 @@ assert(ElvUF, "ElvUI was unable to locate oUF.")
function UF:Construct_TargetFrame(frame)
frame.Health = self:Construct_HealthBar(frame, true, true, "RIGHT")
frame.Health.frequentUpdates = true
-
frame.Power = self:Construct_PowerBar(frame, true, true, "LEFT")
frame.Power.frequentUpdates = true
-
frame.Name = self:Construct_NameText(frame)
-
frame.Portrait3D = self:Construct_Portrait(frame, "model")
frame.Portrait2D = self:Construct_Portrait(frame, "texture")
frame.Buffs = self:Construct_Buffs(frame)
frame.Debuffs = self:Construct_Debuffs(frame)
- frame.RaidTargetIndicator = UF:Construct_RaidIcon(frame)
+ frame.Castbar = self:Construct_Castbar(frame, L["Target Castbar"])
+ frame.Castbar.SafeZone = nil
+ frame.Castbar.LatencyTexture:Hide()
+ frame.RaidTargetIndicator = self:Construct_RaidIcon(frame)
+
+ frame.ComboPointsHolder = CreateFrame("Frame", nil, frame)
+ E:Point(frame.ComboPointsHolder, "BOTTOM", E.UIParent, "BOTTOM", 0, 200)
+ frame.ComboPoints = self:Construct_Combobar(frame)
+
+ frame.DebuffHighlight = self:Construct_DebuffHighlight(frame)
frame.GPS = self:Construct_GPS(frame)
frame.InfoPanel = self:Construct_InfoPanel(frame)
frame.MouseGlow = self:Construct_MouseGlow(frame)
frame.TargetGlow = self:Construct_TargetGlow(frame)
+ frame.AuraBars = self:Construct_AuraBarHeader(frame)
+ frame.Range = self:Construct_Range(frame)
+ frame.PvPIndicator = self:Construct_PvPIcon(frame)
+ frame.customTexts = {}
E:Point(frame, "BOTTOMRIGHT", E.UIParent, "BOTTOM", 413, 68)
E:CreateMover(frame, frame:GetName().."Mover", L["Target Frame"], nil, nil, nil, "ALL,SOLO")
@@ -94,10 +106,24 @@ function UF:Update_TargetFrame(frame, db)
UF:Configure_Auras(frame, "Buffs")
UF:Configure_Auras(frame, "Debuffs")
+ UF:Configure_Castbar(frame)
+
+ UF:Configure_ComboPoints(frame)
+
+ UF:Configure_DebuffHighlight(frame)
+
UF:Configure_GPS(frame)
UF:Configure_RaidIcon(frame)
+ UF:Configure_AuraBars(frame)
+
+ UF:Configure_Range(frame)
+
+ UF:Configure_PVPIcon(frame)
+
+ UF:Configure_CustomTexts(frame)
+
E:SetMoverSnapOffset(frame:GetName().."Mover", -(12 + db.castbar.height))
frame:UpdateAllElements("ElvUI_UpdateAllElements")
end
diff --git a/ElvUI/Modules/UnitFrames/Units/TargetTarget.lua b/ElvUI/Modules/UnitFrames/Units/TargetTarget.lua
index 087f039..04e826d 100644
--- a/ElvUI/Modules/UnitFrames/Units/TargetTarget.lua
+++ b/ElvUI/Modules/UnitFrames/Units/TargetTarget.lua
@@ -16,13 +16,18 @@ function UF:Construct_TargetTargetFrame(frame)
frame.Portrait3D = self:Construct_Portrait(frame, "model")
frame.Portrait2D = self:Construct_Portrait(frame, "texture")
frame.Buffs = self:Construct_Buffs(frame)
+ frame.RaidTargetIndicator = self:Construct_RaidIcon(frame)
frame.Debuffs = self:Construct_Debuffs(frame)
- frame.RaidTargetIndicator = UF:Construct_RaidIcon(frame)
+ frame.Range = self:Construct_Range(frame)
+ -- frame.ThreatIndicator = self:Construct_Threat(frame)
frame.InfoPanel = self:Construct_InfoPanel(frame)
+ frame.MouseGlow = self:Construct_MouseGlow(frame)
+ frame.TargetGlow = self:Construct_TargetGlow(frame)
+ frame.customTexts = {}
E:Point(frame, "BOTTOM", E.UIParent, "BOTTOM", 0, 75)
E:CreateMover(frame, frame:GetName().."Mover", L["TargetTarget Frame"], nil, nil, nil, "ALL,SOLO")
- frame.unitframeType = "targettarget";
+ frame.unitframeType = "targettarget"
end
function UF:Update_TargetTargetFrame(frame, db)
@@ -58,7 +63,6 @@ function UF:Update_TargetTargetFrame(frame, db)
frame.colors = ElvUF.colors
frame.Portrait = frame.Portrait or (db.portrait.style == "2D" and frame.Portrait2D or frame.Portrait3D)
frame:RegisterForClicks(self.db.targetOnMouseDown and "LeftButtonDown" or "LeftButtonUp", self.db.targetOnMouseDown and "RightButtonDown" or "RightButtonUp")
- frame:RegisterForClicks("LeftButtonUp", "RightButtonUp")
E:Size(frame, frame.UNIT_WIDTH, frame.UNIT_HEIGHT)
E:Size(_G[frame:GetName().."Mover"], frame:GetWidth(), frame:GetHeight())
@@ -72,13 +76,19 @@ function UF:Update_TargetTargetFrame(frame, db)
UF:Configure_Portrait(frame)
+ -- UF:Configure_Threat(frame)
+
UF:EnableDisable_Auras(frame)
UF:Configure_Auras(frame, "Buffs")
UF:Configure_Auras(frame, "Debuffs")
+ UF:Configure_Range(frame)
+
UF:Configure_RaidIcon(frame)
- E:SetMoverSnapOffset(frame:GetName().."Mover", -(12 + self.db["units"].player.castbar.height))
+ UF:Configure_CustomTexts(frame)
+
+ E:SetMoverSnapOffset(frame:GetName().."Mover", -(12 + self.db.units.player.castbar.height))
frame:UpdateAllElements("ElvUI_UpdateAllElements")
end
diff --git a/ElvUI/Modules/UnitFrames/Units/TargetTargetTarget.lua b/ElvUI/Modules/UnitFrames/Units/TargetTargetTarget.lua
index 41e0960..2309e85 100644
--- a/ElvUI/Modules/UnitFrames/Units/TargetTargetTarget.lua
+++ b/ElvUI/Modules/UnitFrames/Units/TargetTargetTarget.lua
@@ -1,6 +1,8 @@
-local E, L, V, P, G = unpack(ElvUI)
-local UF = E:GetModule("UnitFrames")
+local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local UF = E:GetModule("UnitFrames");
+--Cache global variables
+--Lua functions
local _G = _G
local ns = oUF
@@ -24,7 +26,7 @@ function UF:Construct_TargetTargetTargetFrame(frame)
frame.customTexts = {}
E:Point(frame, "BOTTOM", E.UIParent, "BOTTOM", 0, 160)
- E:CreateMover(frame, frame:GetName().."Mover", L["TargetTargetTarget Frame"], nil, nil, nil, "ALL,SOLO", nil, "unitframe,targettargettarget,generalGroup")
+ E:CreateMover(frame, frame:GetName().."Mover", L["TargetTargetTarget Frame"], nil, nil, nil, "ALL,SOLO")
frame.unitframeType = "targettargettarget"
end
@@ -60,7 +62,7 @@ function UF:Update_TargetTargetTargetFrame(frame, db)
frame.colors = ElvUF.colors
frame.Portrait = frame.Portrait or (db.portrait.style == "2D" and frame.Portrait2D or frame.Portrait3D)
- frame:RegisterForClicks(self.db.targetOnMouseDown and "LeftButtonDown" or "RightButtonDown" or "LeftButtonUp" or "RightButtonUp")
+ frame:RegisterForClicks(self.db.targetOnMouseDown and "LeftButtonDown" or "LeftButtonUp", self.db.targetOnMouseDown and "RightButtonDown" or "RightButtonUp")
E:Size(frame, frame.UNIT_WIDTH, frame.UNIT_HEIGHT)
E:Size(_G[frame:GetName().."Mover"], frame:GetWidth(), frame:GetHeight())
@@ -84,7 +86,7 @@ function UF:Update_TargetTargetTargetFrame(frame, db)
UF:Configure_RaidIcon(frame)
- -- UF:Configure_CustomTexts(frame)
+ UF:Configure_CustomTexts(frame)
E:SetMoverSnapOffset(frame:GetName().."Mover", -(12 + self.db.units.player.castbar.height))
frame:UpdateAllElements("ElvUI_UpdateAllElements")
diff --git a/ElvUI/Settings/Profile.lua b/ElvUI/Settings/Profile.lua
index d24da78..095e9bb 100644
--- a/ElvUI/Settings/Profile.lua
+++ b/ElvUI/Settings/Profile.lua
@@ -647,7 +647,6 @@ P["tooltip"] = {
}
}
---UnitFrame
P["unitframe"] = {
["smoothbars"] = false,
["smoothSpeed"] = 0.3,
@@ -657,9 +656,33 @@ P["unitframe"] = {
["fontOutline"] = "MONOCHROMEOUTLINE",
["OORAlpha"] = 0.35,
["debuffHighlighting"] = "FILL",
+ ["smartRaidFilter"] = true,
["targetOnMouseDown"] = false,
["auraBlacklistModifier"] = "SHIFT",
["thinBorders"] = false,
+ ["cooldown"] = {
+ ["threshold"] = 4,
+ ["override"] = true,
+ ["reverse"] = false,
+ ["expiringColor"] = {r = 1, g = 0, b = 0},
+ ["secondsColor"] = {r = 1, g = 1, b = 1},
+ ["minutesColor"] = {r = 1, g = 1, b = 1},
+ ["hoursColor"] = {r = 1, g = 1, b = 1},
+ ["daysColor"] = {r = 1, g = 1, b = 1},
+
+ ["checkSeconds"] = false,
+ ["hhmmColor"] = {r = 1, g = 1, b = 1},
+ ["mmssColor"] = {r = 1, g = 1, b = 1},
+ ["hhmmThreshold"] = -1,
+ ["mmssThreshold"] = -1,
+
+ ["fonts"] = {
+ ["enable"] = false,
+ ["font"] = "PT Sans Narrow",
+ ["fontOutline"] = "OUTLINE",
+ ["fontSize"] = 18
+ }
+ },
["colors"] = {
["borderColor"] = {r = 0, g = 0, b = 0},
["healthclass"] = false,
@@ -669,6 +692,8 @@ P["unitframe"] = {
["customhealthbackdrop"] = false,
["useDeadBackdrop"] = false,
["classbackdrop"] = false,
+ ["healthmultiplier"] = 0.6,
+ ["bgUseBarTexture"] = false,
["auraBarByType"] = true,
["auraBarTurtle"] = true,
["auraBarTurtleColor"] = {r = 143/255, g = 101/255, b = 158/255},
@@ -676,25 +701,22 @@ P["unitframe"] = {
["transparentPower"] = false,
["transparentCastbar"] = false,
["transparentAurabars"] = false,
- ["castColor"] = {r = .31,g = .31,b = .31},
- ["castNoInterrupt"] = {r = 0.78, g = 0.25, b = 0.25},
+ ["castColor"] = {r = .31, g = .31, b = .31},
["castClassColor"] = false,
["castReactionColor"] = false,
-
["health"] = {r = .31,g = .31,b = .31},
["health_backdrop"] = {r = .8,g = .01,b = .01},
- ["health_backdrop_dead"] = {r = .8,g = .01,b = .01},
+ ["health_backdrop_dead"] = {r = .8, g = .01, b = .01},
["tapped"] = {r = 0.55, g = 0.57, b = 0.61},
["disconnected"] = {r = 0.84, g = 0.75, b = 0.65},
- ["auraBarBuff"] = {r = .31,g = .31,b = .31},
+ ["auraBarBuff"] = {r = .31, g = .31, b = .31},
["auraBarDebuff"] = {r = 0.8, g = 0.1, b = 0.1},
["power"] = {
["MANA"] = {r = 0.31, g = 0.45, b = 0.63},
["RAGE"] = {r = 0.78, g = 0.25, b = 0.25},
["FOCUS"] = {r = 0.71, g = 0.43, b = 0.27},
- ["ENERGY"] = {r = 0.65, g = 0.63, b = 0.35},
- ["RUNIC_POWER"] = {r = 0, g = 0.82, b = 1},
+ ["ENERGY"] = {r = 0.65, g = 0.63, b = 0.35}
},
["reaction"] = {
["BAD"] = {r = 0.78, g = 0.25, b = 0.25},
@@ -707,12 +729,14 @@ P["unitframe"] = {
["maxOverflow"] = 0,
},
["classResources"] = {
- ["bgColor"] = {r = 0.1,g = 0.1,b = 0.1, a = 1},
+ ["bgColor"] = {r = 0.1, g = 0.1, b = 0.1, a = 1},
["comboPoints"] = {
[1] = {r = 0.69, g = 0.31, b = 0.31},
- [2] = {r = 0.65, g = 0.63, b = 0.34},
- [3] = {r = 0.33, g = 0.59, b = 0.33},
- },
+ [2] = {r = 0.69, g = 0.31, b = 0.31},
+ [3] = {r = 0.65, g = 0.63, b = 0.35},
+ [4] = {r = 0.65, g = 0.63, b = 0.35},
+ [5] = {r = 0.33, g = 0.59, b = 0.33}
+ }
},
["frameGlow"] = {
["mainGlow"] = {
@@ -721,19 +745,24 @@ P["unitframe"] = {
["color"] = {r = 1, g = 1, b = 1, a = 1}
},
["targetGlow"] = {
- ["enable"] = false,
- ["class"] = false,
+ ["enable"] = true,
+ ["class"] = true,
["color"] = {r = 1, g = 1, b = 1, a = 1}
},
["mouseoverGlow"] = {
- ["enable"] = false,
+ ["enable"] = true,
["class"] = false,
["texture"] = "ElvUI Blank",
["color"] = {r = 1, g = 1, b = 1, a = 0.1}
}
},
+ ["debuffHighlight"] = {
+ ["Magic"] = {r = 0.2, g = 0.6, b = 1, a = 0.45},
+ ["Curse"] = {r = 0.6, g = 0, b = 1, a = 0.45},
+ ["Disease"] = {r = 0.6, g = 0.4, b = 0, a = 0.45},
+ ["Poison"] = {r = 0, g = 0.6, b = 0, a = 0.45}
+ }
},
-
["units"] = {
["player"] = {
["enable"] = true,
@@ -743,19 +772,17 @@ P["unitframe"] = {
["lowmana"] = 30,
["combatfade"] = false,
["healPrediction"] = true,
- ["restIcon"] = true,
- ["combatIcon"] = true,
["threatStyle"] = "GLOW",
["smartAuraPosition"] = "DISABLED",
["colorOverride"] = "USE_DEFAULT",
["disableMouseoverGlow"] = false,
- ["disableTargetGlow"] = false,
+ ["disableTargetGlow"] = true,
["health"] = {
["text_format"] = "[healthcolor][health:current-percent]",
["position"] = "LEFT",
["xOffset"] = 2,
["yOffset"] = 0,
- ["attachTextTo"] = "Health",
+ ["attachTextTo"] = "Health"
},
["power"] = {
["enable"] = true,
@@ -775,27 +802,51 @@ P["unitframe"] = {
["useCustomStrata"] = false,
["frameStrata"] = "LOW",
["useCustomLevel"] = false,
- ["frameLevel"] = 1,
+ ["frameLevel"] = 1
},
- ["parent"] = "FRAME",
+ ["parent"] = "FRAME"
},
["infoPanel"] = {
["enable"] = false,
["height"] = 20,
- ["transparent"] = false,
+ ["transparent"] = false
},
["name"] = {
["position"] = "CENTER",
["text_format"] = "",
["xOffset"] = 0,
["yOffset"] = 0,
- ["attachTextTo"] = "Health",
+ ["attachTextTo"] = "Health"
},
["pvp"] = {
["position"] = "BOTTOM",
["text_format"] = "||cFFB04F4F[pvptimer][mouseover]||r",
["xOffset"] = 0,
+ ["yOffset"] = 0
+ },
+ ["RestIcon"] = {
+ ["enable"] = true,
+ ["defaultColor"] = true,
+ ["color"] = {r = 1, g = 1, b = 1, a = 1},
+ ["anchorPoint"] = "TOPLEFT",
+ ["xOffset"] = -3,
+ ["yOffset"] = 6,
+ ["size"] = 22,
+ ["texture"] = "DEFAULT"
+ },
+ ["raidRoleIcons"] = {
+ ["enable"] = true,
+ ["position"] = "TOPLEFT"
+ },
+ ["CombatIcon"] = {
+ ["enable"] = true,
+ ["defaultColor"] = true,
+ ["color"] = {r = 1, g = 0.2, b = 0.2, a = 1},
+ ["anchorPoint"] = "CENTER",
+ ["xOffset"] = 0,
["yOffset"] = 0,
+ ["size"] = 20,
+ ["texture"] = "DEFAULT"
},
["pvpIcon"] = {
["enable"] = false,
@@ -808,7 +859,7 @@ P["unitframe"] = {
["enable"] = false,
["width"] = 45,
["overlay"] = false,
- ["style"] = "3D",
+ ["style"] = "3D"
},
["buffs"] = {
["enable"] = false,
@@ -822,9 +873,12 @@ P["unitframe"] = {
["clickThrough"] = false,
["minDuration"] = 0,
["maxDuration"] = 0,
- ["priority"] = "Blacklist,Personal,PlayerBuffs,Whitelist,blockNoDuration,nonPersonal", --Player Buffs
+ ["useBlacklist"] = true,
+ ["useWhitelist"] = true,
+ ["noDuration"] = true,
+ ["useFilter"] = "",
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["debuffs"] = {
["enable"] = true,
@@ -838,40 +892,56 @@ P["unitframe"] = {
["clickThrough"] = false,
["minDuration"] = 0,
["maxDuration"] = 0,
- ["priority"] = "Blacklist,Personal,nonPersonal", --Player Debuffs
+ ["useBlacklist"] = true,
+ ["useWhitelist"] = false,
+ ["noDuration"] = false,
+ ["useFilter"] = "",
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["castbar"] = {
["enable"] = true,
["width"] = 270,
["height"] = 18,
["icon"] = true,
+ ["latency"] = true,
["format"] = "REMAINING",
+ ["ticks"] = true,
["spark"] = true,
+ ["displayTarget"] = false,
["iconSize"] = 42,
["iconAttached"] = true,
["insideInfoPanel"] = true,
["iconAttachedTo"] = "Frame",
["iconPosition"] = "LEFT",
["iconXOffset"] = -10,
- ["iconYOffset"] = 0
+ ["iconYOffset"] = 0,
+ ["tickWidth"] = 1,
+ ["tickColor"] = {r = 0, g = 0, b = 0, a = 0.8},
+ ["strataAndLevel"] = {
+ ["useCustomStrata"] = false,
+ ["frameStrata"] = "LOW",
+ ["useCustomLevel"] = false,
+ ["frameLevel"] = 1
+ }
},
["classbar"] = {
["enable"] = true,
["fill"] = "fill",
["height"] = 10,
+ ["autoHide"] = false,
+ ["additionalPowerText"] = true,
["detachFromFrame"] = false,
["detachedWidth"] = 250,
- ["autoHide"] = false,
["parent"] = "FRAME",
["verticalOrientation"] = false,
- ["additionalPowerText"] = true,
+ ["orientation"] = "HORIZONTAL",
+ ["spacing"] = 5,
["strataAndLevel"] = {
["useCustomStrata"] = false,
["frameStrata"] = "LOW",
["useCustomLevel"] = false,
- ["frameLevel"] = 1,
+ ["frameLevel"] = 1
},
},
["aurabar"] = {
@@ -879,15 +949,19 @@ P["unitframe"] = {
["anchorPoint"] = "ABOVE",
["attachTo"] = "DEBUFFS",
["maxBars"] = 6,
+ ["useBlacklist"] = true,
+ ["useWhitelist"] = true,
+ ["noDuration"] = true,
["minDuration"] = 0,
["maxDuration"] = 120,
- ["priority"] = "Blacklist,blockNoDuration,Personal,RaidDebuffs,PlayerBuffs", --Player AuraBars
+ ["useFilter"] = "",
["friendlyAuraType"] = "HELPFUL",
["enemyAuraType"] = "HARMFUL",
["height"] = 20,
["sort"] = "TIME_REMAINING",
["uniformThreshold"] = 0,
["yOffset"] = 0,
+ ["spacing"] = 0,
},
["raidicon"] = {
["enable"] = true,
@@ -895,8 +969,8 @@ P["unitframe"] = {
["attachTo"] = "TOP",
["attachToObject"] = "Frame",
["xOffset"] = 0,
- ["yOffset"] = 8,
- },
+ ["yOffset"] = 8
+ }
},
["target"] = {
["enable"] = true,
@@ -916,7 +990,7 @@ P["unitframe"] = {
["position"] = "RIGHT",
["xOffset"] = -2,
["yOffset"] = 0,
- ["attachTextTo"] = "Health",
+ ["attachTextTo"] = "Health"
},
["power"] = {
["enable"] = true,
@@ -935,21 +1009,21 @@ P["unitframe"] = {
["useCustomStrata"] = false,
["frameStrata"] = "LOW",
["useCustomLevel"] = false,
- ["frameLevel"] = 1,
+ ["frameLevel"] = 1
},
- ["parent"] = "FRAME",
+ ["parent"] = "FRAME"
},
["infoPanel"] = {
["enable"] = false,
["height"] = 20,
- ["transparent"] = false,
+ ["transparent"] = false
},
["name"] = {
["position"] = "CENTER",
["text_format"] = "[namecolor][name:medium] [difficultycolor][smartlevel] [shortclassification]",
["xOffset"] = 0,
["yOffset"] = 0,
- ["attachTextTo"] = "Health",
+ ["attachTextTo"] = "Health"
},
["pvpIcon"] = {
["enable"] = false,
@@ -962,7 +1036,7 @@ P["unitframe"] = {
["enable"] = false,
["width"] = 45,
["overlay"] = false,
- ["style"] = "3D",
+ ["style"] = "3D"
},
["buffs"] = {
["enable"] = true,
@@ -972,13 +1046,16 @@ P["unitframe"] = {
["anchorPoint"] = "TOPRIGHT",
["fontSize"] = 10,
["clickThrough"] = false,
+ ["minDuration"] = 0,
+ ["maxDuration"] = 0,
["sortMethod"] = "TIME_REMAINING",
["sortDirection"] = "DESCENDING",
- ["minDuration"] = 0,
- ["maxDuration"] = 300,
- ["priority"] = "Blacklist,Personal,nonPersonal", --Target Buffs
+ ["useBlacklist"] = {friendly = true, enemy = true},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = false, enemy = false},
+ ["useFilter"] = "",
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["debuffs"] = {
["enable"] = true,
@@ -988,13 +1065,16 @@ P["unitframe"] = {
["anchorPoint"] = "TOPRIGHT",
["fontSize"] = 10,
["clickThrough"] = false,
- ["sortMethod"] = "TIME_REMAINING",
- ["sortDirection"] = "DESCENDING",
["minDuration"] = 0,
["maxDuration"] = 300,
- ["priority"] = "Blacklist,Personal,RaidDebuffs,CCDebuffs,Friendly:Dispellable", --Target Debuffs
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["useBlacklist"] = {friendly = true, enemy = true},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = false, enemy = false},
+ ["useFilter"] = "",
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["castbar"] = {
["enable"] = true,
@@ -1010,29 +1090,48 @@ P["unitframe"] = {
["iconPosition"] = "LEFT",
["iconXOffset"] = -10,
["iconYOffset"] = 0,
+ ["strataAndLevel"] = {
+ ["useCustomStrata"] = false,
+ ["frameStrata"] = "LOW",
+ ["useCustomLevel"] = false,
+ ["frameLevel"] = 1
+ }
},
["combobar"] = {
["enable"] = true,
["fill"] = "fill",
["height"] = 10,
+ ["autoHide"] = true,
["detachFromFrame"] = false,
["detachedWidth"] = 250,
- ["autoHide"] = true
+ ["parent"] = "FRAME",
+ ["orientation"] = "HORIZONTAL",
+ ["spacing"] = 5,
+ ["strataAndLevel"] = {
+ ["useCustomStrata"] = false,
+ ["frameStrata"] = "LOW",
+ ["useCustomLevel"] = false,
+ ["frameLevel"] = 1
+ }
},
["aurabar"] = {
["enable"] = true,
["anchorPoint"] = "ABOVE",
["attachTo"] = "DEBUFFS",
["maxBars"] = 6,
+ ["useBlacklist"] = {friendly = true, enemy = true},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = true, enemy = true},
["minDuration"] = 0,
- ["maxDuration"] = 120,
- ["priority"] = "Blacklist,Personal,blockNoDuration,PlayerBuffs,RaidDebuffs", --Target AuraBars
+ ["maxDuration"] = 300,
+ ["useFilter"] = "",
["friendlyAuraType"] = "HELPFUL",
["enemyAuraType"] = "HARMFUL",
["height"] = 20,
["sort"] = "TIME_REMAINING",
["uniformThreshold"] = 0,
["yOffset"] = 0,
+ ["spacing"] = 0,
},
["raidicon"] = {
["enable"] = true,
@@ -1040,7 +1139,7 @@ P["unitframe"] = {
["attachTo"] = "TOP",
["attachToObject"] = "Frame",
["xOffset"] = 0,
- ["yOffset"] = 8,
+ ["yOffset"] = 8
},
["GPSArrow"] = {
["enable"] = false,
@@ -1048,8 +1147,8 @@ P["unitframe"] = {
["xOffset"] = 0,
["yOffset"] = 0,
["onMouseOver"] = true,
- ["outOfRange"] = true,
- },
+ ["outOfRange"] = true
+ }
},
["targettarget"] = {
["enable"] = true,
@@ -1066,7 +1165,7 @@ P["unitframe"] = {
["text_format"] = "",
["position"] = "RIGHT",
["xOffset"] = -2,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["power"] = {
["enable"] = true,
@@ -1077,25 +1176,25 @@ P["unitframe"] = {
["position"] = "LEFT",
["hideonnpc"] = false,
["xOffset"] = 2,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["infoPanel"] = {
["enable"] = false,
["height"] = 14,
- ["transparent"] = false,
+ ["transparent"] = false
},
["name"] = {
["position"] = "CENTER",
["text_format"] = "[namecolor][name:medium]",
["xOffset"] = 0,
["yOffset"] = 0,
- ["attachTextTo"] = "Health",
+ ["attachTextTo"] = "Health"
},
["portrait"] = {
["enable"] = false,
["width"] = 45,
["overlay"] = false,
- ["style"] = "3D",
+ ["style"] = "3D"
},
["buffs"] = {
["enable"] = false,
@@ -1105,13 +1204,16 @@ P["unitframe"] = {
["anchorPoint"] = "BOTTOMLEFT",
["fontSize"] = 10,
["clickThrough"] = false,
- ["sortMethod"] = "TIME_REMAINING",
- ["sortDirection"] = "DESCENDING",
["minDuration"] = 0,
["maxDuration"] = 300,
- ["priority"] = "Blacklist,Personal,PlayerBuffs,Dispellable", --TargetTarget Buffs
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["useBlacklist"] = {friendly = true, enemy = true},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = true, enemy = false},
+ ["useFilter"] = "",
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["debuffs"] = {
["enable"] = true,
@@ -1121,13 +1223,16 @@ P["unitframe"] = {
["anchorPoint"] = "BOTTOMRIGHT",
["fontSize"] = 10,
["clickThrough"] = false,
- ["sortMethod"] = "TIME_REMAINING",
- ["sortDirection"] = "DESCENDING",
["minDuration"] = 0,
["maxDuration"] = 300,
- ["priority"] = "Blacklist,Personal,RaidDebuffs,CCDebuffs,Dispellable,Whitelist", --TargetTarget Debuffs
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["useBlacklist"] = {friendly = true, enemy = true},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = false, enemy = false},
+ ["useFilter"] = "",
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["raidicon"] = {
["enable"] = true,
@@ -1135,8 +1240,8 @@ P["unitframe"] = {
["attachTo"] = "TOP",
["attachToObject"] = "Frame",
["xOffset"] = 0,
- ["yOffset"] = 8,
- },
+ ["yOffset"] = 8
+ }
},
["targettargettarget"] = {
["enable"] = false,
@@ -1153,7 +1258,7 @@ P["unitframe"] = {
["text_format"] = "",
["position"] = "RIGHT",
["xOffset"] = -2,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["power"] = {
["enable"] = true,
@@ -1164,24 +1269,24 @@ P["unitframe"] = {
["position"] = "LEFT",
["hideonnpc"] = false,
["xOffset"] = 2,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["infoPanel"] = {
["enable"] = false,
["height"] = 12,
- ["transparent"] = false,
+ ["transparent"] = false
},
["name"] = {
["position"] = "CENTER",
["text_format"] = "[namecolor][name:medium]",
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["portrait"] = {
["enable"] = false,
["width"] = 45,
["overlay"] = false,
- ["style"] = "3D",
+ ["style"] = "3D"
},
["buffs"] = {
["enable"] = false,
@@ -1191,11 +1296,14 @@ P["unitframe"] = {
["anchorPoint"] = "BOTTOMLEFT",
["fontSize"] = 10,
["clickThrough"] = false,
- ["sortMethod"] = "TIME_REMAINING",
- ["sortDirection"] = "DESCENDING",
["minDuration"] = 0,
["maxDuration"] = 300,
- ["priority"] = "Blacklist,Personal,nonPersonal", --TargetTargetTarget Buffs
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["useBlacklist"] = {friendly = true, enemy = true},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = true, enemy = false},
+ ["useFilter"] = "",
["xOffset"] = 0,
["yOffset"] = 0,
},
@@ -1207,13 +1315,16 @@ P["unitframe"] = {
["anchorPoint"] = "BOTTOMRIGHT",
["fontSize"] = 10,
["clickThrough"] = false,
- ["sortMethod"] = "TIME_REMAINING",
- ["sortDirection"] = "DESCENDING",
["minDuration"] = 0,
["maxDuration"] = 300,
- ["priority"] = "Blacklist,Personal,nonPersonal", --TargetTargetTarget Debuffs
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["useBlacklist"] = {friendly = true, enemy = true},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = false, enemy = false},
+ ["useFilter"] = "",
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["raidicon"] = {
["enable"] = true,
@@ -1221,8 +1332,244 @@ P["unitframe"] = {
["attachTo"] = "TOP",
["attachToObject"] = "Frame",
["xOffset"] = 0,
- ["yOffset"] = 8,
+ ["yOffset"] = 8
+ }
+ },
+ ["focus"] = {
+ ["enable"] = true,
+ ["rangeCheck"] = true,
+ ["threatStyle"] = "GLOW",
+ ["orientation"] = "MIDDLE",
+ ["smartAuraPosition"] = "DISABLED",
+ ["colorOverride"] = "USE_DEFAULT",
+ ["width"] = 190,
+ ["height"] = 36,
+ ["disableMouseoverGlow"] = false,
+ ["disableTargetGlow"] = false,
+ ["healPrediction"] = true,
+ ["health"] = {
+ ["text_format"] = "",
+ ["position"] = "RIGHT",
+ ["xOffset"] = -2,
+ ["yOffset"] = 0,
+ ["attachTextTo"] = "Health"
},
+ ["power"] = {
+ ["enable"] = true,
+ ["text_format"] = "",
+ ["width"] = "fill",
+ ["height"] = 7,
+ ["offset"] = 0,
+ ["position"] = "LEFT",
+ ["hideonnpc"] = false,
+ ["xOffset"] = 2,
+ ["yOffset"] = 0,
+ ["attachTextTo"] = "Health"
+ },
+ ["infoPanel"] = {
+ ["enable"] = false,
+ ["height"] = 14,
+ ["transparent"] = false
+ },
+ ["name"] = {
+ ["position"] = "CENTER",
+ ["text_format"] = "[namecolor][name:medium]",
+ ["xOffset"] = 0,
+ ["yOffset"] = 0,
+ ["attachTextTo"] = "Health"
+ },
+ ["portrait"] = {
+ ["enable"] = false,
+ ["width"] = 45,
+ ["overlay"] = false,
+ ["style"] = "3D"
+ },
+ ["buffs"] = {
+ ["enable"] = false,
+ ["perrow"] = 7,
+ ["numrows"] = 1,
+ ["attachTo"] = "FRAME",
+ ["anchorPoint"] = "BOTTOMLEFT",
+ ["fontSize"] = 10,
+ ["clickThrough"] = false,
+ ["minDuration"] = 0,
+ ["maxDuration"] = 300,
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["useBlacklist"] = {friendly = true, enemy = true},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = true, enemy = false},
+ ["useFilter"] = "",
+ ["xOffset"] = 0,
+ ["yOffset"] = 0
+ },
+ ["debuffs"] = {
+ ["enable"] = true,
+ ["perrow"] = 5,
+ ["numrows"] = 1,
+ ["attachTo"] = "FRAME",
+ ["anchorPoint"] = "TOPRIGHT",
+ ["fontSize"] = 10,
+ ["clickThrough"] = false,
+ ["minDuration"] = 0,
+ ["maxDuration"] = 300,
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["useBlacklist"] = {friendly = true, enemy = true},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = false, enemy = false},
+ ["useFilter"] = "",
+ ["xOffset"] = 0,
+ ["yOffset"] = 0
+ },
+ ["castbar"] = {
+ ["enable"] = true,
+ ["width"] = 190,
+ ["height"] = 18,
+ ["icon"] = true,
+ ["format"] = "REMAINING",
+ ["spark"] = true,
+ ["iconSize"] = 32,
+ ["iconAttached"] = true,
+ ["insideInfoPanel"] = true,
+ ["iconAttachedTo"] = "Frame",
+ ["iconPosition"] = "LEFT",
+ ["iconXOffset"] = -10,
+ ["iconYOffset"] = 0,
+ ["strataAndLevel"] = {
+ ["useCustomStrata"] = false,
+ ["frameStrata"] = "LOW",
+ ["useCustomLevel"] = false,
+ ["frameLevel"] = 1
+ }
+ },
+ ["aurabar"] = {
+ ["enable"] = false,
+ ["anchorPoint"] = "ABOVE",
+ ["attachTo"] = "DEBUFFS",
+ ["maxBars"] = 3,
+ ["useBlacklist"] = {friendly = true, enemy = true},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = false, enemy = false},
+ ["minDuration"] = 0,
+ ["maxDuration"] = 120,
+ ["useFilter"] = "",
+ ["friendlyAuraType"] = "HELPFUL",
+ ["enemyAuraType"] = "HARMFUL",
+ ["height"] = 20,
+ ["sort"] = "TIME_REMAINING",
+ ["uniformThreshold"] = 0,
+ ["yOffset"] = 0,
+ ["spacing"] = 0,
+ },
+ ["raidicon"] = {
+ ["enable"] = true,
+ ["size"] = 18,
+ ["attachTo"] = "TOP",
+ ["attachToObject"] = "Frame",
+ ["xOffset"] = 0,
+ ["yOffset"] = 8
+ },
+ ["GPSArrow"] = {
+ ["enable"] = true,
+ ["size"] = 45,
+ ["xOffset"] = 0,
+ ["yOffset"] = 0,
+ ["onMouseOver"] = true,
+ ["outOfRange"] = true
+ }
+ },
+ ["focustarget"] = {
+ ["enable"] = false,
+ ["rangeCheck"] = true,
+ ["threatStyle"] = "NONE",
+ ["orientation"] = "MIDDLE",
+ ["smartAuraPosition"] = "DISABLED",
+ ["colorOverride"] = "USE_DEFAULT",
+ ["width"] = 190,
+ ["height"] = 26,
+ ["disableMouseoverGlow"] = false,
+ ["disableTargetGlow"] = false,
+ ["health"] = {
+ ["text_format"] = "",
+ ["position"] = "RIGHT",
+ ["xOffset"] = -2,
+ ["yOffset"] = 0
+ },
+ ["power"] = {
+ ["enable"] = false,
+ ["text_format"] = "",
+ ["width"] = "fill",
+ ["height"] = 7,
+ ["offset"] = 0,
+ ["position"] = "LEFT",
+ ["hideonnpc"] = false,
+ ["xOffset"] = 2,
+ ["yOffset"] = 0
+ },
+ ["infoPanel"] = {
+ ["enable"] = false,
+ ["height"] = 12,
+ ["transparent"] = false
+ },
+ ["name"] = {
+ ["position"] = "CENTER",
+ ["text_format"] = "[namecolor][name:medium]",
+ ["yOffset"] = 0,
+ ["xOffset"] = 0,
+ },
+ ["portrait"] = {
+ ["enable"] = false,
+ ["width"] = 45,
+ ["overlay"] = false,
+ ["style"] = "3D"
+ },
+ ["buffs"] = {
+ ["enable"] = false,
+ ["perrow"] = 7,
+ ["numrows"] = 1,
+ ["attachTo"] = "FRAME",
+ ["anchorPoint"] = "BOTTOMLEFT",
+ ["fontSize"] = 10,
+ ["clickThrough"] = false,
+ ["minDuration"] = 0,
+ ["maxDuration"] = 300,
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["useBlacklist"] = {friendly = true, enemy = true},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = true, enemy = false},
+ ["useFilter"] = "",
+ ["xOffset"] = 0,
+ ["yOffset"] = 0
+ },
+ ["debuffs"] = {
+ ["enable"] = false,
+ ["perrow"] = 5,
+ ["numrows"] = 1,
+ ["attachTo"] = "FRAME",
+ ["anchorPoint"] = "BOTTOMRIGHT",
+ ["fontSize"] = 10,
+ ["clickThrough"] = false,
+ ["minDuration"] = 0,
+ ["maxDuration"] = 300,
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["useBlacklist"] = {friendly = true, enemy = true},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = false, enemy = false},
+ ["useFilter"] = "",
+ ["xOffset"] = 0,
+ ["yOffset"] = 0
+ },
+ ["raidicon"] = {
+ ["enable"] = true,
+ ["size"] = 18,
+ ["attachTo"] = "TOP",
+ ["attachToObject"] = "Frame",
+ ["xOffset"] = 0,
+ ["yOffset"] = 8
+ }
},
["pet"] = {
["enable"] = true,
@@ -1240,7 +1587,7 @@ P["unitframe"] = {
["text_format"] = "",
["position"] = "RIGHT",
["yOffset"] = 0,
- ["xOffset"] = -2,
+ ["xOffset"] = -2
},
["power"] = {
["enable"] = true,
@@ -1251,24 +1598,29 @@ P["unitframe"] = {
["position"] = "LEFT",
["hideonnpc"] = false,
["yOffset"] = 0,
- ["xOffset"] = 2,
+ ["xOffset"] = 2
},
["infoPanel"] = {
["enable"] = false,
["height"] = 12,
- ["transparent"] = false,
+ ["transparent"] = false
},
["name"] = {
["position"] = "CENTER",
["text_format"] = "[namecolor][name:medium]",
["yOffset"] = 0,
- ["xOffset"] = 0,
+ ["xOffset"] = 0
},
["portrait"] = {
["enable"] = false,
["width"] = 45,
["overlay"] = false,
- ["style"] = "3D",
+ ["style"] = "3D"
+ },
+ ["happiness"] = {
+ ["enable"] = false,
+ ["autoHide"] = false,
+ ["width"] = 10,
},
["buffs"] = {
["enable"] = false,
@@ -1282,9 +1634,12 @@ P["unitframe"] = {
["clickThrough"] = false,
["minDuration"] = 0,
["maxDuration"] = 300,
- ["priority"] = "Blacklist,Personal,PlayerBuffs", --Pet Buffs
+ ["useBlacklist"] = true,
+ ["useWhitelist"] = false,
+ ["noDuration"] = true,
+ ["useFilter"] = "",
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["debuffs"] = {
["enable"] = false,
@@ -1298,14 +1653,36 @@ P["unitframe"] = {
["clickThrough"] = false,
["minDuration"] = 0,
["maxDuration"] = 300,
- ["priority"] = "Blacklist,RaidDebuffs,Dispellable,Whitelist", --Pet Debuffs
+ ["useBlacklist"] = true,
+ ["useWhitelist"] = false,
+ ["noDuration"] = false,
+ ["useFilter"] = "",
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
+ },
+ ["aurabar"] = {
+ ["enable"] = false,
+ ["anchorPoint"] = "ABOVE",
+ ["attachTo"] = "FRAME",
+ ["maxBars"] = 6,
+ ["useBlacklist"] = {friendly = true, enemy = true},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = true, enemy = true},
+ ["minDuration"] = 0,
+ ["maxDuration"] = 120,
+ ["useFilter"] = "",
+ ["friendlyAuraType"] = "HELPFUL",
+ ["enemyAuraType"] = "HARMFUL",
+ ["height"] = 20,
+ ["sort"] = "TIME_REMAINING",
+ ["uniformThreshold"] = 0,
+ ["yOffset"] = 2,
+ ["spacing"] = 2
},
["buffIndicator"] = {
["enable"] = true,
["size"] = 8,
- ["fontSize"] = 10,
+ ["fontSize"] = 10
},
["castbar"] = {
["enable"] = true,
@@ -1321,7 +1698,13 @@ P["unitframe"] = {
["iconPosition"] = "LEFT",
["iconXOffset"] = -10,
["iconYOffset"] = 0,
- },
+ ["strataAndLevel"] = {
+ ["useCustomStrata"] = false,
+ ["frameStrata"] = "LOW",
+ ["useCustomLevel"] = false,
+ ["frameLevel"] = 1
+ }
+ }
},
["pettarget"] = {
["enable"] = false,
@@ -1338,7 +1721,7 @@ P["unitframe"] = {
["text_format"] = "",
["position"] = "RIGHT",
["yOffset"] = 0,
- ["xOffset"] = -2,
+ ["xOffset"] = -2
},
["power"] = {
["enable"] = false,
@@ -1349,24 +1732,24 @@ P["unitframe"] = {
["position"] = "LEFT",
["hideonnpc"] = false,
["yOffset"] = 0,
- ["xOffset"] = 2,
+ ["xOffset"] = 2
},
["infoPanel"] = {
["enable"] = false,
["height"] = 12,
- ["transparent"] = false,
+ ["transparent"] = false
},
["name"] = {
["position"] = "CENTER",
["text_format"] = "[namecolor][name:medium]",
["yOffset"] = 0,
- ["xOffset"] = 0,
+ ["xOffset"] = 0
},
["portrait"] = {
["enable"] = false,
["width"] = 45,
["overlay"] = false,
- ["style"] = "3D",
+ ["style"] = "3D"
},
["buffs"] = {
["enable"] = false,
@@ -1376,13 +1759,16 @@ P["unitframe"] = {
["anchorPoint"] = "BOTTOMLEFT",
["fontSize"] = 10,
["clickThrough"] = false,
- ["sortMethod"] = "TIME_REMAINING",
- ["sortDirection"] = "DESCENDING",
["minDuration"] = 0,
["maxDuration"] = 300,
- ["priority"] = "Blacklist,PlayerBuffs,CastByUnit,Whitelist", --PetTarget Buffs
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["useBlacklist"] = {friendly = true, enemy = true},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = true, enemy = false},
+ ["useFilter"] = "",
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["debuffs"] = {
["enable"] = false,
@@ -1392,21 +1778,143 @@ P["unitframe"] = {
["anchorPoint"] = "BOTTOMRIGHT",
["fontSize"] = 10,
["clickThrough"] = false,
- ["sortMethod"] = "TIME_REMAINING",
- ["sortDirection"] = "DESCENDING",
["minDuration"] = 0,
["maxDuration"] = 300,
- ["priority"] = "Blacklist,Personal,RaidDebuffs", --PetTarget Debuffs
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["useBlacklist"] = {friendly = true, enemy = true},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = false, enemy = false},
+ ["useFilter"] = "",
["xOffset"] = 0,
+ ["yOffset"] = 0
+ }
+ },
+ ["arena"] = {
+ ["enable"] = true,
+ ["rangeCheck"] = true,
+ ["growthDirection"] = "DOWN",
+ ["orientation"] = "RIGHT",
+ ["smartAuraPosition"] = "DISABLED",
+ ["spacing"] = 25,
+ ["width"] = 246,
+ ["height"] = 47,
+ ["healPrediction"] = true,
+ ["colorOverride"] = "USE_DEFAULT",
+ ["disableMouseoverGlow"] = false,
+ ["disableTargetGlow"] = false,
+ ["health"] = {
+ ["text_format"] = "[healthcolor][health:current]",
+ ["position"] = "LEFT",
["yOffset"] = 0,
+ ["xOffset"] = 2,
+ ["attachTextTo"] = "Health"
},
+ ["power"] = {
+ ["enable"] = true,
+ ["text_format"] = "[powercolor][power:current]",
+ ["width"] = "fill",
+ ["height"] = 7,
+ ["offset"] = 0,
+ ["attachTextTo"] = "Health",
+ ["position"] = "RIGHT",
+ ["hideonnpc"] = false,
+ ["yOffset"] = 0,
+ ["xOffset"] = -2
+ },
+ ["infoPanel"] = {
+ ["enable"] = false,
+ ["height"] = 12,
+ ["transparent"] = false
+ },
+ ["name"] = {
+ ["position"] = "CENTER",
+ ["text_format"] = "[namecolor][name:medium]",
+ ["yOffset"] = 0,
+ ["xOffset"] = 0,
+ ["attachTextTo"] = "Health"
+ },
+ ["portrait"] = {
+ ["enable"] = false,
+ ["width"] = 35,
+ ["overlay"] = false,
+ ["style"] = "3D"
+ },
+ ["buffs"] = {
+ ["enable"] = true,
+ ["perrow"] = 3,
+ ["numrows"] = 1,
+ ["attachTo"] = "FRAME",
+ ["anchorPoint"] = "LEFT",
+ ["fontSize"] = 10,
+ ["clickThrough"] = false,
+ ["minDuration"] = 0,
+ ["maxDuration"] = 300,
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["useBlacklist"] = {friendly = false, enemy = false},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = false, enemy = false},
+ ["useFilter"] = "TurtleBuffs",
+ ["sizeOverride"] = 27,
+ ["xOffset"] = 0,
+ ["yOffset"] = 16
+ },
+ ["debuffs"] = {
+ ["enable"] = true,
+ ["perrow"] = 3,
+ ["numrows"] = 1,
+ ["attachTo"] = "FRAME",
+ ["anchorPoint"] = "LEFT",
+ ["fontSize"] = 10,
+ ["clickThrough"] = false,
+ ["minDuration"] = 0,
+ ["maxDuration"] = 300,
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["useBlacklist"] = {friendly = false, enemy = false},
+ ["useWhitelist"] = {friendly = false, enemy = false},
+ ["noDuration"] = {friendly = false, enemy = false},
+ ["useFilter"] = "CCDebuffs",
+ ["sizeOverride"] = 27,
+ ["xOffset"] = 0,
+ ["yOffset"] = -16
+ },
+ ["castbar"] = {
+ ["enable"] = true,
+ ["width"] = 240,
+ ["height"] = 18,
+ ["icon"] = true,
+ ["format"] = "REMAINING",
+ ["spark"] = true,
+ ["iconSize"] = 32,
+ ["iconAttached"] = true,
+ ["insideInfoPanel"] = true,
+ ["iconAttachedTo"] = "Frame",
+ ["iconPosition"] = "LEFT",
+ ["iconXOffset"] = -10,
+ ["iconYOffset"] = 0,
+ ["strataAndLevel"] = {
+ ["useCustomStrata"] = false,
+ ["frameStrata"] = "LOW",
+ ["useCustomLevel"] = false,
+ ["frameLevel"] = 1
+ }
+ },
+ ["pvpTrinket"] = {
+ ["enable"] = true,
+ ["position"] = "RIGHT",
+ ["size"] = 46,
+ ["xOffset"] = 1,
+ ["yOffset"] = 0
+ }
},
["party"] = {
["enable"] = true,
["rangeCheck"] = true,
["threatStyle"] = "GLOW",
["orientation"] = "LEFT",
- ["visibility"] = "[@raid6,exists][nogroup] hide;show",
+ ["visibility"] = "[target=raid6,exists][nogroup] hide;show",
["growthDirection"] = "UP_RIGHT",
["horizontalSpacing"] = 0,
["verticalSpacing"] = 3,
@@ -1422,6 +1930,7 @@ P["unitframe"] = {
["colorOverride"] = "USE_DEFAULT",
["width"] = 184,
["height"] = 54,
+ ["groupSpacing"] = 0,
["disableMouseoverGlow"] = false,
["disableTargetGlow"] = false,
["health"] = {
@@ -1431,7 +1940,7 @@ P["unitframe"] = {
["attachTextTo"] = "Health",
["frequentUpdates"] = false,
["yOffset"] = 0,
- ["xOffset"] = 2,
+ ["xOffset"] = 2
},
["power"] = {
["enable"] = true,
@@ -1443,29 +1952,29 @@ P["unitframe"] = {
["position"] = "RIGHT",
["hideonnpc"] = false,
["yOffset"] = 0,
- ["xOffset"] = -2,
+ ["xOffset"] = -2
},
["infoPanel"] = {
["enable"] = false,
["height"] = 15,
- ["transparent"] = false,
+ ["transparent"] = false
},
["name"] = {
["position"] = "CENTER",
["attachTextTo"] = "Health",
["text_format"] = "[namecolor][name:medium] [difficultycolor][smartlevel]",
["yOffset"] = 0,
- ["xOffset"] = 0,
+ ["xOffset"] = 0
},
["portrait"] = {
["enable"] = false,
["width"] = 45,
["overlay"] = false,
- ["style"] = "3D",
+ ["style"] = "3D"
},
["buffs"] = {
["enable"] = false,
- ["perrow"] = 4,
+ ["perrow"] = 3,
["numrows"] = 1,
["attachTo"] = "FRAME",
["anchorPoint"] = "LEFT",
@@ -1476,13 +1985,16 @@ P["unitframe"] = {
["clickThrough"] = false,
["minDuration"] = 0,
["maxDuration"] = 300,
- ["priority"] = "Blacklist,TurtleBuffs", --Party Buffs
+ ["useBlacklist"] = true,
+ ["useWhitelist"] = false,
+ ["noDuration"] = true,
+ ["useFilter"] = "",
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["debuffs"] = {
["enable"] = true,
- ["perrow"] = 4,
+ ["perrow"] = 3,
["numrows"] = 1,
["attachTo"] = "FRAME",
["anchorPoint"] = "RIGHT",
@@ -1493,21 +2005,23 @@ P["unitframe"] = {
["clickThrough"] = false,
["minDuration"] = 0,
["maxDuration"] = 300,
- ["priority"] = "Blacklist,RaidDebuffs,CCDebuffs,Dispellable,Whitelist", --Party Debuffs
+ ["useBlacklist"] = true,
+ ["useWhitelist"] = false,
+ ["noDuration"] = false,
+ ["useFilter"] = "",
["xOffset"] = 0,
["yOffset"] = 0,
- ["sizeOverride"] = 52,
+ ["sizeOverride"] = 52
},
["buffIndicator"] = {
["enable"] = true,
["size"] = 8,
["fontSize"] = 10,
- ["profileSpecific"] = false,
+ ["profileSpecific"] = false
},
["rdebuffs"] = {
["enable"] = false,
["showDispellableDebuff"] = true,
- ["onlyMatchSpellID"] = true,
["fontSize"] = 10,
["font"] = "Homespun",
["fontOutline"] = "MONOCHROMEOUTLINE",
@@ -1525,19 +2039,32 @@ P["unitframe"] = {
["xOffset"] = 0,
["yOffset"] = 2,
["color"] = {r = 1, g = 0.9, b = 0, a = 1}
- },
+ }
},
- ["roleIcon"] = {
- ["enable"] = true,
- ["position"] = "TOPRIGHT",
- ["attachTo"] = "Health",
- ["xOffset"] = 0,
- ["yOffset"] = 0,
- ["size"] = 15,
+ ["castbar"] = {
+ ["enable"] = false,
+ ["width"] = 256,
+ ["height"] = 18,
+ ["icon"] = true,
+ ["format"] = "REMAINING",
+ ["spark"] = true,
+ ["iconSize"] = 32,
+ ["iconAttached"] = true,
+ ["insideInfoPanel"] = true,
+ ["iconAttachedTo"] = "Frame",
+ ["iconPosition"] = "LEFT",
+ ["iconXOffset"] = -10,
+ ["iconYOffset"] = 0,
+ ["strataAndLevel"] = {
+ ["useCustomStrata"] = false,
+ ["frameStrata"] = "LOW",
+ ["useCustomLevel"] = false,
+ ["frameLevel"] = 1
+ }
},
["raidRoleIcons"] = {
["enable"] = true,
- ["position"] = "TOPLEFT",
+ ["position"] = "TOPLEFT"
},
["petsGroup"] = {
["enable"] = false,
@@ -1550,8 +2077,8 @@ P["unitframe"] = {
["position"] = "CENTER",
["text_format"] = "[namecolor][name:short]",
["yOffset"] = 0,
- ["xOffset"] = 0,
- },
+ ["xOffset"] = 0
+ }
},
["targetsGroup"] = {
["enable"] = false,
@@ -1564,8 +2091,16 @@ P["unitframe"] = {
["position"] = "CENTER",
["text_format"] = "[namecolor][name:short]",
["yOffset"] = 0,
- ["xOffset"] = 0,
+ ["xOffset"] = 0
},
+ ["raidicon"] = {
+ ["enable"] = true,
+ ["size"] = 18,
+ ["attachTo"] = "TOP",
+ ["attachToObject"] = "Frame",
+ ["xOffset"] = 0,
+ ["yOffset"] = 8
+ }
},
["raidicon"] = {
["enable"] = true,
@@ -1573,7 +2108,7 @@ P["unitframe"] = {
["attachTo"] = "TOP",
["attachToObject"] = "Frame",
["xOffset"] = 0,
- ["yOffset"] = 8,
+ ["yOffset"] = 8
},
["GPSArrow"] = {
["enable"] = true,
@@ -1581,7 +2116,7 @@ P["unitframe"] = {
["xOffset"] = 0,
["yOffset"] = 0,
["onMouseOver"] = true,
- ["outOfRange"] = true,
+ ["outOfRange"] = true
},
["readycheckIcon"] = {
["enable"] = true,
@@ -1589,15 +2124,23 @@ P["unitframe"] = {
["attachTo"] = "Health",
["position"] = "BOTTOM",
["xOffset"] = 0,
- ["yOffset"] = 2,
+ ["yOffset"] = 2
},
+ ["resurrectIcon"] = {
+ ["enable"] = true,
+ ["size"] = 30,
+ ["attachTo"] = "CENTER",
+ ["attachToObject"] = "Frame",
+ ["xOffset"] = 0,
+ ["yOffset"] = 0
+ }
},
["raid"] = {
["enable"] = true,
["rangeCheck"] = true,
["threatStyle"] = "GLOW",
["orientation"] = "MIDDLE",
- ["visibility"] = "[@raid6,noexists][@raid26,exists] hide;show",
+ ["visibility"] = "[target=raid6,noexists][target=raid26,exists] hide;show",
["growthDirection"] = "RIGHT_DOWN",
["horizontalSpacing"] = 3,
["verticalSpacing"] = 3,
@@ -1610,6 +2153,7 @@ P["unitframe"] = {
["colorOverride"] = "USE_DEFAULT",
["width"] = 80,
["height"] = 44,
+ ["groupSpacing"] = 0,
["disableMouseoverGlow"] = false,
["disableTargetGlow"] = false,
["health"] = {
@@ -1618,8 +2162,8 @@ P["unitframe"] = {
["orientation"] = "HORIZONTAL",
["attachTextTo"] = "Health",
["frequentUpdates"] = false,
- ["yOffset"] = 2,
- ["xOffset"] = 0,
+ ["yOffset"] = 0,
+ ["xOffset"] = 0
},
["power"] = {
["enable"] = true,
@@ -1629,26 +2173,26 @@ P["unitframe"] = {
["offset"] = 0,
["position"] = "BOTTOMRIGHT",
["hideonnpc"] = false,
- ["yOffset"] = 2,
- ["xOffset"] = -2,
+ ["yOffset"] = 0,
+ ["xOffset"] = -2
},
["infoPanel"] = {
["enable"] = false,
["height"] = 12,
- ["transparent"] = false,
+ ["transparent"] = false
},
["name"] = {
["position"] = "CENTER",
["attachTextTo"] = "Health",
["text_format"] = "[namecolor][name:short]",
["yOffset"] = 0,
- ["xOffset"] = 0,
+ ["xOffset"] = 0
},
["portrait"] = {
["enable"] = false,
["width"] = 45,
["overlay"] = false,
- ["style"] = "3D",
+ ["style"] = "3D"
},
["buffs"] = {
["enable"] = false,
@@ -1663,9 +2207,12 @@ P["unitframe"] = {
["clickThrough"] = false,
["minDuration"] = 0,
["maxDuration"] = 300,
- ["priority"] = "Blacklist,TurtleBuffs", --Raid Buffs
+ ["useBlacklist"] = true,
+ ["useWhitelist"] = false,
+ ["noDuration"] = true,
+ ["useFilter"] = "",
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["debuffs"] = {
["enable"] = false,
@@ -1680,26 +2227,28 @@ P["unitframe"] = {
["clickThrough"] = false,
["minDuration"] = 0,
["maxDuration"] = 300,
- ["priority"] = "Blacklist,RaidDebuffs,CCDebuffs,Dispellable", --Raid Debuffs
+ ["useBlacklist"] = true,
+ ["useWhitelist"] = false,
+ ["noDuration"] = false,
+ ["useFilter"] = "",
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["buffIndicator"] = {
["enable"] = true,
["size"] = 8,
["fontSize"] = 10,
- ["profileSpecific"] = false,
+ ["profileSpecific"] = false
},
["rdebuffs"] = {
["enable"] = true,
["showDispellableDebuff"] = true,
- ["onlyMatchSpellID"] = true,
["fontSize"] = 10,
["font"] = "Homespun",
["fontOutline"] = "MONOCHROMEOUTLINE",
["size"] = 26,
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 2,
["duration"] = {
["position"] = "CENTER",
["xOffset"] = 0,
@@ -1711,19 +2260,11 @@ P["unitframe"] = {
["xOffset"] = 0,
["yOffset"] = 2,
["color"] = {r = 1, g = 0.9, b = 0, a = 1}
- },
- },
- ["roleIcon"] = {
- ["enable"] = true,
- ["position"] = "TOPLEFT",
- ["attachTo"] = "Health",
- ["xOffset"] = 1,
- ["yOffset"] = -1,
- ["size"] = 15,
+ }
},
["raidRoleIcons"] = {
["enable"] = true,
- ["position"] = "TOPLEFT",
+ ["position"] = "TOPLEFT"
},
["raidicon"] = {
["enable"] = true,
@@ -1731,7 +2272,7 @@ P["unitframe"] = {
["attachTo"] = "TOP",
["attachToObject"] = "Frame",
["xOffset"] = 0,
- ["yOffset"] = 8,
+ ["yOffset"] = 8
},
["GPSArrow"] = {
["enable"] = true,
@@ -1739,7 +2280,7 @@ P["unitframe"] = {
["xOffset"] = 0,
["yOffset"] = 0,
["onMouseOver"] = true,
- ["outOfRange"] = true,
+ ["outOfRange"] = true
},
["readycheckIcon"] = {
["enable"] = true,
@@ -1747,8 +2288,180 @@ P["unitframe"] = {
["attachTo"] = "Health",
["position"] = "BOTTOM",
["xOffset"] = 0,
- ["yOffset"] = 2,
+ ["yOffset"] = 2
},
+ ["resurrectIcon"] = {
+ ["enable"] = true,
+ ["size"] = 30,
+ ["attachTo"] = "CENTER",
+ ["attachToObject"] = "Frame",
+ ["xOffset"] = 0,
+ ["yOffset"] = 0
+ }
+ },
+ ["raid40"] = {
+ ["enable"] = true,
+ ["rangeCheck"] = true,
+ ["threatStyle"] = "GLOW",
+ ["orientation"] = "MIDDLE",
+ ["visibility"] = "[target=raid26,noexists] hide;show",
+ ["growthDirection"] = "RIGHT_DOWN",
+ ["horizontalSpacing"] = 3,
+ ["verticalSpacing"] = 3,
+ ["numGroups"] = 8,
+ ["groupsPerRowCol"] = 1,
+ ["groupBy"] = "GROUP",
+ ["sortDir"] = "ASC",
+ ["showPlayer"] = true,
+ ["healPrediction"] = false,
+ ["colorOverride"] = "USE_DEFAULT",
+ ["width"] = 80,
+ ["height"] = 27,
+ ["groupSpacing"] = 0,
+ ["disableMouseoverGlow"] = false,
+ ["disableTargetGlow"] = false,
+ ["health"] = {
+ ["text_format"] = "[healthcolor][health:deficit]",
+ ["position"] = "BOTTOM",
+ ["orientation"] = "HORIZONTAL",
+ ["frequentUpdates"] = false,
+ ["attachTextTo"] = "Health",
+ ["yOffset"] = 2,
+ ["xOffset"] = 0
+ },
+ ["power"] = {
+ ["enable"] = false,
+ ["text_format"] = "",
+ ["width"] = "fill",
+ ["height"] = 7,
+ ["offset"] = 0,
+ ["position"] = "BOTTOMRIGHT",
+ ["hideonnpc"] = false,
+ ["yOffset"] = 2,
+ ["xOffset"] = -2
+ },
+ ["infoPanel"] = {
+ ["enable"] = false,
+ ["height"] = 12,
+ ["transparent"] = false
+ },
+ ["name"] = {
+ ["position"] = "CENTER",
+ ["text_format"] = "[namecolor][name:short]",
+ ["yOffset"] = 0,
+ ["xOffset"] = 0,
+ ["attachTextTo"] = "Health"
+ },
+ ["portrait"] = {
+ ["enable"] = false,
+ ["width"] = 45,
+ ["overlay"] = false,
+ ["style"] = "3D"
+ },
+ ["buffs"] = {
+ ["enable"] = false,
+ ["perrow"] = 3,
+ ["numrows"] = 1,
+ ["attachTo"] = "FRAME",
+ ["anchorPoint"] = "LEFT",
+ ["fontSize"] = 10,
+ ["countFontSize"] = 10,
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["clickThrough"] = false,
+ ["minDuration"] = 0,
+ ["maxDuration"] = 300,
+ ["useBlacklist"] = true,
+ ["useWhitelist"] = false,
+ ["noDuration"] = true,
+ ["useFilter"] = "",
+ ["xOffset"] = 0,
+ ["yOffset"] = 0
+ },
+ ["debuffs"] = {
+ ["enable"] = false,
+ ["perrow"] = 3,
+ ["numrows"] = 1,
+ ["attachTo"] = "FRAME",
+ ["anchorPoint"] = "RIGHT",
+ ["fontSize"] = 10,
+ ["countFontSize"] = 10,
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["clickThrough"] = false,
+ ["minDuration"] = 0,
+ ["maxDuration"] = 300,
+ ["useBlacklist"] = true,
+ ["useWhitelist"] = false,
+ ["noDuration"] = false,
+ ["useFilter"] = "",
+ ["xOffset"] = 0,
+ ["yOffset"] = 0
+ },
+ ["rdebuffs"] = {
+ ["enable"] = false,
+ ["showDispellableDebuff"] = true,
+ ["fontSize"] = 10,
+ ["font"] = "Homespun",
+ ["fontOutline"] = "MONOCHROMEOUTLINE",
+ ["size"] = 22,
+ ["xOffset"] = 0,
+ ["yOffset"] = 2,
+ ["duration"] = {
+ ["position"] = "CENTER",
+ ["xOffset"] = 0,
+ ["yOffset"] = 0,
+ ["color"] = {r = 1, g = 0.9, b = 0, a = 1}
+ },
+ ["stack"] = {
+ ["position"] = "BOTTOMRIGHT",
+ ["xOffset"] = 0,
+ ["yOffset"] = 2,
+ ["color"] = {r = 1, g = 0.9, b = 0, a = 1}
+ }
+ },
+ ["raidRoleIcons"] = {
+ ["enable"] = true,
+ ["position"] = "TOPLEFT"
+ },
+ ["buffIndicator"] = {
+ ["enable"] = true,
+ ["size"] = 8,
+ ["fontSize"] = 10,
+ ["profileSpecific"] = false
+ },
+ ["raidicon"] = {
+ ["enable"] = true,
+ ["size"] = 18,
+ ["attachTo"] = "TOP",
+ ["attachToObject"] = "Frame",
+ ["xOffset"] = 0,
+ ["yOffset"] = 8
+ },
+ ["GPSArrow"] = {
+ ["enable"] = true,
+ ["size"] = 45,
+ ["xOffset"] = 0,
+ ["yOffset"] = 0,
+ ["onMouseOver"] = true,
+ ["outOfRange"] = true
+ },
+ ["readycheckIcon"] = {
+ ["enable"] = true,
+ ["size"] = 12,
+ ["attachTo"] = "Health",
+ ["position"] = "BOTTOM",
+ ["xOffset"] = 0,
+ ["yOffset"] = 2
+ },
+ ["resurrectIcon"] = {
+ ["enable"] = true,
+ ["size"] = 30,
+ ["attachTo"] = "CENTER",
+ ["attachToObject"] = "Frame",
+ ["xOffset"] = 0,
+ ["yOffset"] = 0
+ }
},
["raidpet"] = {
["enable"] = false,
@@ -1770,7 +2483,9 @@ P["unitframe"] = {
["colorOverride"] = "USE_DEFAULT",
["width"] = 80,
["height"] = 30,
- ["targetGlow"] = true,
+ ["groupSpacing"] = 0,
+ ["disableMouseoverGlow"] = false,
+ ["disableTargetGlow"] = false,
["health"] = {
["text_format"] = "[healthcolor][health:deficit]",
["position"] = "BOTTOM",
@@ -1778,20 +2493,20 @@ P["unitframe"] = {
["frequentUpdates"] = true,
["yOffset"] = 2,
["xOffset"] = 0,
- ["attachTextTo"] = "Health",
+ ["attachTextTo"] = "Health"
},
["name"] = {
["position"] = "TOP",
["text_format"] = "[namecolor][name:short]",
["yOffset"] = -2,
["xOffset"] = 0,
- ["attachTextTo"] = "Health",
+ ["attachTextTo"] = "Health"
},
["portrait"] = {
["enable"] = false,
["width"] = 45,
["overlay"] = false,
- ["style"] = "3D",
+ ["style"] = "3D"
},
["buffs"] = {
["enable"] = false,
@@ -1806,9 +2521,12 @@ P["unitframe"] = {
["clickThrough"] = false,
["minDuration"] = 0,
["maxDuration"] = 0,
- ["priority"] = "Blacklist,Personal,PlayerBuffs,blockNoDuration,nonPersonal", --RaidPet Buffs
+ ["useBlacklist"] = true,
+ ["useWhitelist"] = false,
+ ["noDuration"] = true,
+ ["useFilter"] = "",
["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["yOffset"] = 0
},
["debuffs"] = {
["enable"] = false,
@@ -1823,9 +2541,12 @@ P["unitframe"] = {
["clickThrough"] = false,
["minDuration"] = 0,
["maxDuration"] = 0,
- ["priority"] = "Blacklist,Personal,Whitelist,RaidDebuffs,blockNoDuration,nonPersonal", --RaidPet Debuffs
- ["xOffset"] = 0,
- ["yOffset"] = 0,
+ ["useBlacklist"] = true,
+ ["useWhitelist"] = false,
+ ["noDuration"] = false,
+ ["useFilter"] = "",
+ ["xOffset"] = 0,
+ ["yOffset"] = 0
},
["buffIndicator"] = {
["enable"] = true,
@@ -1835,7 +2556,6 @@ P["unitframe"] = {
["rdebuffs"] = {
["enable"] = true,
["showDispellableDebuff"] = true,
- ["onlyMatchSpellID"] = true,
["fontSize"] = 10,
["font"] = "Homespun",
["fontOutline"] = "MONOCHROMEOUTLINE",
@@ -1853,7 +2573,7 @@ P["unitframe"] = {
["xOffset"] = 0,
["yOffset"] = 2,
["color"] = {r = 1, g = 0.9, b = 0, a = 1}
- },
+ }
},
["raidicon"] = {
["enable"] = true,
@@ -1861,10 +2581,248 @@ P["unitframe"] = {
["attachTo"] = "TOP",
["attachToObject"] = "Frame",
["xOffset"] = 0,
- ["yOffset"] = 8,
- },
+ ["yOffset"] = 8
+ }
},
- },
+ ["tank"] = {
+ ["enable"] = true,
+ ["orientation"] = "LEFT",
+ ["threatStyle"] = "GLOW",
+ ["colorOverride"] = "USE_DEFAULT",
+ ["rangeCheck"] = true,
+ ["width"] = 120,
+ ["height"] = 28,
+ ["disableDebuffHighlight"] = true,
+ ["disableMouseoverGlow"] = false,
+ ["disableTargetGlow"] = false,
+ ["name"] = {
+ ["position"] = "CENTER",
+ ["text_format"] = "[namecolor][name:medium]",
+ ["yOffset"] = 0,
+ ["xOffset"] = 0,
+ ["attachTextTo"] = "Health"
+ },
+ ["buffs"] = {
+ ["enable"] = false,
+ ["perrow"] = 6,
+ ["numrows"] = 1,
+ ["attachTo"] = "FRAME",
+ ["anchorPoint"] = "TOPLEFT",
+ ["fontSize"] = 10,
+ ["countFontSize"] = 10,
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["clickThrough"] = false,
+ ["minDuration"] = 0,
+ ["maxDuration"] = 0,
+ ["useBlacklist"] = false,
+ ["useWhitelist"] = false,
+ ["noDuration"] = false,
+ ["useFilter"] = "",
+ ["xOffset"] = 0,
+ ["yOffset"] = 2
+ },
+ ["debuffs"] = {
+ ["enable"] = false,
+ ["perrow"] = 6,
+ ["numrows"] = 1,
+ ["attachTo"] = "BUFFS",
+ ["anchorPoint"] = "TOPRIGHT",
+ ["fontSize"] = 10,
+ ["countFontSize"] = 10,
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["clickThrough"] = false,
+ ["minDuration"] = 0,
+ ["maxDuration"] = 0,
+ ["useBlacklist"] = false,
+ ["useWhitelist"] = false,
+ ["noDuration"] = false,
+ ["useFilter"] = "",
+ ["xOffset"] = 0,
+ ["yOffset"] = 1
+ },
+ ["buffIndicator"] = {
+ ["enable"] = true,
+ ["size"] = 8,
+ ["fontSize"] = 10,
+ ["profileSpecific"] = false
+ },
+ ["rdebuffs"] = {
+ ["enable"] = true,
+ ["showDispellableDebuff"] = true,
+ ["fontSize"] = 10,
+ ["font"] = "Homespun",
+ ["fontOutline"] = "MONOCHROMEOUTLINE",
+ ["size"] = 26,
+ ["xOffset"] = 0,
+ ["yOffset"] = 0,
+ ["duration"] = {
+ ["position"] = "CENTER",
+ ["xOffset"] = 0,
+ ["yOffset"] = 0,
+ ["color"] = {r = 1, g = 0.9, b = 0, a = 1}
+ },
+ ["stack"] = {
+ ["position"] = "BOTTOMRIGHT",
+ ["xOffset"] = 0,
+ ["yOffset"] = 2,
+ ["color"] = {r = 1, g = 0.9, b = 0, a = 1}
+ }
+ },
+ ["raidicon"] = {
+ ["enable"] = true,
+ ["size"] = 18,
+ ["attachTo"] = "TOP",
+ ["attachToObject"] = "Frame",
+ ["xOffset"] = 0,
+ ["yOffset"] = 8
+ },
+ ["targetsGroup"] = {
+ ["enable"] = true,
+ ["anchorPoint"] = "RIGHT",
+ ["xOffset"] = 1,
+ ["yOffset"] = 0,
+ ["width"] = 120,
+ ["height"] = 28,
+ ["colorOverride"] = "USE_DEFAULT",
+ ["name"] = {
+ ["position"] = "CENTER",
+ ["text_format"] = "[namecolor][name:medium]",
+ ["yOffset"] = 0,
+ ["xOffset"] = 0,
+ ["attachTextTo"] = "Health"
+ },
+ ["raidicon"] = {
+ ["enable"] = true,
+ ["size"] = 18,
+ ["attachTo"] = "TOP",
+ ["attachToObject"] = "Frame",
+ ["xOffset"] = 0,
+ ["yOffset"] = 8
+ }
+ }
+ },
+ ["assist"] = {
+ ["enable"] = true,
+ ["orientation"] = "LEFT",
+ ["threatStyle"] = "GLOW",
+ ["colorOverride"] = "USE_DEFAULT",
+ ["rangeCheck"] = true,
+ ["width"] = 120,
+ ["height"] = 28,
+ ["disableDebuffHighlight"] = true,
+ ["disableMouseoverGlow"] = false,
+ ["disableTargetGlow"] = false,
+ ["name"] = {
+ ["position"] = "CENTER",
+ ["text_format"] = "[namecolor][name:medium]",
+ ["yOffset"] = 0,
+ ["xOffset"] = 0,
+ ["attachTextTo"] = "Health"
+ },
+ ["buffs"] = {
+ ["enable"] = false,
+ ["perrow"] = 6,
+ ["numrows"] = 1,
+ ["attachTo"] = "FRAME",
+ ["anchorPoint"] = "TOPLEFT",
+ ["fontSize"] = 10,
+ ["countFontSize"] = 10,
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["clickThrough"] = false,
+ ["minDuration"] = 0,
+ ["maxDuration"] = 0,
+ ["useBlacklist"] = false,
+ ["useWhitelist"] = false,
+ ["noDuration"] = false,
+ ["useFilter"] = "",
+ ["xOffset"] = 0,
+ ["yOffset"] = 2
+ },
+ ["debuffs"] = {
+ ["enable"] = false,
+ ["perrow"] = 6,
+ ["numrows"] = 1,
+ ["attachTo"] = "BUFFS",
+ ["anchorPoint"] = "TOPRIGHT",
+ ["fontSize"] = 10,
+ ["countFontSize"] = 10,
+ ["sortMethod"] = "TIME_REMAINING",
+ ["sortDirection"] = "DESCENDING",
+ ["clickThrough"] = false,
+ ["minDuration"] = 0,
+ ["maxDuration"] = 0,
+ ["useBlacklist"] = false,
+ ["useWhitelist"] = false,
+ ["noDuration"] = false,
+ ["useFilter"] = "",
+ ["xOffset"] = 0,
+ ["yOffset"] = 1
+ },
+ ["buffIndicator"] = {
+ ["enable"] = true,
+ ["size"] = 8,
+ ["fontSize"] = 10,
+ ["profileSpecific"] = false
+ },
+ ["rdebuffs"] = {
+ ["enable"] = true,
+ ["showDispellableDebuff"] = true,
+ ["fontSize"] = 10,
+ ["font"] = "Homespun",
+ ["fontOutline"] = "MONOCHROMEOUTLINE",
+ ["size"] = 26,
+ ["xOffset"] = 0,
+ ["yOffset"] = 0,
+ ["duration"] = {
+ ["position"] = "CENTER",
+ ["xOffset"] = 0,
+ ["yOffset"] = 0,
+ ["color"] = {r = 1, g = 0.9, b = 0, a = 1}
+ },
+ ["stack"] = {
+ ["position"] = "BOTTOMRIGHT",
+ ["xOffset"] = 0,
+ ["yOffset"] = 2,
+ ["color"] = {r = 1, g = 0.9, b = 0, a = 1}
+ }
+ },
+ ["raidicon"] = {
+ ["enable"] = true,
+ ["size"] = 18,
+ ["attachTo"] = "TOP",
+ ["attachToObject"] = "Frame",
+ ["xOffset"] = 0,
+ ["yOffset"] = 8
+ },
+ ["targetsGroup"] = {
+ ["enable"] = true,
+ ["anchorPoint"] = "RIGHT",
+ ["xOffset"] = 1,
+ ["yOffset"] = 0,
+ ["width"] = 120,
+ ["height"] = 28,
+ ["colorOverride"] = "USE_DEFAULT",
+ ["name"] = {
+ ["position"] = "CENTER",
+ ["text_format"] = "[namecolor][name:medium]",
+ ["yOffset"] = 0,
+ ["xOffset"] = 0,
+ ["attachTextTo"] = "Frame"
+ },
+ ["raidicon"] = {
+ ["enable"] = true,
+ ["size"] = 18,
+ ["attachTo"] = "TOP",
+ ["attachToObject"] = "Frame",
+ ["xOffset"] = 0,
+ ["yOffset"] = 8
+ }
+ }
+ }
+ }
}
P["cooldown"] = {
diff --git a/ElvUI_Config/UnitFrames.lua b/ElvUI_Config/UnitFrames.lua
index 538ea95..4d1e86c 100644
--- a/ElvUI_Config/UnitFrames.lua
+++ b/ElvUI_Config/UnitFrames.lua
@@ -1,37 +1,22 @@
local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local UF = E:GetModule("UnitFrames");
-
-local ns = oUF
-local ElvUF = ns.oUF
-
--Cache global variables
--Lua functions
local _G = _G
-local find, format = string.find, string.format
-local gsub, match, split = string.gsub, string.match, string.split
-local ipairs, pairs, select = ipairs, pairs, select
-local tconcat, getn, tinsert, tremove, twipe = table.concat, table.getn, table.insert, table.remove, table.wipe
+local select, pairs, ipairs = select, pairs, ipairs
+local getn, tremove, tinsert, tconcat, twipe = table.getn, table.remove, table.insert, table.concat, table.wipe
+local find, format, lower, match, gsub, strsplit = string.find, string.format, string.lower, string.match, string.gsub, strsplit
--WoW API / Variables
-local GetScreenWidth = GetScreenWidth
local IsAddOnLoaded = IsAddOnLoaded
-
-local COLOR, DELETE, FILTERS, FONT_SIZE = COLOR, DELETE, FILTERS, FONT_SIZE
-local CLASS, GROUP, HEALTH, MANA, NAME, PLAYER = CLASS, GROUP, HEALTH, MANA, NAME, PLAYER
-local ENERGY, FOCUS, RAGE = ENERGY, FOCUS, RAGE
-local FACTION_STANDING_LABEL4 = FACTION_STANDING_LABEL4
-local GENERAL, HIDE, NONE = GENERAL, HIDE, NONE
-
+local GetScreenWidth = GetScreenWidth
local RAID_CLASS_COLORS = RAID_CLASS_COLORS
-
-local ALT_KEY, CTRL_KEY, SHIFT_KEY = "ALT_KEY", "CTRL_KEY", "SHIFT_KEY"
-------------------------------
+local HIDE, DELETE, NONE, FILTERS, FONT_SIZE, COLOR = HIDE, DELETE, NONE, FILTERS, FONT_SIZE, COLOR
+local DISABLE, DEFAULTS = DISABLE, DEFAULTS
+local SHIFT_KEY, ALT_KEY, CTRL_KEY = "SHIFT_KEY", "ALT_KEY", "CTRL_KEY"
+local HEALTH, MANA, NAME, PLAYER, CLASS, GROUP, HAPPINESS = HEALTH, MANA, NAME, PLAYER, CLASS, GROUP, HAPPINESS
+local RAGE, FOCUS, ENERGY = RAGE, FOCUS, ENERGY
local ACD = LibStub("AceConfigDialog-3.0")
-local fillValues = {
- ["fill"] = L["Filled"],
- ["spaced"] = L["Spaced"],
- ["inset"] = L["Inset"]
-};
local positionValues = {
TOPLEFT = "TOPLEFT",
@@ -42,8 +27,15 @@ local positionValues = {
BOTTOMRIGHT = "BOTTOMRIGHT",
CENTER = "CENTER",
TOP = "TOP",
- BOTTOM = "BOTTOM",
-};
+ BOTTOM = "BOTTOM"
+}
+
+local orientationValues = {
+ --["AUTOMATIC"] = L["Automatic"], not sure if i will use this yet
+ ["LEFT"] = L["Left"],
+ ["MIDDLE"] = L["Middle"],
+ ["RIGHT"] = L["Right"]
+}
local threatValues = {
["GLOW"] = L["Glow"],
@@ -58,7 +50,7 @@ local threatValues = {
["ICONRIGHT"] = L["Icon: RIGHT"],
["ICONTOP"] = L["Icon: TOP"],
["ICONBOTTOM"] = L["Icon: BOTTOM"],
- ["NONE"] = "NONE"
+ ["NONE"] = NONE
}
local petAnchors = {
@@ -69,193 +61,149 @@ local petAnchors = {
TOPRIGHT = "TOPRIGHT",
BOTTOMRIGHT = "BOTTOMRIGHT",
TOP = "TOP",
- BOTTOM = "BOTTOM",
-};
-
-local auraBarsSortValues = {
- ["TIME_REMAINING"] = L["Time Remaining"],
- ["TIME_REMAINING_REVERSE"] = L["Time Remaining Reverse"],
- ["TIME_DURATION"] = L["Duration"],
- ["TIME_DURATION_REVERSE"] = L["Duration Reverse"],
- ["NAME"] = "NAME",
- ["NONE"] = "NONE",
+ BOTTOM = "BOTTOM"
}
-local auraSortValues = {
- ["TIME_REMAINING"] = L["Time Remaining"],
- ["DURATION"] = L["Duration"],
- ["NAME"] = NAME,
- ["INDEX"] = L["Index"],
- ["PLAYER"] = PLAYER,
+local attachToValues = {
+ ["Health"] = HEALTH,
+ ["Power"] = L["Power"],
+ ["InfoPanel"] = L["Information Panel"],
+ ["Frame"] = L["Frame"]
}
-local auraSortMethodValues = {
- ["ASCENDING"] = L["Ascending"],
- ["DESCENDING"] = L["Descending"]
+local growthDirectionValues = {
+ DOWN_RIGHT = format(L["%s and then %s"], L["Down"], L["Right"]),
+ DOWN_LEFT = format(L["%s and then %s"], L["Down"], L["Left"]),
+ UP_RIGHT = format(L["%s and then %s"], L["Up"], L["Right"]),
+ UP_LEFT = format(L["%s and then %s"], L["Up"], L["Left"]),
+ RIGHT_DOWN = format(L["%s and then %s"], L["Right"], L["Down"]),
+ RIGHT_UP = format(L["%s and then %s"], L["Right"], L["Up"]),
+ LEFT_DOWN = format(L["%s and then %s"], L["Left"], L["Down"]),
+ LEFT_UP = format(L["%s and then %s"], L["Left"], L["Up"])
+}
+
+local smartAuraPositionValues = {
+ ["DISABLED"] = DISABLE,
+ ["BUFFS_ON_DEBUFFS"] = L["Position Buffs on Debuffs"],
+ ["DEBUFFS_ON_BUFFS"] = L["Position Debuffs on Buffs"],
+ ["FLUID_BUFFS_ON_DEBUFFS"] = L["Fluid Position Buffs on Debuffs"],
+ ["FLUID_DEBUFFS_ON_BUFFS"] = L["Fluid Position Debuffs on Buffs"]
+}
+
+local colorOverrideValues = {
+ ["USE_DEFAULT"] = L["Use Default"],
+ ["FORCE_ON"] = L["Force On"],
+ ["FORCE_OFF"] = L["Force Off"]
}
local CUSTOMTEXT_CONFIGS = {}
-local carryFilterFrom, carryFilterTo
-local function filterValue(value)
- return gsub(value,"([%(%)%.%%%+%-%*%?%[%^%$])","%%%1")
-end
-
-local function filterMatch(s,v)
- local m1, m2, m3, m4 = "^"..v.."$", "^"..v..",", ","..v.."$", ","..v..","
- return (match(s, m1) and m1) or (match(s, m2) and m2) or (match(s, m3) and m3) or (match(s, m4) and v..",")
-end
-
-local function filterPriority(auraType, groupName, value, remove, movehere, friendState)
- if not auraType or not value then return end
- local filter = E.db.unitframe.units[groupName] and E.db.unitframe.units[groupName][auraType] and E.db.unitframe.units[groupName][auraType].priority
- if not filter then return end
- local found = filterMatch(filter, filterValue(value))
- if found and movehere then
- local tbl, sv, sm = {split(",", filter)}
- for i in ipairs(tbl) do
- if tbl[i] == value then sv = i elseif tbl[i] == movehere then sm = i end
- if sv and sm then break end
- end
- tremove(tbl, sm);tinsert(tbl, sv, movehere);
- E.db.unitframe.units[groupName][auraType].priority = tconcat(tbl,",")
- elseif found and friendState then
- local realValue = match(value, "^Friendly:([^,]*)") or match(value, "^Enemy:([^,]*)") or value
- local friend = filterMatch(filter, filterValue("Friendly:"..realValue))
- local enemy = filterMatch(filter, filterValue("Enemy:"..realValue))
- local default = filterMatch(filter, filterValue(realValue))
-
- local state =
- (friend and (not enemy) and format("%s%s","Enemy:",realValue)) --[x] friend [ ] enemy: > enemy
- or ((not enemy and not friend) and format("%s%s","Friendly:",realValue)) --[ ] friend [ ] enemy: > friendly
- or (enemy and (not friend) and default and format("%s%s","Friendly:",realValue)) --[ ] friend [x] enemy: (default exists) > friendly
- or (enemy and (not friend) and match(value, "^Enemy:") and realValue) --[ ] friend [x] enemy: (no default) > realvalue
- or (friend and enemy and realValue) --[x] friend [x] enemy: > default
-
- if state then
- local stateFound = filterMatch(filter, filterValue(state))
- if not stateFound then
- local tbl, sv, sm = {split(",", filter)}
- for i in ipairs(tbl) do
- if tbl[i] == value then sv = i;break end
- end
- tinsert(tbl, sv, state);tremove(tbl, sv+1)
- E.db.unitframe.units[groupName][auraType].priority = tconcat(tbl,",")
- end
- end
- elseif found and remove then
- E.db.unitframe.units[groupName][auraType].priority = gsub(filter, found, "")
- elseif not found and not remove then
- E.db.unitframe.units[groupName][auraType].priority = (filter == "" and value) or (filter..","..value)
- end
-end
-
-----------------------------------------------------------------------
-- OPTIONS TABLES
-----------------------------------------------------------------------
local function GetOptionsTable_AuraBars(friendlyOnly, updateFunc, groupName)
local config = {
- order = 1100,
+ order = 800,
type = "group",
name = L["Aura Bars"],
- get = function(info) return E.db.unitframe.units[groupName]["aurabar"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName]["aurabar"][ info[getn(info)] ] = value; updateFunc(UF, groupName) end,
+ get = function(info) return E.db.unitframe.units[groupName].aurabar[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].aurabar[ info[getn(info)] ] = value updateFunc(UF, groupName) end,
args = {
header = {
order = 1,
type = "header",
- name = L["Aura Bars"],
+ name = L["Aura Bars"]
},
enable = {
- type = "toggle",
order = 2,
- name = L["Enable"],
+ type = "toggle",
+ name = L["Enable"]
},
configureButton1 = {
order = 3,
+ type = "execute",
name = L["Coloring"],
desc = L["This opens the UnitFrames Color settings. These settings affect all unitframes."],
- type = "execute",
func = function() ACD:SelectGroup("ElvUI", "unitframe", "generalOptionsGroup", "allColorsGroup", "auraBars") end,
},
configureButton2 = {
order = 4,
- name = L["Coloring (Specific)"],
type = "execute",
- func = function() E:SetToFilterConfig("AuraBar Colors") end,
+ name = L["Coloring (Specific)"],
+ func = function() E:SetToFilterConfig("AuraBar Colors") end
},
anchorPoint = {
- type = "select",
order = 5,
+ type = "select",
name = L["Anchor Point"],
desc = L["What point to anchor to the frame you set to attach to."],
values = {
["ABOVE"] = L["Above"],
- ["BELOW"] = L["Below"],
- },
+ ["BELOW"] = L["Below"]
+ }
},
attachTo = {
- type = "select",
order = 6,
+ type = "select",
name = L["Attach To"],
desc = L["The object you want to attach to."],
values = {
["FRAME"] = L["Frame"],
["DEBUFFS"] = L["Debuffs"],
- ["BUFFS"] = L["Buffs"],
- },
+ ["BUFFS"] = L["Buffs"]
+ }
},
height = {
- type = "range",
order = 7,
+ type = "range",
name = L["Height"],
- min = 6, max = 40, step = 1,
+ min = 6, max = 40, step = 1
},
maxBars = {
- type = "range",
order = 8,
+ type = "range",
name = L["Max Bars"],
- min = 1, max = 40, step = 1,
+ min = 1, max = 40, step = 1
},
sort = {
- type = "select",
order = 9,
+ type = "select",
name = L["Sort Method"],
- values = auraBarsSortValues,
- },
- filters = {
- name = FILTERS,
- guiInline = true,
- type = "group",
- order = 500,
- args = {},
+ values = {
+ ["TIME_REMAINING"] = L["Time Remaining"],
+ ["TIME_REMAINING_REVERSE"] = L["Time Remaining Reverse"],
+ ["TIME_DURATION"] = L["Duration"],
+ ["TIME_DURATION_REVERSE"] = L["Duration Reverse"],
+ ["NAME"] = NAME,
+ ["NONE"] = NONE
+ }
},
friendlyAuraType = {
- type = "select",
order = 16,
+ type = "select",
name = L["Friendly Aura Type"],
desc = L["Set the type of auras to show when a unit is friendly."],
values = {
["HARMFUL"] = L["Debuffs"],
- ["HELPFUL"] = L["Buffs"],
- },
+ ["HELPFUL"] = L["Buffs"]
+ }
},
enemyAuraType = {
- type = "select",
order = 17,
+ type = "select",
name = L["Enemy Aura Type"],
desc = L["Set the type of auras to show when a unit is a foe."],
values = {
["HARMFUL"] = L["Debuffs"],
- ["HELPFUL"] = L["Buffs"],
- },
+ ["HELPFUL"] = L["Buffs"]
+ }
},
uniformThreshold = {
order = 18,
type = "range",
name = L["Uniform Threshold"],
desc = L["Seconds remaining on the aura duration before the bar starts moving. Set to 0 to disable."],
- min = 0, max = 3600, step = 1,
+ min = 0, max = 3600, step = 1
},
yOffset = {
order = 19,
@@ -263,410 +211,917 @@ local function GetOptionsTable_AuraBars(friendlyOnly, updateFunc, groupName)
name = L["yOffset"],
min = -1000, max = 1000, step = 1,
},
- },
+ spacing = {
+ order = 20,
+ type = "range",
+ name = L["Spacing"],
+ min = 0, softMax = 20, step = 1,
+ },
+ filters = {
+ order = 500,
+ type = "group",
+ name = FILTERS,
+ guiInline = true,
+ args = {}
+ }
+ }
}
if groupName == "target" then
config.args.attachTo.values["PLAYER_AURABARS"] = L["Player Frame Aura Bars"]
end
+ if friendlyOnly then
+ config.args.filters.args.useBlacklist = {
+ order = 10,
+ type = "toggle",
+ name = L["Block Blacklisted Auras"],
+ desc = L["Don't display any auras found on the 'Blacklist' filter."],
+ }
+ config.args.filters.args.useWhitelist = {
+ order = 11,
+ type = "toggle",
+ name = L["Allow Whitelisted Auras"],
+ desc = L["If no other filter options are being used then it will block anything not on the 'Whitelist' filter, otherwise it will simply add auras on the whitelist in addition to any other filter settings."]
+ }
+ config.args.filters.args.noDuration = {
+ order = 12,
+ type = "toggle",
+ name = L["Block Auras Without Duration"],
+ desc = L["Don't display auras that have no duration."]
+ }
+ config.args.filters.args.useFilter = {
+ order = 14,
+ type = "select",
+ name = L["Additional Filter"],
+ desc = L["Select an additional filter to use. If the selected filter is a whitelist and no other filters are being used (with the exception of Block Non-Personal Auras) then it will block anything not on the whitelist, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
+ values = function()
+ filters = {}
+ filters[""] = NONE
+ for filter in pairs(E.global.unitframe.aurafilters) do
+ filters[filter] = filter
+ end
+ return filters
+ end
+ }
+ else
+ config.args.filters.args.useBlacklist = {
+ order = 10,
+ type = "group",
+ guiInline = true,
+ name = L["Block Blacklisted Auras"],
+ args = {
+ friendly = {
+ order = 1,
+ type = "toggle",
+ name = L["Friendly"],
+ desc = L["If the unit is friendly to you."].." "..L["Don't display any auras found on the 'Blacklist' filter."],
+ get = function(info) return E.db.unitframe.units[groupName].aurabar.useBlacklist.friendly end,
+ set = function(info, value) E.db.unitframe.units[groupName].aurabar.useBlacklist.friendly = value updateFunc(UF, groupName) end
+ },
+ enemy = {
+ order = 2,
+ type = "toggle",
+ name = L["Enemy"],
+ desc = L["If the unit is an enemy to you."].." "..L["Don't display any auras found on the 'Blacklist' filter."],
+ get = function(info) return E.db.unitframe.units[groupName].aurabar.useBlacklist.enemy end,
+ set = function(info, value) E.db.unitframe.units[groupName].aurabar.useBlacklist.enemy = value updateFunc(UF, groupName) end
+ }
+ }
+ }
+ config.args.filters.args.useWhitelist = {
+ order = 11,
+ type = "group",
+ guiInline = true,
+ name = L["Allow Whitelisted Auras"],
+ args = {
+ friendly = {
+ order = 1,
+ type = "toggle",
+ name = L["Friendly"],
+ desc = L["If the unit is friendly to you."].." "..L["If no other filter options are being used then it will block anything not on the 'Whitelist' filter, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
+ get = function(info) return E.db.unitframe.units[groupName].aurabar.useWhitelist.friendly end,
+ set = function(info, value) E.db.unitframe.units[groupName].aurabar.useWhitelist.friendly = value updateFunc(UF, groupName) end,
+ },
+ enemy = {
+ order = 2,
+ type = "toggle",
+ name = L["Enemy"],
+ desc = L["If the unit is an enemy to you."].." "..L["If no other filter options are being used then it will block anything not on the 'Whitelist' filter, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
+ get = function(info) return E.db.unitframe.units[groupName].aurabar.useWhitelist.enemy end,
+ set = function(info, value) E.db.unitframe.units[groupName].aurabar.useWhitelist.enemy = value updateFunc(UF, groupName) end
+ }
+ }
+ }
+ config.args.filters.args.noDuration = {
+ order = 12,
+ type = "group",
+ guiInline = true,
+ name = L["Block Auras Without Duration"],
+ args = {
+ friendly = {
+ order = 1,
+ type = "toggle",
+ name = L["Friendly"],
+ desc = L["If the unit is friendly to you."].." "..L["Don't display auras that have no duration."],
+ get = function(info) return E.db.unitframe.units[groupName].aurabar.noDuration.friendly end,
+ set = function(info, value) E.db.unitframe.units[groupName].aurabar.noDuration.friendly = value updateFunc(UF, groupName) end
+ },
+ enemy = {
+ order = 2,
+ type = "toggle",
+ name = L["Enemy"],
+ desc = L["If the unit is an enemy to you."].." "..L["Don't display auras that have no duration."],
+ get = function(info) return E.db.unitframe.units[groupName].aurabar.noDuration.enemy end,
+ set = function(info, value) E.db.unitframe.units[groupName].aurabar.noDuration.enemy = value updateFunc(UF, groupName) end
+ }
+ }
+ }
+ config.args.filters.args.useFilter = {
+ order = 14,
+ type = "select",
+ name = L["Additional Filter"],
+ desc = L["Select an additional filter to use. If the selected filter is a whitelist and no other filters are being used (with the exception of Block Non-Personal Auras) then it will block anything not on the whitelist, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
+ values = function()
+ filters = {}
+ filters[""] = NONE
+ for filter in pairs(E.global.unitframe.aurafilters) do
+ filters[filter] = filter
+ end
+ return filters
+ end
+ }
+ end
+
config.args.filters.args.minDuration = {
- order = 16,
+ order = 17,
type = "range",
name = L["Minimum Duration"],
desc = L["Don't display auras that are shorter than this duration (in seconds). Set to zero to disable."],
min = 0, max = 10800, step = 1,
}
+
config.args.filters.args.maxDuration = {
- order = 17,
+ order = 18,
type = "range",
name = L["Maximum Duration"],
desc = L["Don't display auras that are longer than this duration (in seconds). Set to zero to disable."],
- min = 0, max = 10800, step = 1,
+ min = 0, max = 10800, step = 1
}
- config.args.filters.args.jumpToFilter = {
- order = 18,
- name = L["Filters Page"],
- desc = L["Shortcut to 'Filters' section of the config."],
- type = "execute",
- func = function() ACD:SelectGroup("ElvUI", "filters") end,
- }
- config.args.filters.args.specialPriority = {
- order = 19,
- name = L["Add Special Filter"],
- desc = L["These filters don't use a list of spells like the regular filters. Instead they use the WoW API and some code logic to determine if an aura should be allowed or blocked."],
- type = "select",
- values = function()
- local filters = {}
- local list = E.global.unitframe["specialFilters"]
- if not list then return end
- for filter in pairs(list) do
- filters[filter] = filter
- end
- return filters
- end,
- set = function(info, value)
- filterPriority("aurabar", groupName, value)
- updateFunc(UF, groupName)
- end
- }
- config.args.filters.args.priority = {
- order = 20,
- name = L["Add Regular Filter"],
- desc = L["These filters use a list of spells to determine if an aura should be allowed or blocked. The content of these filters can be modified in the 'Filters' section of the config."],
- type = "select",
- values = function()
- local filters = {}
- local list = E.global.unitframe["aurafilters"]
- if not list then return end
- for filter in pairs(list) do
- filters[filter] = filter
- end
- return filters
- end,
- set = function(info, value)
- filterPriority("aurabar", groupName, value)
- updateFunc(UF, groupName)
- end
- }
- config.args.filters.args.resetPriority = {
- order = 21,
- name = L["Reset Priority"],
- desc = L["Reset filter priority to the default state."],
- type = "execute",
- func = function()
- E.db.unitframe.units[groupName].aurabar.priority = P.unitframe.units[groupName].aurabar.priority
- updateFunc(UF, groupName)
- end,
- }
- -- config.args.filters.args.filterPriority = {
- -- order = 22,
- -- dragdrop = true,
- -- type = "multiselect",
- -- name = L["Filter Priority"],
- -- dragOnLeave = function() end, --keep this here
- -- dragOnEnter = function(info, value)
- -- carryFilterTo = info.obj.value
- -- end,
- -- dragOnMouseDown = function(info, value)
- -- carryFilterFrom, carryFilterTo = info.obj.value, nil
- -- end,
- -- dragOnMouseUp = function(info, value)
- -- filterPriority("aurabar", groupName, carryFilterTo, nil, carryFilterFrom) --add it in the new spot
- -- carryFilterFrom, carryFilterTo = nil, nil
- -- end,
- -- dragOnClick = function(info, value)
- -- filterPriority("aurabar", groupName, carryFilterFrom, true)
- -- end,
- -- stateSwitchGetText = function(button, text, value)
- -- local friend, enemy = match(text, "^Friendly:([^,]*)"), match(text, "^Enemy:([^,]*)")
- -- return (friend and format("|cFF33FF33%s|r %s", L["Friend"], friend)) or (enemy and format("|cFFFF3333%s|r %s", L["Enemy"], enemy))
- -- end,
- -- stateSwitchOnClick = function(info, value)
- -- filterPriority("aurabar", groupName, carryFilterFrom, nil, nil, true)
- -- end,
- -- values = function()
- -- local str = E.db.unitframe.units[groupName].aurabar.priority
- -- if str == "" then return nil end
- -- return {split(",", str)}
- -- end,
- -- get = function(info, value)
- -- local str = E.db.unitframe.units[groupName].aurabar.priority
- -- if str == "" then return nil end
- -- local tbl = {split(",", str)}
- -- return tbl[value]
- -- end,
- -- set = function(info, value)
- -- E.db.unitframe.units[groupName].aurabar[ info[getn(info)] ] = nil -- this was being set when drag and drop was first added, setting it to nil to clear tester profiles of this variable
- -- updateFunc(UF, groupName)
- -- end
- -- }
- -- config.args.filters.args.spacer1 = {
- -- order = 23,
- -- type = "description",
- -- name = L["Use drag and drop to rearrange filter priority or right click to remove a filter."].."\n"..L["Use Shift+LeftClick to toggle between friendly or enemy or normal state. Normal state will allow the filter to be checked on all units. Friendly state is for friendly units only and enemy state is for enemy units."],
- -- }
return config
end
local function GetOptionsTable_Auras(friendlyUnitOnly, auraType, isGroupFrame, updateFunc, groupName, numUnits)
local config = {
- order = auraType == "buffs" and 600 or 700,
+ order = auraType == "buffs" and 500 or 600,
type = "group",
name = auraType == "buffs" and L["Buffs"] or L["Debuffs"],
get = function(info) return E.db.unitframe.units[groupName][auraType][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName][auraType][ info[getn(info)] ] = value; updateFunc(UF, groupName, numUnits) end,
+ set = function(info, value) E.db.unitframe.units[groupName][auraType][ info[getn(info)] ] = value updateFunc(UF, groupName, numUnits) end,
args = {
header = {
- type = "header",
order = 1,
- name = auraType == "buffs" and L["Buffs"] or L["Debuffs"],
+ type = "header",
+ name = auraType == "buffs" and L["Buffs"] or L["Debuffs"]
},
enable = {
- type = "toggle",
order = 2,
- name = L["Enable"],
+ type = "toggle",
+ name = L["Enable"]
},
perrow = {
- type = "range",
order = 3,
+ type = "range",
name = L["Per Row"],
- min = 1, max = 20, step = 1,
+ min = 1, max = 20, step = 1
},
numrows = {
- type = "range",
order = 4,
+ type = "range",
name = L["Num Rows"],
- min = 1, max = 10, step = 1,
+ min = 1, max = 10, step = 1
},
sizeOverride = {
- type = "range",
order = 5,
+ type = "range",
name = L["Size Override"],
desc = L["If not set to 0 then override the size of the aura icon to this."],
- min = 0, max = 60, step = 1,
+ min = 0, max = 60, step = 1
},
xOffset = {
order = 6,
type = "range",
name = L["xOffset"],
- min = -1000, max = 1000, step = 1,
+ min = -300, max = 300, step = 1
},
yOffset = {
order = 7,
type = "range",
name = L["yOffset"],
- min = -1000, max = 1000, step = 1,
+ min = -300, max = 300, step = 1
},
anchorPoint = {
- type = "select",
order = 8,
+ type = "select",
name = L["Anchor Point"],
desc = L["What point to anchor to the frame you set to attach to."],
- values = positionValues,
+ values = positionValues
},
fontSize = {
order = 9,
- name = FONT_SIZE,
type = "range",
- min = 6, max = 212, step = 1,
+ name = FONT_SIZE,
+ min = 6, max = 22, step = 1
},
clickThrough = {
order = 15,
- name = L["Click Through"],
- desc = L["Ignore mouse events."],
type = "toggle",
+ name = L["Click Through"],
+ desc = L["Ignore mouse events."]
},
sortMethod = {
order = 16,
+ type = "select",
name = L["Sort By"],
desc = L["Method to sort by."],
- type = "select",
- values = auraSortValues,
+ values = {
+ ["TIME_REMAINING"] = L["Time Remaining"],
+ ["DURATION"] = L["Duration"],
+ ["NAME"] = NAME,
+ ["INDEX"] = L["Index"],
+ ["PLAYER"] = PLAYER
+ }
},
sortDirection = {
- order = 16,
+ order = 17,
+ type = "select",
name = L["Sort Direction"],
desc = L["Ascending or Descending order."],
- type = "select",
- values = auraSortMethodValues,
+ values = {
+ ["ASCENDING"] = L["Ascending"],
+ ["DESCENDING"] = L["Descending"]
+ }
},
filters = {
+ order = 100,
+ type = "group",
name = FILTERS,
guiInline = true,
- type = "group",
- order = 500,
- args = {},
- },
- },
+ args = {}
+ }
+ }
}
if auraType == "buffs" then
config.args.attachTo = {
- type = "select",
order = 7,
+ type = "select",
name = L["Attach To"],
desc = L["What to attach the buff anchor frame to."],
values = {
["FRAME"] = L["Frame"],
["DEBUFFS"] = L["Debuffs"],
["HEALTH"] = HEALTH,
- ["POWER"] = L["Power"],
+ ["POWER"] = L["Power"]
},
+ disabled = function()
+ local smartAuraPosition = E.db.unitframe.units[groupName].smartAuraPosition
+ return (smartAuraPosition and (smartAuraPosition == "BUFFS_ON_DEBUFFS" or smartAuraPosition == "FLUID_BUFFS_ON_DEBUFFS"))
+ end
}
else
config.args.attachTo = {
- type = "select",
order = 7,
+ type = "select",
name = L["Attach To"],
desc = L["What to attach the debuff anchor frame to."],
values = {
["FRAME"] = L["Frame"],
["BUFFS"] = L["Buffs"],
["HEALTH"] = HEALTH,
- ["POWER"] = L["Power"],
+ ["POWER"] = L["Power"]
},
+ disabled = function()
+ local smartAuraPosition = E.db.unitframe.units[groupName].smartAuraPosition
+ return (smartAuraPosition and (smartAuraPosition == "DEBUFFS_ON_BUFFS" or smartAuraPosition == "FLUID_DEBUFFS_ON_BUFFS"))
+ end
}
end
if isGroupFrame then
config.args.countFontSize = {
order = 10,
- name = L["Count Font Size"],
type = "range",
- min = 6, max = 212, step = 1,
+ name = L["Count Font Size"],
+ min = 6, max = 22, step = 1
+ }
+ end
+
+ if friendlyUnitOnly then
+ config.args.filters.args.useBlacklist = {
+ order = 15,
+ type = "toggle",
+ name = L["Block Blacklisted Auras"],
+ desc = L["Don't display any auras found on the 'Blacklist' filter."]
+ }
+ config.args.filters.args.useWhitelist = {
+ order = 16,
+ type = "toggle",
+ name = L["Allow Whitelisted Auras"],
+ desc = L["If no other filter options are being used then it will block anything not on the 'Whitelist' filter, otherwise it will simply add auras on the whitelist in addition to any other filter settings."]
+ }
+ config.args.filters.args.noDuration = {
+ order = 17,
+ type = "toggle",
+ name = L["Block Auras Without Duration"],
+ desc = L["Don't display auras that have no duration."]
+ }
+
+ config.args.filters.args.useFilter = {
+ order = 18,
+ type = "select",
+ name = L["Additional Filter"],
+ desc = L["Select an additional filter to use. If the selected filter is a whitelist and no other filters are being used (with the exception of Block Non-Personal Auras) then it will block anything not on the whitelist, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
+ values = function()
+ filters = {}
+ filters[""] = NONE
+ for filter in pairs(E.global.unitframe.aurafilters) do
+ filters[filter] = filter
+ end
+ return filters
+ end
+ }
+ else
+ config.args.filters.args.useBlacklist = {
+ order = 15,
+ type = "group",
+ guiInline = true,
+ name = L["Block Blacklisted Auras"],
+ args = {
+ friendly = {
+ order = 1,
+ type = "toggle",
+ name = L["Friendly"],
+ desc = L["If the unit is friendly to you."].." "..L["Don't display any auras found on the 'Blacklist' filter."],
+ get = function(info) return E.db.unitframe.units[groupName][auraType].useBlacklist.friendly end,
+ set = function(info, value) E.db.unitframe.units[groupName][auraType].useBlacklist.friendly = value updateFunc(UF, groupName, numUnits) end
+ },
+ enemy = {
+ order = 2,
+ type = "toggle",
+ name = L["Enemy"],
+ desc = L["If the unit is an enemy to you."].." "..L["Don't display any auras found on the 'Blacklist' filter."],
+ get = function(info) return E.db.unitframe.units[groupName][auraType].useBlacklist.enemy end,
+ set = function(info, value) E.db.unitframe.units[groupName][auraType].useBlacklist.enemy = value updateFunc(UF, groupName, numUnits) end
+ }
+ }
+ }
+ config.args.filters.args.useWhitelist = {
+ order = 16,
+ type = "group",
+ guiInline = true,
+ name = L["Allow Whitelisted Auras"],
+ args = {
+ friendly = {
+ order = 1,
+ type = "toggle",
+ name = L["Friendly"],
+ desc = L["If the unit is friendly to you."].." "..L["If no other filter options are being used then it will block anything not on the 'Whitelist' filter, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
+ get = function(info) return E.db.unitframe.units[groupName][auraType].useWhitelist.friendly end,
+ set = function(info, value) E.db.unitframe.units[groupName][auraType].useWhitelist.friendly = value updateFunc(UF, groupName, numUnits) end
+ },
+ enemy = {
+ order = 2,
+ type = "toggle",
+ name = L["Enemy"],
+ desc = L["If the unit is an enemy to you."].." "..L["If no other filter options are being used then it will block anything not on the 'Whitelist' filter, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
+ get = function(info) return E.db.unitframe.units[groupName][auraType].useWhitelist.enemy end,
+ set = function(info, value) E.db.unitframe.units[groupName][auraType].useWhitelist.enemy = value updateFunc(UF, groupName, numUnits) end
+ }
+ }
+ }
+ config.args.filters.args.noDuration = {
+ order = 17,
+ type = "group",
+ guiInline = true,
+ name = L["Block Auras Without Duration"],
+ args = {
+ friendly = {
+ order = 1,
+ type = "toggle",
+ name = L["Friendly"],
+ desc = L["If the unit is friendly to you."].." "..L["Don't display auras that have no duration."],
+ get = function(info) return E.db.unitframe.units[groupName][auraType].noDuration.friendly end,
+ set = function(info, value) E.db.unitframe.units[groupName][auraType].noDuration.friendly = value updateFunc(UF, groupName, numUnits) end
+ },
+ enemy = {
+ order = 2,
+ type = "toggle",
+ name = L["Enemy"],
+ desc = L["If the unit is an enemy to you."].." "..L["Don't display auras that have no duration."],
+ get = function(info) return E.db.unitframe.units[groupName][auraType].noDuration.enemy end,
+ set = function(info, value) E.db.unitframe.units[groupName][auraType].noDuration.enemy = value updateFunc(UF, groupName, numUnits) end
+ }
+ }
+ }
+ config.args.filters.args.useFilter = {
+ order = 18,
+ type = "select",
+ name = L["Additional Filter"],
+ desc = L["Select an additional filter to use. If the selected filter is a whitelist and no other filters are being used (with the exception of Block Non-Personal Auras) then it will block anything not on the whitelist, otherwise it will simply add auras on the whitelist in addition to any other filter settings."],
+ values = function()
+ filters = {}
+ filters[""] = NONE
+ for filter in pairs(E.global.unitframe.aurafilters) do
+ filters[filter] = filter
+ end
+ return filters
+ end
}
end
config.args.filters.args.minDuration = {
- order = 16,
+ order = 19,
type = "range",
name = L["Minimum Duration"],
desc = L["Don't display auras that are shorter than this duration (in seconds). Set to zero to disable."],
min = 0, max = 10800, step = 1,
}
config.args.filters.args.maxDuration = {
- order = 17,
+ order = 20,
type = "range",
name = L["Maximum Duration"],
desc = L["Don't display auras that are longer than this duration (in seconds). Set to zero to disable."],
- min = 0, max = 10800, step = 1,
+ min = 0, max = 10800, step = 1
}
- config.args.filters.args.jumpToFilter = {
- order = 18,
- name = L["Filters Page"],
- desc = L["Shortcut to 'Filters' section of the config."],
- type = "execute",
- func = function() ACD:SelectGroup("ElvUI", "filters") end,
- }
- config.args.filters.args.specialPriority = {
- order = 19,
- name = L["Add Special Filter"],
- desc = L["These filters don't use a list of spells like the regular filters. Instead they use the WoW API and some code logic to determine if an aura should be allowed or blocked."],
- type = "select",
- values = function()
- local filters = {}
- local list = E.global.unitframe["specialFilters"]
- if not list then return end
- for filter in pairs(list) do
- filters[filter] = filter
- end
- return filters
- end,
- set = function(info, value)
- filterPriority(auraType, groupName, value)
- updateFunc(UF, groupName, numUnits)
- end
- }
- config.args.filters.args.priority = {
- order = 20,
- name = L["Add Regular Filter"],
- desc = L["These filters use a list of spells to determine if an aura should be allowed or blocked. The content of these filters can be modified in the 'Filters' section of the config."],
- type = "select",
- values = function()
- local filters = {}
- local list = E.global.unitframe["aurafilters"]
- if not list then return end
- for filter in pairs(list) do
- filters[filter] = filter
- end
- return filters
- end,
- set = function(info, value)
- filterPriority(auraType, groupName, value)
- updateFunc(UF, groupName, numUnits)
- end
- }
- config.args.filters.args.resetPriority = {
- order = 21,
- name = L["Reset Priority"],
- desc = L["Reset filter priority to the default state."],
- type = "execute",
- func = function()
- E.db.unitframe.units[groupName][auraType].priority = P.unitframe.units[groupName][auraType].priority
- updateFunc(UF, groupName, numUnits)
- end,
- }
- -- config.args.filters.args.filterPriority = {
- -- order = 22,
- -- dragdrop = true,
- -- type = "multiselect",
- -- name = L["Filter Priority"],
- -- dragOnLeave = function() end, --keep this here
- -- dragOnEnter = function(info, value)
- -- carryFilterTo = info.obj.value
- -- end,
- -- dragOnMouseDown = function(info, value)
- -- carryFilterFrom, carryFilterTo = info.obj.value, nil
- -- end,
- -- dragOnMouseUp = function(info, value)
- -- filterPriority(auraType, groupName, carryFilterTo, nil, carryFilterFrom) --add it in the new spot
- -- carryFilterFrom, carryFilterTo = nil, nil
- -- end,
- -- dragOnClick = function(info, value)
- -- filterPriority(auraType, groupName, carryFilterFrom, true)
- -- end,
- -- stateSwitchGetText = function(button, text, value)
- -- local friend, enemy = match(text, "^Friendly:([^,]*)"), match(text, "^Enemy:([^,]*)")
- -- return (friend and format("|cFF33FF33%s|r %s", L["Friend"], friend)) or (enemy and format("|cFFFF3333%s|r %s", L["Enemy"], enemy))
- -- end,
- -- stateSwitchOnClick = function(info, value)
- -- filterPriority(auraType, groupName, carryFilterFrom, nil, nil, true)
- -- end,
- -- values = function()
- -- local str = E.db.unitframe.units[groupName][auraType].priority
- -- if str == "" then return nil end
- -- return {split(",", str)}
- -- end,
- -- get = function(info, value)
- -- local str = E.db.unitframe.units[groupName][auraType].priority
- -- if str == "" then return nil end
- -- local tbl = {split(",", str)}
- -- return tbl[value]
- -- end,
- -- set = function(info, value)
- -- E.db.unitframe.units[groupName][auraType][ info[getn(info)] ] = nil -- this was being set when drag and drop was first added, setting it to nil to clear tester profiles of this variable
- -- updateFunc(UF, groupName, numUnits)
- -- end
- -- }
- -- config.args.filters.args.spacer1 = {
- -- order = 23,
- -- type = "description",
- -- name = L["Use drag and drop to rearrange filter priority or right click to remove a filter."].."\n"..L["Use Shift+LeftClick to toggle between friendly or enemy or normal state. Normal state will allow the filter to be checked on all units. Friendly state is for friendly units only and enemy state is for enemy units."],
- -- }
return config
end
-local function GetOptionsTable_Castbar(updateFunc, groupName, numUnits)
+local function GetOptionsTable_InformationPanel(updateFunc, groupName, numUnits)
local config = {
- order = 800,
+ order = 4000,
type = "group",
- name = L["Castbar"],
- get = function(info) return E.db.unitframe.units[groupName]["castbar"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName]["castbar"][ info[getn(info)] ] = value; updateFunc(UF, groupName, numUnits) end,
+ name = L["Information Panel"],
+ get = function(info) return E.db.unitframe.units[groupName].infoPanel[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].infoPanel[ info[getn(info)] ] = value updateFunc(UF, groupName, numUnits) end,
args = {
header = {
order = 1,
type = "header",
- name = L["Castbar"],
+ name = L["Information Panel"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ transparent = {
+ order = 3,
+ type = "toggle",
+ name = L["Transparent"]
+ },
+ height = {
+ order = 4,
+ type = "range",
+ name = L["Height"],
+ min = 4, max = 30, step = 1
+ }
+ }
+ }
+
+ return config
+end
+
+local function GetOptionsTable_Health(isGroupFrame, updateFunc, groupName, numUnits)
+ local config = {
+ order = 100,
+ type = "group",
+ name = HEALTH,
+ get = function(info) return E.db.unitframe.units[groupName].health[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].health[ info[getn(info)] ] = value updateFunc(UF, groupName, numUnits) end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = HEALTH
+ },
+ position = {
+ order = 2,
+ type = "select",
+ name = L["Text Position"],
+ values = positionValues
+ },
+ xOffset = {
+ order = 3,
+ type = "range",
+ name = L["Text xOffset"],
+ desc = L["Offset position for text."],
+ min = -300, max = 300, step = 1
+ },
+ yOffset = {
+ order = 4,
+ type = "range",
+ name = L["Text yOffset"],
+ desc = L["Offset position for text."],
+ min = -300, max = 300, step = 1
+ },
+ attachTextTo = {
+ order = 5,
+ type = "select",
+ name = L["Attach Text To"],
+ values = attachToValues
+ },
+ configureButton = {
+ order = 6,
+ type = "execute",
+ name = L["Coloring"],
+ desc = L["This opens the UnitFrames Color settings. These settings affect all unitframes."],
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "generalOptionsGroup", "allColorsGroup", "healthGroup") end
+ },
+ bgUseBarTexture = {
+ order = 7,
+ type = "toggle",
+ name = L["Use Health Texture Backdrop"]
+ },
+ text_format = {
+ order = 100,
+ type = "input",
+ name = L["Text Format"],
+ desc = L["TEXT_FORMAT_DESC"],
+ width = "full"
+ }
+ }
+ }
+
+ if isGroupFrame then
+ config.args.frequentUpdates = {
+ order = 4,
+ type = "toggle",
+ name = L["Frequent Updates"],
+ desc = L["Rapidly update the health, uses more memory and cpu. Only recommended for healing."]
+ }
+
+ config.args.orientation = {
+ order = 5,
+ type = "select",
+ name = L["Statusbar Fill Orientation"],
+ desc = L["Direction the health bar moves when gaining/losing health."],
+ values = {
+ ["HORIZONTAL"] = L["Horizontal"],
+ ["VERTICAL"] = L["Vertical"]
+ }
+ }
+ end
+
+ return config
+end
+
+local function GetOptionsTable_Power(hasDetatchOption, updateFunc, groupName, numUnits, hasStrataLevel)
+ local config = {
+ order = 200,
+ type = "group",
+ name = L["Power"],
+ get = function(info) return E.db.unitframe.units[groupName].power[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].power[ info[getn(info)] ] = value updateFunc(UF, groupName, numUnits) end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Power"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ width = {
+ order = 3,
+ type = "select",
+ name = L["Style"],
+ values = {
+ ["fill"] = L["Filled"],
+ ["spaced"] = L["Spaced"],
+ ["inset"] = L["Inset"]
+ },
+ set = function(info, value)
+ E.db.unitframe.units[groupName].power[ info[getn(info)] ] = value
+
+ local frameName = E:StringTitle(groupName)
+ frameName = "ElvUF_"..frameName
+ frameName = frameName:gsub("t(arget)", "T%1")
+
+ if numUnits then
+ for i = 1, numUnits do
+ if _G[frameName..i] then
+ local min, max = _G[frameName..i].Power:GetMinMaxValues()
+ _G[frameName..i].Power:SetMinMaxValues(min, max + 500)
+ _G[frameName..i].Power:SetValue(1)
+ _G[frameName..i].Power:SetValue(0)
+ end
+ end
+ else
+ if _G[frameName] and _G[frameName].Power then
+ local min, max = _G[frameName].Power:GetMinMaxValues()
+ _G[frameName].Power:SetMinMaxValues(min, max + 500)
+ _G[frameName].Power:SetValue(1)
+ _G[frameName].Power:SetValue(0)
+ else
+ for i = 1, _G[frameName]:GetNumChildren() do
+ local child = select(i, _G[frameName]:GetChildren())
+ if child and child.Power then
+ local min, max = child.Power:GetMinMaxValues()
+ child.Power:SetMinMaxValues(min, max + 500)
+ child.Power:SetValue(1)
+ child.Power:SetValue(0)
+ end
+ end
+ end
+ end
+
+ updateFunc(UF, groupName, numUnits)
+ end
+ },
+ height = {
+ order = 4,
+ type = "range",
+ name = L["Height"],
+ min = ((E.db.unitframe.thinBorders or E.PixelMode) and 3 or 7), max = 50, step = 1
+ },
+ offset = {
+ order = 5,
+ type = "range",
+ name = L["Offset"],
+ desc = L["Offset of the powerbar to the healthbar, set to 0 to disable."],
+ min = 0, max = 20, step = 1
+ },
+ configureButton = {
+ order = 6,
+ type = "execute",
+ name = L["Coloring"],
+ desc = L["This opens the UnitFrames Color settings. These settings affect all unitframes."],
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "general", "allColorsGroup", "powerGroup") end
+ },
+ position = {
+ order = 7,
+ type = "select",
+ name = L["Text Position"],
+ values = positionValues
+ },
+ xOffset = {
+ order = 8,
+ type = "range",
+ name = L["Text xOffset"],
+ desc = L["Offset position for text."],
+ min = -300, max = 300, step = 1
+ },
+ yOffset = {
+ order = 9,
+ type = "range",
+ name = L["Text yOffset"],
+ desc = L["Offset position for text."],
+ min = -300, max = 300, step = 1
+ },
+ attachTextTo = {
+ order = 10,
+ type = "select",
+ name = L["Attach Text To"],
+ values = attachToValues
+ },
+ text_format = {
+ order = 100,
+ type = "input",
+ name = L["Text Format"],
+ desc = L["TEXT_FORMAT_DESC"],
+ width = "full"
+ }
+ }
+ }
+
+ if hasDetatchOption then
+ config.args.detachFromFrame = {
+ type = "toggle",
+ order = 11,
+ name = L["Detach From Frame"]
+ }
+ config.args.detachedWidth = {
+ type = "range",
+ order = 12,
+ name = L["Detached Width"],
+ disabled = function() return not E.db.unitframe.units[groupName].power.detachFromFrame end,
+ min = 15, max = 1000, step = 1
+ }
+ config.args.parent = {
+ type = "select",
+ order = 11,
+ name = L["Parent"],
+ desc = L["Choose UIPARENT to prevent it from hiding with the unitframe."],
+ disabled = function() return not E.db.unitframe.units[groupName].power.detachFromFrame end,
+ values = {
+ ["FRAME"] = "FRAME",
+ ["UIPARENT"] = "UIPARENT"
+ }
+ }
+ end
+
+ if hasStrataLevel then
+ config.args.strataAndLevel = {
+ order = 101,
+ type = "group",
+ name = L["Strata and Level"],
+ get = function(info) return E.db.unitframe.units[groupName].power.strataAndLevel[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].power.strataAndLevel[ info[getn(info)] ] = value updateFunc(UF, groupName, numUnits) end,
+ guiInline = true,
+ args = {
+ useCustomStrata = {
+ order = 1,
+ type = "toggle",
+ name = L["Use Custom Strata"]
+ },
+ frameStrata = {
+ order = 2,
+ type = "select",
+ name = L["Frame Strata"],
+ values = {
+ ["BACKGROUND"] = "BACKGROUND",
+ ["LOW"] = "LOW",
+ ["MEDIUM"] = "MEDIUM",
+ ["HIGH"] = "HIGH",
+ ["DIALOG"] = "DIALOG",
+ ["TOOLTIP"] = "TOOLTIP"
+ }
+ },
+ spacer = {
+ order = 3,
+ type = "description",
+ name = ""
+ },
+ useCustomLevel = {
+ order = 4,
+ type = "toggle",
+ name = L["Use Custom Level"]
+ },
+ frameLevel = {
+ order = 5,
+ type = "range",
+ name = L["Frame Level"],
+ min = 2, max = 128, step = 1
+ }
+ }
+ }
+ end
+
+ return config
+end
+
+local function GetOptionsTable_Name(updateFunc, groupName, numUnits)
+ local config = {
+ order = 300,
+ type = "group",
+ name = NAME,
+ get = function(info) return E.db.unitframe.units[groupName].name[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].name[ info[getn(info)] ] = value updateFunc(UF, groupName, numUnits) end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = NAME
+ },
+ position = {
+ order = 2,
+ type = "select",
+ name = L["Text Position"],
+ values = positionValues
+ },
+ xOffset = {
+ order = 3,
+ type = "range",
+ name = L["Text xOffset"],
+ desc = L["Offset position for text."],
+ min = -300, max = 300, step = 1
+ },
+ yOffset = {
+ order = 4,
+ type = "range",
+ name = L["Text yOffset"],
+ desc = L["Offset position for text."],
+ min = -300, max = 300, step = 1
+ },
+ attachTextTo = {
+ order = 5,
+ type = "select",
+ name = L["Attach Text To"],
+ values = attachToValues
+ },
+ text_format = {
+ order = 100,
+ type = "input",
+ name = L["Text Format"],
+ desc = L["TEXT_FORMAT_DESC"],
+ width = "full"
+ }
+ }
+ }
+
+ return config
+end
+
+local function GetOptionsTable_Portrait(updateFunc, groupName, numUnits)
+ local config = {
+ order = 400,
+ type = "group",
+ name = L["Portrait"],
+ get = function(info) return E.db.unitframe.units[groupName].portrait[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].portrait[ info[getn(info)] ] = value updateFunc(UF, groupName, numUnits) end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Portrait"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"],
+ desc = L["If you have a lot of 3D Portraits active then it will likely have a big impact on your FPS. Disable some portraits if you experience FPS issues."]
+ },
+ overlay = {
+ order = 3,
+ type = "toggle",
+ name = L["Overlay"],
+ desc = L["The Portrait will overlay the Healthbar. This will be automatically happen if the Frame Orientation is set to Middle."]
+ },
+ style = {
+ type = "select",
+ name = L["Style"],
+ desc = L["Select the display method of the portrait."],
+ order = 4,
+ values = {
+ ["2D"] = L["2D"],
+ ["3D"] = L["3D"]
+ }
+ },
+ width = {
+ order = 5,
+ type = "range",
+ name = L["Width"],
+ min = 15, max = 150, step = 1
+ }
+ }
+ }
+
+ return config
+end
+
+local function GetOptionsTable_Castbar(hasTicks, updateFunc, groupName, numUnits)
+ local config = {
+ order = 700,
+ type = "group",
+ name = L["Castbar"],
+ get = function(info) return E.db.unitframe.units[groupName].castbar[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].castbar[ info[getn(info)] ] = value updateFunc(UF, groupName, numUnits) end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Castbar"]
},
matchsize = {
order = 2,
type = "execute",
name = L["Match Frame Width"],
- func = function() E.db.unitframe.units[groupName]["castbar"]["width"] = E.db.unitframe.units[groupName]["width"]; updateFunc(UF, groupName, numUnits) end,
+ func = function() E.db.unitframe.units[groupName].castbar.width = E.db.unitframe.units[groupName].width updateFunc(UF, groupName, numUnits) end
},
forceshow = {
order = 3,
+ type = "execute",
name = L["Show"].." / "..HIDE,
func = function()
local frameName = E:StringTitle(groupName)
frameName = "ElvUF_"..frameName
- frameName = gsub(frameName, "t(arget)", "T%1")
+ frameName = frameName:gsub("t(arget)", "T%1")
- if numUnits then
+ if groupName == "party" then
+ local header = UF.headers[groupName]
+ for i = 1, header:GetNumChildren() do
+ local group = select(i, header:GetChildren())
+ for j = 1, group:GetNumChildren() do
+ --Party unitbutton
+ local unitbutton = select(j, group:GetChildren())
+ local castbar = unitbutton.Castbar
+ if not castbar.oldHide then
+ castbar.oldHide = castbar.Hide
+ castbar.Hide = castbar.Show
+ castbar:Show()
+ else
+ castbar.Hide = castbar.oldHide
+ castbar.oldHide = nil
+ castbar:Hide()
+ end
+ end
+ end
+ elseif numUnits then
for i = 1, numUnits do
local castbar = _G[frameName..i].Castbar
if not castbar.oldHide then
@@ -691,15 +1146,14 @@ local function GetOptionsTable_Castbar(updateFunc, groupName, numUnits)
castbar:Hide()
end
end
- end,
- type = "execute",
+ end
},
configureButton = {
order = 4,
type = "execute",
name = L["Coloring"],
desc = L["This opens the UnitFrames Color settings. These settings affect all unitframes."],
- func = function() ACD:SelectGroup("ElvUI", "unitframe", "generalOptionsGroup", "allColorsGroup", "castBars") end
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "generalOptionsGroup", "allColorsGroup", "castBars") end,
},
enable = {
order = 5,
@@ -710,7 +1164,7 @@ local function GetOptionsTable_Castbar(updateFunc, groupName, numUnits)
order = 6,
type = "range",
name = L["Width"],
- softMax = 600,
+ softMax = 600,
min = 50, max = GetScreenWidth(), step = 1
},
height = {
@@ -719,36 +1173,42 @@ local function GetOptionsTable_Castbar(updateFunc, groupName, numUnits)
name = L["Height"],
min = 10, max = 85, step = 1
},
- format = {
+ latency = {
order = 8,
+ type = "toggle",
+ name = L["Latency"]
+ },
+ format = {
+ order = 9,
type = "select",
name = L["Format"],
values = {
["CURRENTMAX"] = L["Current / Max"],
["CURRENT"] = L["Current"],
- ["REMAINING"] = L["Remaining"]
+ ["REMAINING"] = L["Remaining"],
+ ["REMAININGMAX"] = L["Remaining / Max"]
}
},
spark = {
- order = 9,
+ order = 10,
type = "toggle",
name = L["Spark"],
desc = L["Display a spark texture at the end of the castbar statusbar to help show the differance between castbar and backdrop."]
},
insideInfoPanel = {
- order = 10,
+ order = 11,
type = "toggle",
name = L["Inside Information Panel"],
desc = L["Display the castbar inside the information panel, the icon will be displayed outside the main unitframe."],
disabled = function() return not E.db.unitframe.units[groupName].infoPanel or not E.db.unitframe.units[groupName].infoPanel.enable end
},
iconSettings = {
- order = 11,
+ order = 12,
type = "group",
name = L["Icon"],
guiInline = true,
- get = function(info) return E.db.unitframe.units[groupName]["castbar"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName]["castbar"][ info[getn(info)] ] = value; updateFunc(UF, groupName, numUnits) end,
+ get = function(info) return E.db.unitframe.units[groupName].castbar[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].castbar[ info[getn(info)] ] = value updateFunc(UF, groupName, numUnits) end,
args = {
icon = {
order = 1,
@@ -759,15 +1219,15 @@ local function GetOptionsTable_Castbar(updateFunc, groupName, numUnits)
order = 2,
type = "toggle",
name = L["Icon Inside Castbar"],
- desc = L["Display the castbar icon inside the castbar."]
+ desc = L["Display the castbar icon inside the castbar."],
},
iconSize = {
order = 3,
type = "range",
name = L["Icon Size"],
desc = L["This dictates the size of the icon when it is not attached to the castbar."],
- disabled = function() return E.db.unitframe.units[groupName].castbar.iconAttached end,
- min = 8, max = 150, step = 1
+ min = 8, max = 150, step = 1,
+ disabled = function() return E.db.unitframe.units[groupName].castbar.iconAttached end
},
iconAttachedTo = {
order = 4,
@@ -780,8 +1240,8 @@ local function GetOptionsTable_Castbar(updateFunc, groupName, numUnits)
}
},
iconPosition = {
- type = "select",
order = 5,
+ type = "select",
name = L["Position"],
values = positionValues,
disabled = function() return E.db.unitframe.units[groupName].castbar.iconAttached end
@@ -801,6 +1261,153 @@ local function GetOptionsTable_Castbar(updateFunc, groupName, numUnits)
disabled = function() return E.db.unitframe.units[groupName].castbar.iconAttached end
}
}
+ },
+ strataAndLevel = {
+ order = 13,
+ type = "group",
+ name = L["Strata and Level"],
+ get = function(info) return E.db.unitframe.units[groupName].castbar.strataAndLevel[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].castbar.strataAndLevel[ info[getn(info)] ] = value updateFunc(UF, groupName, numUnits) end,
+ guiInline = true,
+ args = {
+ useCustomStrata = {
+ order = 1,
+ type = "toggle",
+ name = L["Use Custom Strata"]
+ },
+ frameStrata = {
+ order = 2,
+ type = "select",
+ name = L["Frame Strata"],
+ values = {
+ ["BACKGROUND"] = "BACKGROUND",
+ ["LOW"] = "LOW",
+ ["MEDIUM"] = "MEDIUM",
+ ["HIGH"] = "HIGH",
+ ["DIALOG"] = "DIALOG",
+ ["TOOLTIP"] = "TOOLTIP"
+ }
+ },
+ spacer = {
+ order = 3,
+ type = "description",
+ name = ""
+ },
+ useCustomLevel = {
+ order = 4,
+ type = "toggle",
+ name = L["Use Custom Level"]
+ },
+ frameLevel = {
+ order = 5,
+ type = "range",
+ name = L["Frame Level"],
+ min = 2, max = 128, step = 1
+ }
+ }
+ }
+ }
+ }
+
+ if hasTicks then
+ config.args.displayTarget = {
+ order = 14,
+ type = "toggle",
+ name = L["Display Target"],
+ desc = L["Display the target of your current cast. Useful for mouseover casts."]
+ }
+ config.args.ticks = {
+ order = 15,
+ type = "group",
+ name = L["Ticks"],
+ guiInline = true,
+ args = {
+ ticks = {
+ order = 1,
+ type = "toggle",
+ name = L["Ticks"],
+ desc = L["Display tick marks on the castbar for channelled spells. This will adjust automatically for spells like Drain Soul and add additional ticks based on haste."]
+ },
+ tickColor = {
+ order = 2,
+ type = "color",
+ name = COLOR,
+ hasAlpha = true,
+ get = function(info)
+ local c = E.db.unitframe.units[groupName].castbar.tickColor
+ local d = P.unitframe.units[groupName].castbar.tickColor
+ return c.r, c.g, c.b, c.a, d.r, d.g, d.b, d.a
+ end,
+ set = function(info, r, g, b, a)
+ local c = E.db.unitframe.units[groupName].castbar.tickColor
+ c.r, c.g, c.b, c.a = r, g, b, a
+ updateFunc(UF, groupName, numUnits)
+ end
+ },
+ tickWidth = {
+ order = 3,
+ type = "range",
+ name = L["Width"],
+ min = 1, max = 20, step = 1
+ }
+ }
+ }
+ end
+
+ return config
+end
+
+local function GetOptionsTable_RaidIcon(updateFunc, groupName, numUnits)
+ local config = {
+ order = 1000,
+ type = "group",
+ name = L["Raid Icon"],
+ get = function(info) return E.db.unitframe.units[groupName].raidicon[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].raidicon[ info[getn(info)] ] = value updateFunc(UF, groupName, numUnits) end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Raid Icon"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"],
+ },
+ attachTo = {
+ order = 3,
+ type = "select",
+ name = L["Position"],
+ values = positionValues,
+ disabled = function() return not E.db.unitframe.units[groupName].raidicon.enable end
+ },
+ attachToObject = {
+ order = 4,
+ type = "select",
+ name = L["Attach To"],
+ values = attachToValues
+ },
+ size = {
+ order = 5,
+ type = "range",
+ name = L["Size"],
+ min = 8, max = 60, step = 1,
+ disabled = function() return not E.db.unitframe.units[groupName].raidicon.enable end
+ },
+ xOffset = {
+ order = 6,
+ type = "range",
+ name = L["xOffset"],
+ min = -300, max = 300, step = 1,
+ disabled = function() return not E.db.unitframe.units[groupName].raidicon.enable end
+ },
+ yOffset = {
+ order = 7,
+ type = "range",
+ name = L["yOffset"],
+ min = -300, max = 300, step = 1,
+ disabled = function() return not E.db.unitframe.units[groupName].raidicon.enable end
}
}
}
@@ -808,122 +1415,382 @@ local function GetOptionsTable_Castbar(updateFunc, groupName, numUnits)
return config
end
-local function GetOptionsTable_InformationPanel(updateFunc, groupName, numUnits)
-
+local function GetOptionsTable_ResurrectIcon(updateFunc, groupName, numUnits)
local config = {
- order = 4000,
+ order = 5001,
type = "group",
- name = L["Information Panel"],
- get = function(info) return E.db.unitframe.units[groupName]["infoPanel"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName]["infoPanel"][ info[getn(info)] ] = value; updateFunc(UF, groupName, numUnits) end,
+ name = L["Resurrect Icon"],
+ get = function(info) return E.db.unitframe.units[groupName].resurrectIcon[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].resurrectIcon[ info[getn(info)] ] = value updateFunc(UF, groupName, numUnits) end,
args = {
header = {
order = 1,
type = "header",
- name = L["Information Panel"],
+ name = L["Resurrect Icon"]
},
enable = {
- type = "toggle",
order = 2,
- name = L["Enable"],
- },
- transparent = {
type = "toggle",
+ name = L["Enable"]
+ },
+ attachTo = {
order = 3,
- name = L["Transparent"],
+ type = "select",
+ name = L["Position"],
+ values = positionValues
},
- height = {
- type = "range",
+ attachToObject = {
order = 4,
- name = L["Height"],
- min = 4, max = 30, step = 1,
+ type = "select",
+ name = L["Attach To"],
+ values = attachToValues
},
+ size = {
+ order = 5,
+ type = "range",
+ name = L["Size"],
+ min = 8, max = 60, step = 1
+ },
+ xOffset = {
+ order = 6,
+ type = "range",
+ name = L["xOffset"],
+ min = -300, max = 300, step = 1
+ },
+ yOffset = {
+ order = 7,
+ type = "range",
+ name = L["yOffset"],
+ min = -300, max = 300, step = 1
+ }
}
}
return config
end
-local function GetOptionsTable_Health(isGroupFrame, updateFunc, groupName, numUnits)
+local function GetOptionsTable_RaidDebuff(updateFunc, groupName)
local config = {
- order = 100,
+ order = 800,
type = "group",
- name = HEALTH,
- get = function(info) return E.db.unitframe.units[groupName]["health"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName]["health"][ info[getn(info)] ] = value; updateFunc(UF, groupName, numUnits) end,
+ name = L["RaidDebuff Indicator"],
+ get = function(info) return E.db.unitframe.units[groupName].rdebuffs[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].rdebuffs[ info[getn(info)] ] = value updateFunc(UF, groupName) end,
args = {
header = {
order = 1,
type = "header",
- name = HEALTH,
+ name = L["RaidDebuff Indicator"]
},
- position = {
- type = "select",
+ enable = {
order = 2,
- name = L["Text Position"],
- values = positionValues,
+ type = "toggle",
+ name = L["Enable"]
},
- xOffset = {
+ showDispellableDebuff = {
order = 3,
- type = "range",
- name = L["Text xOffset"],
- desc = L["Offset position for text."],
- min = -300, max = 300, step = 1,
+ type = "toggle",
+ name = L["Show Dispellable Debuffs"]
},
- yOffset = {
+ size = {
order = 4,
type = "range",
- name = L["Text yOffset"],
- desc = L["Offset position for text."],
- min = -300, max = 300, step = 1,
+ name = L["Size"],
+ min = 8, max = 100, step = 1
},
- attachTextTo = {
- type = "select",
+ font = {
order = 5,
- name = L["Attach Text To"],
- values = {
- ["Health"] = HEALTH,
- ["Power"] = L["Power"],
- ["InfoPanel"] = L["Information Panel"],
- ["Frame"] = L["Frame"],
- },
+ type = "select", dialogControl = "LSM30_Font",
+ name = L["Font"],
+ values = AceGUIWidgetLSMlists.font
},
- text_format = {
- order = 100,
- name = L["Text Format"],
- type = "input",
- width = "full",
- desc = L["TEXT_FORMAT_DESC"],
+ fontSize = {
+ order = 6,
+ type = "range",
+ name = FONT_SIZE,
+ min = 7, max = 22, step = 1
+ },
+ fontOutline = {
+ order = 7,
+ type = "select",
+ name = L["Font Outline"],
+ values = {
+ ["NONE"] = NONE,
+ ["OUTLINE"] = "OUTLINE",
+ ["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
+ ["THICKOUTLINE"] = "THICKOUTLINE"
+ }
+ },
+ xOffset = {
+ order = 8,
+ type = "range",
+ name = L["xOffset"],
+ min = -300, max = 300, step = 1
+ },
+ yOffset = {
+ order = 9,
+ type = "range",
+ name = L["yOffset"],
+ min = -300, max = 300, step = 1
},
configureButton = {
- order = 6,
- name = L["Coloring"],
- desc = L["This opens the UnitFrames Color settings. These settings affect all unitframes."],
+ order = 10,
type = "execute",
- func = function() ACD:SelectGroup("ElvUI", "unitframe", "generalOptionsGroup", "allColorsGroup", "healthGroup") end,
+ name = L["Configure Auras"],
+ func = function() E:SetToFilterConfig("RaidDebuffs") end
},
- },
+ duration = {
+ order = 11,
+ type = "group",
+ guiInline = true,
+ name = L["Duration Text"],
+ get = function(info) return E.db.unitframe.units[groupName].rdebuffs.duration[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].rdebuffs.duration[ info[getn(info)] ] = value updateFunc(UF, groupName) end,
+ args = {
+ position = {
+ order = 1,
+ type = "select",
+ name = L["Position"],
+ values = positionValues
+ },
+ xOffset = {
+ order = 2,
+ type = "range",
+ name = L["xOffset"],
+ min = -10, max = 10, step = 1
+ },
+ yOffset = {
+ order = 3,
+ type = "range",
+ name = L["yOffset"],
+ min = -10, max = 10, step = 1
+ },
+ color = {
+ order = 4,
+ type = "color",
+ name = COLOR,
+ hasAlpha = true,
+ get = function(info)
+ local c = E.db.unitframe.units.raid.rdebuffs.duration.color
+ local d = P.unitframe.units.raid.rdebuffs.duration.color
+ return c.r, c.g, c.b, c.a, d.r, d.g, d.b, d.a
+ end,
+ set = function(info, r, g, b, a)
+ local c = E.db.unitframe.units.raid.rdebuffs.duration.color
+ c.r, c.g, c.b, c.a = r, g, b, a
+ UF:CreateAndUpdateHeaderGroup("raid")
+ end
+ }
+ }
+ },
+ stack = {
+ order = 12,
+ type = "group",
+ guiInline = true,
+ name = L["Stack Counter"],
+ get = function(info) return E.db.unitframe.units[groupName].rdebuffs.stack[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].rdebuffs.stack[ info[getn(info)] ] = value updateFunc(UF, groupName) end,
+ args = {
+ position = {
+ order = 1,
+ type = "select",
+ name = L["Position"],
+ values = positionValues
+ },
+ xOffset = {
+ order = 2,
+ type = "range",
+ name = L["xOffset"],
+ min = -10, max = 10, step = 1
+ },
+ yOffset = {
+ order = 3,
+ type = "range",
+ name = L["yOffset"],
+ min = -10, max = 10, step = 1
+ },
+ color = {
+ order = 4,
+ type = "color",
+ name = COLOR,
+ hasAlpha = true,
+ get = function(info)
+ local c = E.db.unitframe.units[groupName].rdebuffs.stack.color
+ local d = P.unitframe.units[groupName].rdebuffs.stack.color
+ return c.r, c.g, c.b, c.a, d.r, d.g, d.b, d.a
+ end,
+ set = function(info, r, g, b, a)
+ local c = E.db.unitframe.units[groupName].rdebuffs.stack.color
+ c.r, c.g, c.b, c.a = r, g, b, a
+ updateFunc(UF, groupName)
+ end
+ }
+ }
+ }
+ }
}
- if isGroupFrame then
- config.args.frequentUpdates = {
- type = "toggle",
- order = 2,
- name = L["Frequent Updates"],
- desc = L["Rapidly update the health, uses more memory and cpu. Only recommended for healing."],
- }
+ return config
+end
- config.args.orientation = {
- type = "select",
- order = 3,
- name = L["Statusbar Fill Orientation"],
- desc = L["Direction the health bar moves when gaining/losing health."],
- values = {
- ["HORIZONTAL"] = L["Horizontal"],
- ["VERTICAL"] = L["Vertical"],
+local function GetOptionsTable_ReadyCheckIcon(updateFunc, groupName)
+ local config = {
+ order = 700,
+ type = "group",
+ name = L["Ready Check Icon"],
+ get = function(info) return E.db.unitframe.units[groupName].readycheckIcon[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].readycheckIcon[ info[getn(info)] ] = value updateFunc(UF, groupName) end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Ready Check Icon"]
},
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ size = {
+ order = 3,
+ type = "range",
+ name = L["Size"],
+ min = 8, max = 60, step = 1
+ },
+ attachTo = {
+ order = 4,
+ type = "select",
+ name = L["Attach To"],
+ values = attachToValues
+ },
+ position = {
+ order = 5,
+ type = "select",
+ name = L["Position"],
+ values = positionValues
+ },
+ xOffset = {
+ order = 6,
+ type = "range",
+ name = L["xOffset"],
+ min = -300, max = 300, step = 1
+ },
+ yOffset = {
+ order = 7,
+ type = "range",
+ name = L["yOffset"],
+ min = -300, max = 300, step = 1
+ }
}
- end
+ }
+
+ return config
+end
+
+local function GetOptionsTable_GPS(groupName)
+ local config = {
+ order = 3000,
+ type = "group",
+ name = L["GPS Arrow"],
+ get = function(info) return E.db.unitframe.units[groupName].GPSArrow[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[groupName].GPSArrow[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup(groupName) end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["GPS Arrow"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ onMouseOver = {
+ order = 3,
+ type = "toggle",
+ name = L["Mouseover"],
+ desc = L["Only show when you are mousing over a frame."]
+ },
+ outOfRange = {
+ order = 4,
+ type = "toggle",
+ name = L["Out of Range"],
+ desc = L["Only show when the unit is not in range."]
+ },
+ size = {
+ order = 5,
+ type = "range",
+ name = L["Size"],
+ min = 8, max = 60, step = 1
+ },
+ xOffset = {
+ order = 6,
+ type = "range",
+ name = L["xOffset"],
+ min = -300, max = 300, step = 1
+ },
+ yOffset = {
+ order = 7,
+ type = "range",
+ name = L["yOffset"],
+ min = -300, max = 300, step = 1
+ }
+ }
+ }
+
+ return config
+end
+
+local function GetOptionsTableForNonGroup_GPS(unit)
+ local config = {
+ order = 3000,
+ type = "group",
+ name = L["GPS Arrow"],
+ get = function(info) return E.db.unitframe.units[unit].GPSArrow[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units[unit].GPSArrow[ info[getn(info)] ] = value UF:CreateAndUpdateUF(unit) end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["GPS Arrow"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"],
+ },
+ onMouseOver = {
+ order = 3,
+ type = "toggle",
+ name = L["Mouseover"],
+ desc = L["Only show when you are mousing over a frame."]
+ },
+ outOfRange = {
+ order = 4,
+ type = "toggle",
+ name = L["Out of Range"],
+ desc = L["Only show when the unit is not in range."]
+ },
+ size = {
+ order = 5,
+ type = "range",
+ name = L["Size"],
+ min = 8, max = 60, step = 1
+ },
+ xOffset = {
+ order = 6,
+ type = "range",
+ name = L["xOffset"],
+ min = -300, max = 300, step = 1
+ },
+ yOffset = {
+ order = 7,
+ type = "range",
+ name = L["yOffset"],
+ min = -300, max = 300, step = 1
+ }
+ }
+ }
return config
end
@@ -943,7 +1810,7 @@ local function CreateCustomTextGroup(unit, objectName)
name = objectName,
get = function(info) return E.db.unitframe.units[unit].customTexts[objectName][ info[getn(info)] ] end,
set = function(info, value)
- E.db.unitframe.units[unit].customTexts[objectName][ info[getn(info)] ] = value;
+ E.db.unitframe.units[unit].customTexts[objectName][ info[getn(info)] ] = value
if unit == "party" or find(unit, "raid") then
UF:CreateAndUpdateHeaderGroup(unit)
@@ -958,108 +1825,110 @@ local function CreateCustomTextGroup(unit, objectName)
name = objectName,
},
delete = {
- type = "execute",
order = 2,
+ type = "execute",
name = DELETE,
func = function()
- E.Options.args.unitframe.args[unit].args.customText.args[objectName] = nil;
- E.db.unitframe.units[unit].customTexts[objectName] = nil;
+ E.Options.args.unitframe.args[unit].args.customText.args[objectName] = nil
+ E.db.unitframe.units[unit].customTexts[objectName] = nil
if unit == "party" or find(unit, "raid") then
- for i=1, UF[unit]:GetNumChildren() do
+ for i = 1, UF[unit]:GetNumChildren() do
local child = select(i, UF[unit]:GetChildren())
- if child.Tag then
- child:Tag(child["customTexts"][objectName], "");
- child["customTexts"][objectName]:Hide();
+ if child.Untag then
+ child:Untag(child.customTexts[objectName])
+ child.customTexts[objectName]:Hide()
+ child.customTexts[objectName] = nil
else
- for x=1, child:GetNumChildren() do
+ for x = 1, child:GetNumChildren() do
local c2 = select(x, child:GetChildren())
- if(c2.Tag) then
- c2:Tag(c2["customTexts"][objectName], "");
- c2["customTexts"][objectName]:Hide();
+ if c2.Untag then
+ c2:Untag(c2.customTexts[objectName])
+ c2.customTexts[objectName]:Hide()
+ c2.customTexts[objectName] = nil
end
end
end
end
elseif UF[unit] then
- UF[unit]:Tag(UF[unit]["customTexts"][objectName], "");
- UF[unit]["customTexts"][objectName]:Hide();
+ UF[unit]:Untag(UF[unit].customTexts[objectName])
+ UF[unit].customTexts[objectName]:Hide()
+ UF[unit].customTexts[objectName] = nil
end
- end,
+ end
+ },
+ enable = {
+ order = 3,
+ type = "toggle",
+ name = L["Enable"],
},
font = {
+ order = 4,
type = "select", dialogControl = "LSM30_Font",
- order = 3,
name = L["Font"],
- values = AceGUIWidgetLSMlists.font,
+ values = AceGUIWidgetLSMlists.font
},
size = {
- order = 4,
- name = FONT_SIZE,
+ order = 5,
type = "range",
- min = 4, max = 212, step = 1,
+ name = FONT_SIZE,
+ min = 4, max = 32, step = 1
},
fontOutline = {
- order = 5,
+ order = 6,
+ type = "select",
name = L["Font Outline"],
desc = L["Set the font outline."],
- type = "select",
values = {
["NONE"] = NONE,
["OUTLINE"] = "OUTLINE",
-
["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
- ["THICKOUTLINE"] = "THICKOUTLINE",
- },
+ ["THICKOUTLINE"] = "THICKOUTLINE"
+ }
},
justifyH = {
- order = 6,
+ order = 7,
type = "select",
name = L["JustifyH"],
desc = L["Sets the font instance's horizontal text alignment style."],
values = {
["CENTER"] = L["Center"],
["LEFT"] = L["Left"],
- ["RIGHT"] = L["Right"],
- },
+ ["RIGHT"] = L["Right"]
+ }
},
xOffset = {
- order = 7,
- type = "range",
- name = L["xOffset"],
- min = -400, max = 400, step = 1,
- },
- yOffset = {
order = 8,
type = "range",
+ name = L["xOffset"],
+ min = -400, max = 400, step = 1
+ },
+ yOffset = {
+ order = 9,
+ type = "range",
name = L["yOffset"],
- min = -400, max = 400, step = 1,
+ min = -400, max = 400, step = 1
},
attachTextTo = {
type = "select",
- order = 9,
+ order = 10,
name = L["Attach Text To"],
- values = {
- ["Health"] = HEALTH,
- ["Power"] = L["Power"],
- ["InfoPanel"] = L["Information Panel"],
- ["Frame"] = L["Frame"],
- },
+ values = attachToValues
},
text_format = {
order = 100,
- name = L["Text Format"],
type = "input",
- width = "full",
+ name = L["Text Format"],
desc = L["TEXT_FORMAT_DESC"],
- },
- },
+ width = "full"
+ }
+ }
}
tinsert(CUSTOMTEXT_CONFIGS, E.Options.args.unitframe.args[unit].args.customText.args[objectName]) --Register this custom text config to be hidden on profile change
end
-local function GetOptionsTable_CustomText(updateFunc, groupName, numUnits, orderOverride)
+local function GetOptionsTable_CustomText(updateFunc, groupName, numUnits)
local config = {
order = 5100,
type = "group",
@@ -1078,20 +1947,20 @@ local function GetOptionsTable_CustomText(updateFunc, groupName, numUnits, order
get = function() return "" end,
set = function(info, textName)
for object, _ in pairs(E.db.unitframe.units[groupName]) do
- if object:lower() == textName:lower() then
+ if lower(object) == lower(textName) then
E:Print(L["The name you have selected is already in use by another element."])
return
end
end
if not E.db.unitframe.units[groupName].customTexts then
- E.db.unitframe.units[groupName].customTexts = {};
+ E.db.unitframe.units[groupName].customTexts = {}
end
local frameName = "ElvUF_"..E:StringTitle(groupName)
- if E.db.unitframe.units[groupName].customTexts[textName] or (_G[frameName] and _G[frameName]["customTexts"] and _G[frameName]["customTexts"][textName] or _G[frameName.."Group1UnitButton1"] and _G[frameName.."Group1UnitButton1"]["customTexts"] and _G[frameName.."Group1UnitButton1"][textName]) then
+ if E.db.unitframe.units[groupName].customTexts[textName] or (_G[frameName] and _G[frameName].customTexts and _G[frameName].customTexts[textName] or _G[frameName.."Group1UnitButton1"] and _G[frameName.."Group1UnitButton1"].customTexts and _G[frameName.."Group1UnitButton1"][textName]) then
E:Print(L["The name you have selected is already in use by another element."])
- return;
+ return
end
E.db.unitframe.units[groupName].customTexts[textName] = {
@@ -1103,729 +1972,11 @@ local function GetOptionsTable_CustomText(updateFunc, groupName, numUnits, order
["justifyH"] = "CENTER",
["fontOutline"] = E.db.unitframe.fontOutline,
["attachTextTo"] = "Health"
- };
+ }
CreateCustomTextGroup(groupName, textName)
updateFunc(UF, groupName, numUnits)
- end,
- },
- },
- }
-
- return config
-end
-
-local function GetOptionsTable_Name(updateFunc, groupName, numUnits)
- local config = {
- order = 400,
- type = "group",
- name = NAME,
- get = function(info) return E.db.unitframe.units[groupName]["name"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName]["name"][ info[getn(info)] ] = value; updateFunc(UF, groupName, numUnits) end,
- args = {
- header = {
- order = 1,
- type = "header",
- name = NAME,
- },
- position = {
- type = "select",
- order = 2,
- name = L["Text Position"],
- values = positionValues,
- },
- xOffset = {
- order = 3,
- type = "range",
- name = L["Text xOffset"],
- desc = L["Offset position for text."],
- min = -300, max = 300, step = 1,
- },
- yOffset = {
- order = 4,
- type = "range",
- name = L["Text yOffset"],
- desc = L["Offset position for text."],
- min = -300, max = 300, step = 1,
- },
- attachTextTo = {
- type = "select",
- order = 5,
- name = L["Attach Text To"],
- values = {
- ["Health"] = HEALTH,
- ["Power"] = L["Power"],
- ["InfoPanel"] = L["Information Panel"],
- ["Frame"] = L["Frame"],
- },
- },
- text_format = {
- order = 100,
- name = L["Text Format"],
- type = "input",
- width = "full",
- desc = L["TEXT_FORMAT_DESC"],
- },
- },
- }
-
- return config
-end
-
-local function GetOptionsTable_Portrait(updateFunc, groupName, numUnits)
- local config = {
- order = 400,
- type = "group",
- name = L["Portrait"],
- get = function(info) return E.db.unitframe.units[groupName]["portrait"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName]["portrait"][ info[getn(info)] ] = value; updateFunc(UF, groupName, numUnits) end,
- args = {
- header = {
- order = 1,
- type = "header",
- name = L["Portrait"],
- },
- enable = {
- type = "toggle",
- order = 2,
- name = L["Enable"],
- desc = L["If you have a lot of 3D Portraits active then it will likely have a big impact on your FPS. Disable some portraits if you experience FPS issues."],
- },
- width = {
- type = "range",
- order = 3,
- name = L["Width"],
- min = 15, max = 150, step = 1,
- },
- overlay = {
- type = "toggle",
- name = L["Overlay"],
- desc = L["Overlay the healthbar"],
- order = 4,
- },
- style = {
- type = "select",
- name = L["Style"],
- desc = L["Select the display method of the portrait."],
- order = 5,
- values = {
- ["2D"] = L["2D"],
- ["3D"] = L["3D"],
- },
- },
- },
- }
-
- return config
-end
-
-local function GetOptionsTable_Power(hasDetatchOption, updateFunc, groupName, numUnits, hasStrataLevel)
- local config = {
- order = 200,
- type = "group",
- name = L["Power"],
- get = function(info) return E.db.unitframe.units[groupName]["power"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName]["power"][ info[getn(info)] ] = value; updateFunc(UF, groupName, numUnits) end,
- args = {
- header = {
- order = 1,
- type = "header",
- name = L["Power"],
- },
- enable = {
- type = "toggle",
- order = 2,
- name = L["Enable"],
- },
- text_format = {
- order = 100,
- name = L["Text Format"],
- type = "input",
- width = "full",
- desc = L["TEXT_FORMAT_DESC"],
- },
- width = {
- type = "select",
- order = 3,
- name = L["Style"],
- values = fillValues,
- set = function(info, value)
- E.db.unitframe.units[groupName]["power"][ info[getn(info)] ] = value;
-
- local frameName = E:StringTitle(groupName)
- frameName = "ElvUF_"..frameName
- frameName = string.gsub(frameName, "t(arget)", "T%1")
-
- if numUnits then
- for i=1, numUnits do
- if _G[frameName..i] then
- local min, max = _G[frameName..i].Power:GetMinMaxValues()
- _G[frameName..i].Power:SetMinMaxValues(min, max + 500)
- _G[frameName..i].Power:SetValue(1)
- _G[frameName..i].Power:SetValue(0)
- end
- end
- else
- if _G[frameName] and _G[frameName].Power then
- local min, max = _G[frameName].Power:GetMinMaxValues()
- _G[frameName].Power:SetMinMaxValues(min, max + 500)
- _G[frameName].Power:SetValue(1)
- _G[frameName].Power:SetValue(0)
- else
- for i=1, _G[frameName]:GetNumChildren() do
- local child = select(i, _G[frameName]:GetChildren())
- if child and child.Power then
- local min, max = child.Power:GetMinMaxValues()
- child.Power:SetMinMaxValues(min, max + 500)
- child.Power:SetValue(1)
- child.Power:SetValue(0)
- end
- end
- end
- end
-
- updateFunc(UF, groupName, numUnits)
- end,
- },
- height = {
- type = "range",
- name = L["Height"],
- order = 4,
- min = ((E.db.unitframe.thinBorders or E.PixelMode) and 3 or 7), max = 50, step = 1,
- },
- offset = {
- type = "range",
- name = L["Offset"],
- desc = L["Offset of the powerbar to the healthbar, set to 0 to disable."],
- order = 5,
- min = 0, max = 20, step = 1,
- },
- configureButton = {
- order = 6,
- name = L["Coloring"],
- desc = L["This opens the UnitFrames Color settings. These settings affect all unitframes."],
- type = "execute",
- func = function() ACD:SelectGroup("ElvUI", "unitframe", "generalOptionsGroup", "allColorsGroup", "powerGroup") end,
- },
- position = {
- type = "select",
- order = 7,
- name = L["Text Position"],
- values = positionValues,
- },
- xOffset = {
- order = 8,
- type = "range",
- name = L["Text xOffset"],
- desc = L["Offset position for text."],
- min = -300, max = 300, step = 1,
- },
- yOffset = {
- order = 9,
- type = "range",
- name = L["Text yOffset"],
- desc = L["Offset position for text."],
- min = -300, max = 300, step = 1,
- },
- attachTextTo = {
- type = "select",
- order = 10,
- name = L["Attach Text To"],
- values = {
- ["Health"] = HEALTH,
- ["Power"] = L["Power"],
- ["InfoPanel"] = L["Information Panel"],
- ["Frame"] = L["Frame"],
- },
- },
- },
- }
-
- if hasDetatchOption then
- config.args.detachFromFrame = {
- type = "toggle",
- order = 11,
- name = L["Detach From Frame"],
- }
- config.args.detachedWidth = {
- type = "range",
- order = 12,
- name = L["Detached Width"],
- disabled = function() return not E.db.unitframe.units[groupName].power.detachFromFrame end,
- min = 15, max = 450, step = 1,
- }
- config.args.parent = {
- type = "select",
- order = 13,
- name = L["Parent"],
- desc = L["Choose UIPARENT to prevent it from hiding with the unitframe."],
- disabled = function() return not E.db.unitframe.units[groupName].power.detachFromFrame end,
- values = {
- ["FRAME"] = "FRAME",
- ["UIPARENT"] = "UIPARENT",
- },
- }
- end
-
- if hasStrataLevel then
- config.args.strataAndLevel = {
- order = 101,
- type = "group",
- name = L["Strata and Level"],
- get = function(info) return E.db.unitframe.units[groupName]["power"]["strataAndLevel"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName]["power"]["strataAndLevel"][ info[getn(info)] ] = value; updateFunc(UF, groupName, numUnits) end,
- guiInline = true,
- args = {
- useCustomStrata = {
- order = 1,
- type = "toggle",
- name = L["Use Custom Strata"],
- },
- frameStrata = {
- order = 2,
- type = "select",
- name = L["Frame Strata"],
- values = {
- ["BACKGROUND"] = "BACKGROUND",
- ["LOW"] = "LOW",
- ["MEDIUM"] = "MEDIUM",
- ["HIGH"] = "HIGH",
- ["DIALOG"] = "DIALOG",
- ["TOOLTIP"] = "TOOLTIP",
- },
- },
- spacer = {
- order = 3,
- type = "description",
- name = "",
- },
- useCustomLevel = {
- order = 4,
- type = "toggle",
- name = L["Use Custom Level"],
- },
- frameLevel = {
- order = 5,
- type = "range",
- name = L["Frame Level"],
- min = 2, max = 128, step = 1,
- },
- },
- }
- end
-
- return config
-end
-
-local function GetOptionsTable_RaidIcon(updateFunc, groupName, numUnits)
- local config = {
- order = 5000,
- type = "group",
- name = L["Raid Icon"],
- get = function(info) return E.db.unitframe.units[groupName]["raidicon"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName]["raidicon"][ info[getn(info)] ] = value; updateFunc(UF, groupName, numUnits) end,
- args = {
- header = {
- order = 1,
- type = "header",
- name = L["Raid Icon"],
- },
- enable = {
- type = "toggle",
- order = 2,
- name = L["Enable"],
- },
- attachTo = {
- type = "select",
- order = 3,
- name = L["Position"],
- values = positionValues,
- },
- attachToObject = {
- type = "select",
- order = 4,
- name = L["Attach To"],
- values = {
- ["Health"] = HEALTH,
- ["Power"] = L["Power"],
- ["InfoPanel"] = L["Information Panel"],
- ["Frame"] = L["Frame"],
- },
- },
- size = {
- type = "range",
- name = L["Size"],
- order = 4,
- min = 8, max = 60, step = 1,
- },
- xOffset = {
- order = 5,
- type = "range",
- name = L["xOffset"],
- min = -300, max = 300, step = 1,
- },
- yOffset = {
- order = 6,
- type = "range",
- name = L["yOffset"],
- min = -300, max = 300, step = 1,
- },
- },
- }
-
- return config
-end
-
-local function GetOptionsTable_RaidDebuff(updateFunc, groupName)
- local config = {
- order = 800,
- type = "group",
- name = L["RaidDebuff Indicator"],
- get = function(info) return E.db.unitframe.units[groupName]["rdebuffs"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName]["rdebuffs"][ info[getn(info)] ] = value; updateFunc(UF, groupName) end,
- args = {
- header = {
- order = 1,
- type = "header",
- name = L["RaidDebuff Indicator"],
- },
- enable = {
- order = 2,
- type = "toggle",
- name = L["Enable"],
- },
- showDispellableDebuff = {
- order = 3,
- type = "toggle",
- name = L["Show Dispellable Debuffs"],
- },
- onlyMatchSpellID = {
- order = 4,
- type = "toggle",
- name = L["Only Match SpellID"],
- desc = L["When enabled it will only show spells that were added to the filter using a spell ID and not a name."],
- },
- size = {
- order = 4,
- type = "range",
- name = L["Size"],
- min = 8, max = 100, step = 1,
- },
- font = {
- order = 5,
- type = "select", dialogControl = "LSM30_Font",
- name = L["Font"],
- values = AceGUIWidgetLSMlists.font,
- },
- fontSize = {
- order = 6,
- type = "range",
- name = FONT_SIZE,
- min = 7, max = 212, step = 1,
- },
- fontOutline = {
- order = 7,
- type = "select",
- name = L["Font Outline"],
- values = {
- ["NONE"] = NONE,
- ["OUTLINE"] = "OUTLINE",
- ["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
- ["THICKOUTLINE"] = "THICKOUTLINE",
- },
- },
- xOffset = {
- order = 8,
- type = "range",
- name = L["xOffset"],
- min = -300, max = 300, step = 1,
- },
- yOffset = {
- order = 9,
- type = "range",
- name = L["yOffset"],
- min = -300, max = 300, step = 1,
- },
- configureButton = {
- order = 10,
- type = "execute",
- name = L["Configure Auras"],
- func = function() E:SetToFilterConfig("RaidDebuffs") end,
- },
- duration = {
- order = 11,
- type = "group",
- guiInline = true,
- name = L["Duration Text"],
- get = function(info) return E.db.unitframe.units[groupName]["rdebuffs"]["duration"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName]["rdebuffs"]["duration"][ info[getn(info)] ] = value; updateFunc(UF, groupName) end,
- args = {
- position = {
- order = 1,
- type = "select",
- name = L["Position"],
- values = {
- ["TOP"] = "TOP",
- ["LEFT"] = "LEFT",
- ["RIGHT"] = "RIGHT",
- ["BOTTOM"] = "BOTTOM",
- ["CENTER"] = "CENTER",
- ["TOPLEFT"] = "TOPLEFT",
- ["TOPRIGHT"] = "TOPRIGHT",
- ["BOTTOMLEFT"] = "BOTTOMLEFT",
- ["BOTTOMRIGHT"] = "BOTTOMRIGHT",
- },
- },
- xOffset = {
- order = 2,
- type = "range",
- name = L["xOffset"],
- min = -10, max = 10, step = 1,
- },
- yOffset = {
- order = 3,
- type = "range",
- name = L["yOffset"],
- min = -10, max = 10, step = 1,
- },
- color = {
- order = 4,
- type = "color",
- name = COLOR,
- hasAlpha = true,
- get = function(info)
- local c = E.db.unitframe.units.raid.rdebuffs.duration.color
- local d = P.unitframe.units.raid.rdebuffs.duration.color
- return c.r, c.g, c.b, c.a, d.r, d.g, d.b, d.a
- end,
- set = function(info, r, g, b, a)
- local c = E.db.unitframe.units.raid.rdebuffs.duration.color
- c.r, c.g, c.b, c.a = r, g, b, a
- UF:CreateAndUpdateHeaderGroup("raid")
- end,
- },
- },
- },
- stack = {
- order = 12,
- type = "group",
- guiInline = true,
- name = L["Stack Counter"],
- get = function(info) return E.db.unitframe.units[groupName]["rdebuffs"]["stack"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName]["rdebuffs"]["stack"][ info[getn(info)] ] = value; updateFunc(UF, groupName) end,
- args = {
- position = {
- order = 1,
- type = "select",
- name = L["Position"],
- values = {
- ["TOP"] = "TOP",
- ["LEFT"] = "LEFT",
- ["RIGHT"] = "RIGHT",
- ["BOTTOM"] = "BOTTOM",
- ["CENTER"] = "CENTER",
- ["TOPLEFT"] = "TOPLEFT",
- ["TOPRIGHT"] = "TOPRIGHT",
- ["BOTTOMLEFT"] = "BOTTOMLEFT",
- ["BOTTOMRIGHT"] = "BOTTOMRIGHT",
- },
- },
- xOffset = {
- order = 2,
- type = "range",
- name = L["xOffset"],
- min = -10, max = 10, step = 1,
- },
- yOffset = {
- order = 3,
- type = "range",
- name = L["yOffset"],
- min = -10, max = 10, step = 1,
- },
- color = {
- order = 4,
- type = "color",
- name = COLOR,
- hasAlpha = true,
- get = function(info)
- local c = E.db.unitframe.units[groupName].rdebuffs.stack.color
- local d = P.unitframe.units[groupName].rdebuffs.stack.color
- return c.r, c.g, c.b, c.a, d.r, d.g, d.b, d.a
- end,
- set = function(info, r, g, b, a)
- local c = E.db.unitframe.units[groupName].rdebuffs.stack.color
- c.r, c.g, c.b, c.a = r, g, b, a
- updateFunc(UF, groupName)
- end,
- },
- },
- },
- },
- }
-
- return config
-end
-
-local function GetOptionsTable_ReadyCheckIcon(updateFunc, groupName)
- local config = {
- order = 900,
- type = "group",
- name = L["Ready Check Icon"],
- get = function(info) return E.db.unitframe.units[groupName]["readycheckIcon"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName]["readycheckIcon"][ info[getn(info)] ] = value; updateFunc(UF, groupName) end,
- args = {
- header = {
- order = 1,
- type = "header",
- name = L["Ready Check Icon"],
- },
- enable = {
- order = 2,
- type = "toggle",
- name = L["Enable"],
- },
- size = {
- order = 3,
- type = "range",
- name = L["Size"],
- min = 8, max = 60, step = 1,
- },
- attachTo = {
- order = 4,
- type = "select",
- name = L["Attach To"],
- values = {
- ["Health"] = HEALTH,
- ["Power"] = L["Power"],
- ["InfoPanel"] = L["Information Panel"],
- ["Frame"] = L["Frame"],
- },
- },
- position = {
- order = 5,
- type = "select",
- name = L["Position"],
- values = positionValues,
- },
- xOffset = {
- order = 6,
- type = "range",
- name = L["xOffset"],
- min = -300, max = 300, step = 1,
- },
- yOffset = {
- order = 7,
- type = "range",
- name = L["yOffset"],
- min = -300, max = 300, step = 1,
- },
- },
- }
-
- return config
-end
-
-local function GetOptionsTable_GPS(groupName)
- local config = {
- order = 1000,
- type = "group",
- name = L["GPS Arrow"],
- get = function(info) return E.db.unitframe.units[groupName]["GPSArrow"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[groupName]["GPSArrow"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup(groupName) end,
- args = {
- header = {
- order = 1,
- type = "header",
- name = L["GPS Arrow"],
- },
- enable = {
- order = 2,
- type = "toggle",
- name = L["Enable"],
- },
- onMouseOver = {
- order = 3,
- type = "toggle",
- name = L["Mouseover"],
- desc = L["Only show when you are mousing over a frame."],
- },
- outOfRange = {
- order = 4,
- type = "toggle",
- name = L["Out of Range"],
- desc = L["Only show when the unit is not in range."],
- },
- size = {
- order = 5,
- type = "range",
- name = L["Size"],
- min = 8, max = 60, step = 1,
- },
- xOffset = {
- order = 6,
- type = "range",
- name = L["xOffset"],
- min = -300, max = 300, step = 1,
- },
- yOffset = {
- order = 7,
- type = "range",
- name = L["yOffset"],
- min = -300, max = 300, step = 1,
- }
- }
- }
-
- return config
-end
-
-local function GetOptionsTableForNonGroup_GPS(unit)
- local config = {
- order = 1000,
- type = "group",
- name = L["GPS Arrow"],
- get = function(info) return E.db.unitframe.units[unit]["GPSArrow"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units[unit]["GPSArrow"][ info[getn(info)] ] = value; UF:CreateAndUpdateUF(unit) end,
- args = {
- header = {
- order = 1,
- type = "header",
- name = L["GPS Arrow"],
- },
- enable = {
- order = 2,
- type = "toggle",
- name = L["Enable"],
- },
- onMouseOver = {
- order = 3,
- type = "toggle",
- name = L["Mouseover"],
- desc = L["Only show when you are mousing over a frame."],
- },
- outOfRange = {
- order = 4,
- type = "toggle",
- name = L["Out of Range"],
- desc = L["Only show when the unit is not in range."],
- },
- size = {
- order = 5,
- type = "range",
- name = L["Size"],
- min = 8, max = 60, step = 1,
- },
- xOffset = {
- order = 6,
- type = "range",
- name = L["xOffset"],
- min = -300, max = 300, step = 1,
- },
- yOffset = {
- order = 7,
- type = "range",
- name = L["yOffset"],
- min = -300, max = 300, step = 1,
+ end
}
}
}
@@ -1835,84 +1986,273 @@ end
E.Options.args.unitframe = {
type = "group",
- name = L["Unitframes"],
+ name = L["UnitFrames"],
childGroups = "tree",
get = function(info) return E.db.unitframe[ info[getn(info)] ] end,
set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value end,
args = {
enable = {
- order = 0,
+ order = 1,
type = "toggle",
name = L["Enable"],
get = function(info) return E.private.unitframe.enable end,
- set = function(info, value) E.private.unitframe.enable = value; E:StaticPopup_Show("PRIVATE_RL") end
+ set = function(info, value) E.private.unitframe.enable = value E:StaticPopup_Show("PRIVATE_RL") end
},
intro = {
- order = 1,
+ order = 2,
type = "description",
- name = L["UNITFRAME_DESC"],
+ name = L["UNITFRAME_DESC"]
},
header = {
- order = 2,
+ order = 3,
type = "header",
- name = L["Shortcuts"],
+ name = L["Shortcuts"]
},
spacer1 = {
- order = 3,
+ order = 4,
type = "description",
- name = " ",
+ name = " "
+ },
+ generalShortcut = {
+ order = 5,
+ type = "execute",
+ name = L["General"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "generalOptionsGroup", "generalGroup") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ frameGlowShortcut = {
+ order = 6,
+ type = "execute",
+ name = L["Frame Glow"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "generalOptionsGroup", "frameGlowGroup") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ cooldownShortcut = {
+ order = 7,
+ type = "execute",
+ name = L["Cooldowns"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "cooldown", "unitframe") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ spacer2 = {
+ order = 8,
+ type = "description",
+ name = " "
+ },
+ colorsShortcut = {
+ order = 9,
+ type = "execute",
+ name = COLOR,
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "generalOptionsGroup", "allColorsGroup") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ blizzardShortcut = {
+ order = 10,
+ type = "execute",
+ name = L["Disabled Blizzard Frames"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "generalOptionsGroup", "disabledBlizzardFrames") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ playerShortcut = {
+ order = 11,
+ type = "execute",
+ name = L["Player Frame"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "player") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ spacer3 = {
+ order = 12,
+ type = "description",
+ name = " "
+ },
+ targetShortcut = {
+ order = 13,
+ type = "execute",
+ name = L["Target Frame"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "target") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ targettargetShortcut = {
+ order = 14,
+ type = "execute",
+ name = L["TargetTarget Frame"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "targettarget") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ targettargettargetShortcut = {
+ order = 15,
+ type = "execute",
+ name = L["TargetTargetTarget Frame"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "targettargettarget") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ spacer4 = {
+ order = 16,
+ type = "description",
+ name = " "
+ },
+ --[[focusShortcut = {
+ order = 17,
+ type = "execute",
+ name = L["Focus Frame"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "focus") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ focustargetShortcut = {
+ order = 18,
+ type = "execute",
+ name = L["FocusTarget Frame"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "focustarget") end,
+ disabled = function() return not E.UnitFrames end
+ },--]]
+ petShortcut = {
+ order = 19,
+ type = "execute",
+ name = L["Pet Frame"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "pet") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ spacer5 = {
+ order = 20,
+ type = "description",
+ name = " "
+ },
+ pettargetShortcut = {
+ order = 21,
+ type = "execute",
+ name = L["PetTarget Frame"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "pettarget") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ partyShortcut = {
+ order = 23,
+ type = "execute",
+ name = L["Party Frames"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "party") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ spacer6 = {
+ order = 24,
+ type = "description",
+ name = " "
+ },
+ raidShortcut = {
+ order = 25,
+ type = "execute",
+ name = L["Raid Frames"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "raid") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ raid40Shortcut = {
+ order = 26,
+ type = "execute",
+ name = L["Raid-40 Frames"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "raid40") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ raidpetShortcut = {
+ order = 27,
+ type = "execute",
+ name = L["Raid Pet Frames"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "raidpet") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ spacer7 = {
+ order = 28,
+ type = "description",
+ name = " "
+ },
+ assistShortcut = {
+ order = 29,
+ type = "execute",
+ name = L["Assist Frames"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "assist") end,
+ disabled = function() return not E.UnitFrames end
+ },
+ tankShortcut = {
+ order = 30,
+ type = "execute",
+ name = L["Tank Frames"],
+ buttonElvUI = true,
+ func = function() ACD:SelectGroup("ElvUI", "unitframe", "tank") end,
+ disabled = function() return not E.UnitFrames end
},
generalOptionsGroup = {
- order = 19,
+ order = 31,
type = "group",
- name = GENERAL,
+ name = L["General Options"],
childGroups = "tab",
- disabled = function() return not E.UnitFrames; end,
+ disabled = function() return not E.UnitFrames end,
args = {
generalGroup = {
order = 1,
type = "group",
- name = GENERAL,
+ name = L["General"],
args = {
header = {
- order = 0,
+ order = 1,
type = "header",
- name = GENERAL,
+ name = L["General"]
},
thinBorders = {
- order = 1,
+ order = 2,
+ type = "toggle",
name = L["Thin Borders"],
desc = L["Use thin borders on certain unitframe elements."],
- type = "toggle",
disabled = function() return E.private.general.pixelPerfect end,
- set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value; E:StaticPopup_Show("CONFIG_RL") end,
+ set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value E:StaticPopup_Show("CONFIG_RL") end
},
OORAlpha = {
- order = 2,
+ order = 3,
+ type = "range",
name = L["OOR Alpha"],
desc = L["The alpha to set units that are out of range to."],
- type = "range",
- min = 0, max = 1, step = 0.01,
+ softMin = .1, min = 0, max = 1, step = 0.01
},
debuffHighlighting = {
- order = 3,
+ order = 4,
+ type = "select",
name = L["Debuff Highlighting"],
desc = L["Color the unit healthbar if there is a debuff that can be dispelled by you."],
- type = "select",
values = {
["NONE"] = NONE,
["GLOW"] = L["Glow"],
["FILL"] = L["Fill"]
- },
+ }
+ },
+ smartRaidFilter = {
+ order = 5,
+ type = "toggle",
+ name = L["Smart Raid Filter"],
+ desc = L["Override any custom visibility setting in certain situations, EX: Only show groups 1 and 2 inside a 10 man instance."],
+ set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value UF:UpdateAllHeaders() end
},
targetOnMouseDown = {
- order = 4,
- name = L["Target On Mouse-Down"],
- desc = L["Target units on mouse down rather than mouse up. \n\n|cffFF0000Warning: If you are using the addon 'Clique' you may have to adjust your clique settings when changing this."],
+ order = 6,
type = "toggle",
+ name = L["Target On Mouse-Down"],
+ desc = L["Target units on mouse down rather than mouse up. \n\n|cffFF0000Warning: If you are using the addon 'Clique' you may have to adjust your clique settings when changing this."]
},
auraBlacklistModifier = {
- order = 5,
+ order = 7,
type = "select",
name = L["Blacklist Modifier"],
desc = L["You need to hold this modifier down in order to blacklist an aura by right-clicking the icon. Set to None to disable the blacklist functionality."],
@@ -1920,16 +2260,8 @@ E.Options.args.unitframe = {
["NONE"] = NONE,
["SHIFT"] = SHIFT_KEY,
["ALT"] = ALT_KEY,
- ["CTRL"] = CTRL_KEY,
- },
- },
- resetFilters = {
- order = 6,
- name = L["Reset Aura Filters"],
- type = "execute",
- func = function(info, value)
- E:StaticPopup_Show("RESET_UF_AF") --reset unitframe aurafilters
- end,
+ ["CTRL"] = CTRL_KEY
+ }
},
barGroup = {
order = 20,
@@ -1938,30 +2270,29 @@ E.Options.args.unitframe = {
name = L["Bars"],
args = {
smoothbars = {
- type = "toggle",
order = 1,
+ type = "toggle",
name = L["Smooth Bars"],
desc = L["Bars will transition smoothly."],
- set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value; UF:Update_AllFrames(); end,
+ set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value UF:Update_AllFrames() end
},
smoothSpeed = {
- type = "range",
order = 2,
+ type = "range",
name = L["Animation Speed"],
- desc = L["Speed in seconds"],
min = 0.1, max = 3, step = 0.01,
- disabled = function() return not E.db.unitframe.smoothbars; end,
- set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value; UF:Update_AllFrames(); end
+ disabled = function() return not E.db.unitframe.smoothbars end,
+ set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value UF:Update_AllFrames() end
},
statusbar = {
- type = "select", dialogControl = "LSM30_Statusbar",
order = 3,
+ type = "select", dialogControl = "LSM30_Statusbar",
name = L["StatusBar Texture"],
desc = L["Main statusbar texture."],
values = AceGUIWidgetLSMlists.statusbar,
- set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value; UF:Update_StatusBars() end,
- },
- },
+ set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value UF:Update_StatusBars() end
+ }
+ }
},
fontGroup = {
order = 30,
@@ -1970,51 +2301,221 @@ E.Options.args.unitframe = {
name = L["Fonts"],
args = {
font = {
- type = "select", dialogControl = "LSM30_Font",
order = 4,
+ type = "select", dialogControl = "LSM30_Font",
name = L["Default Font"],
desc = L["The font that the unitframes will use."],
values = AceGUIWidgetLSMlists.font,
- set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value; UF:Update_FontStrings() end,
+ set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value UF:Update_FontStrings() end
},
fontSize = {
order = 5,
+ type = "range",
name = FONT_SIZE,
desc = L["Set the font size for unitframes."],
- type = "range",
- min = 4, max = 212, step = 1,
- set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value; UF:Update_FontStrings() end,
+ min = 4, max = 32, step = 1,
+ set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value UF:Update_FontStrings() end
},
fontOutline = {
order = 6,
+ type = "select",
name = L["Font Outline"],
desc = L["Set the font outline."],
- type = "select",
values = {
["NONE"] = NONE,
["OUTLINE"] = "OUTLINE",
-
["MONOCHROMEOUTLINE"] = "MONOCROMEOUTLINE",
- ["THICKOUTLINE"] = "THICKOUTLINE",
+ ["THICKOUTLINE"] = "THICKOUTLINE"
},
- set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value; UF:Update_FontStrings() end,
- },
- },
- },
- },
+ set = function(info, value) E.db.unitframe[ info[getn(info)] ] = value UF:Update_FontStrings() end
+ }
+ }
+ }
+ }
},
- allColorsGroup = {
+ frameGlowGroup = {
order = 2,
type = "group",
childGroups = "tree",
- name = L["Colors"],
+ name = L["Frame Glow"],
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Frame Glow"]
+ },
+ mainGlow = {
+ order = 2,
+ type = "group",
+ guiInline = true,
+ name = L["Mouseover Glow"],
+ get = function(info)
+ local t = E.db.unitframe.colors.frameGlow.mainGlow[ info[getn(info)] ]
+ if type(t) == "boolean" then return t end
+ local d = P.unitframe.colors.frameGlow.mainGlow[ info[getn(info)] ]
+ return t.r, t.g, t.b, t.a, d.r, d.g, d.b, d.a
+ end,
+ set = function(info, r, g, b, a)
+ local t = E.db.unitframe.colors.frameGlow.mainGlow[ info[getn(info)] ]
+ if type(t) == "boolean" then
+ E.db.unitframe.colors.frameGlow.mainGlow[ info[getn(info)] ] = r
+ else
+ t.r, t.g, t.b, t.a = r, g, b, a
+ end
+ UF:FrameGlow_UpdateFrames()
+ end,
+ disabled = function() return not E.db.unitframe.colors.frameGlow.mainGlow.enable end,
+ args = {
+ enable = {
+ order = 1,
+ type = "toggle",
+ name = L["Enable"],
+ disabled = false
+ },
+ spacer = {
+ order = 2,
+ type = "description",
+ name = ""
+ },
+ class = {
+ order = 3,
+ type = "toggle",
+ name = L["Use Class Color"],
+ desc = L["Alpha channel is taken from the color option."]
+ },
+ color = {
+ order = 4,
+ type = "color",
+ name = COLOR,
+ hasAlpha = true,
+ disabled = function() return not E.db.unitframe.colors.frameGlow.mainGlow.enable or E.db.unitframe.colors.frameGlow.mainGlow.class end
+ }
+ }
+ },
+ targetGlow = {
+ order = 3,
+ type = "group",
+ guiInline = true,
+ name = L["Targeted Glow"],
+ get = function(info)
+ local t = E.db.unitframe.colors.frameGlow.targetGlow[ info[getn(info)] ]
+ if type(t) == "boolean" then return t end
+ local d = P.unitframe.colors.frameGlow.targetGlow[ info[getn(info)] ]
+ return t.r, t.g, t.b, t.a, d.r, d.g, d.b, d.a
+ end,
+ set = function(info, r, g, b, a)
+ local t = E.db.unitframe.colors.frameGlow.targetGlow[ info[getn(info)] ]
+ if type(t) == "boolean" then
+ E.db.unitframe.colors.frameGlow.targetGlow[ info[getn(info)] ] = r
+ else
+ t.r, t.g, t.b, t.a = r, g, b, a
+ end
+ UF:FrameGlow_UpdateFrames()
+ end,
+ disabled = function() return not E.db.unitframe.colors.frameGlow.targetGlow.enable end,
+ args = {
+ enable = {
+ order = 1,
+ type = "toggle",
+ name = L["Enable"],
+ disabled = false
+ },
+ spacer = {
+ order = 2,
+ type = "description",
+ name = ""
+ },
+ class = {
+ order = 3,
+ type = "toggle",
+ name = L["Use Class Color"],
+ desc = L["Alpha channel is taken from the color option."]
+ },
+ color = {
+ order = 4,
+ type = "color",
+ name = COLOR,
+ hasAlpha = true,
+ disabled = function() return not E.db.unitframe.colors.frameGlow.targetGlow.enable or E.db.unitframe.colors.frameGlow.targetGlow.class end
+ }
+ }
+ },
+ mouseoverGlow = {
+ order = 4,
+ type = "group",
+ guiInline = true,
+ name = L["Mouseover Highlight"],
+ get = function(info)
+ local t = E.db.unitframe.colors.frameGlow.mouseoverGlow[ info[getn(info)] ]
+ if type(t) == "boolean" then return t end
+ local d = P.unitframe.colors.frameGlow.mouseoverGlow[ info[getn(info)] ]
+ return t.r, t.g, t.b, t.a, d.r, d.g, d.b, d.a
+ end,
+ set = function(info, r, g, b, a)
+ local t = E.db.unitframe.colors.frameGlow.mouseoverGlow[ info[getn(info)] ]
+ if type(t) == "boolean" then
+ E.db.unitframe.colors.frameGlow.mouseoverGlow[ info[getn(info)] ] = r
+ else
+ t.r, t.g, t.b, t.a = r, g, b, a
+ end
+ UF:FrameGlow_UpdateFrames()
+ end,
+ disabled = function() return not E.db.unitframe.colors.frameGlow.mouseoverGlow.enable end,
+ args = {
+ enable = {
+ order = 1,
+ type = "toggle",
+ name = L["Enable"],
+ disabled = false
+ },
+ texture = {
+ order = 2,
+ type = "select",
+ dialogControl = "LSM30_Statusbar",
+ name = L["Texture"],
+ values = AceGUIWidgetLSMlists.statusbar,
+ get = function(info)
+ return E.db.unitframe.colors.frameGlow.mouseoverGlow[ info[getn(info)] ]
+ end,
+ set = function(info, value)
+ E.db.unitframe.colors.frameGlow.mouseoverGlow[ info[getn(info)] ] = value
+ UF:FrameGlow_UpdateFrames()
+ end
+ },
+ spacer = {
+ order = 3,
+ type = "description",
+ name = ""
+ },
+ class = {
+ order = 4,
+ type = "toggle",
+ name = L["Use Class Color"],
+ desc = L["Alpha channel is taken from the color option."]
+ },
+ color = {
+ order = 5,
+ type = "color",
+ name = COLOR,
+ hasAlpha = true,
+ disabled = function() return not E.db.unitframe.colors.frameGlow.mouseoverGlow.enable or E.db.unitframe.colors.frameGlow.mouseoverGlow.class end
+ }
+ }
+ }
+ }
+ },
+ allColorsGroup = {
+ order = 3,
+ type = "group",
+ childGroups = "tree",
+ name = COLOR,
get = function(info) return E.db.unitframe.colors[ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value; UF:Update_AllFrames() end,
+ set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value UF:Update_AllFrames() end,
args = {
header = {
order = 0,
type = "header",
- name = L["Colors"],
+ name = COLOR,
},
borderColor = {
order = 1,
@@ -2047,89 +2548,102 @@ E.Options.args.unitframe = {
UF:Update_AllFrames()
end,
args = {
- healthclass = {
+ header = {
order = 1,
+ type = "header",
+ name = HEALTH
+ },
+ healthclass = {
+ order = 2,
type = "toggle",
name = L["Class Health"],
desc = L["Color health by classcolor or reaction."],
get = function(info) return E.db.unitframe.colors[ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value; UF:Update_AllFrames() end,
+ set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value UF:Update_AllFrames() end
},
forcehealthreaction = {
- order = 2,
+ order = 3,
type = "toggle",
name = L["Force Reaction Color"],
desc = L["Forces reaction color instead of class color on units controlled by players."],
get = function(info) return E.db.unitframe.colors[ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value; UF:Update_AllFrames() end,
- disabled = function() return not E.db.unitframe.colors.healthclass end,
+ set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value UF:Update_AllFrames() end,
+ disabled = function() return not E.db.unitframe.colors.healthclass end
},
colorhealthbyvalue = {
- order = 3,
+ order = 4,
type = "toggle",
name = L["Health By Value"],
desc = L["Color health by amount remaining."],
get = function(info) return E.db.unitframe.colors[ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value; UF:Update_AllFrames() end,
+ set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value UF:Update_AllFrames() end
},
customhealthbackdrop = {
- order = 4,
+ order = 5,
type = "toggle",
name = L["Custom Health Backdrop"],
desc = L["Use the custom health backdrop color instead of a multiple of the main health color."],
get = function(info) return E.db.unitframe.colors[ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value; UF:Update_AllFrames() end,
+ set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value UF:Update_AllFrames() end
},
classbackdrop = {
- order = 5,
+ order = 6,
type = "toggle",
name = L["Class Backdrop"],
desc = L["Color the health backdrop by class or reaction."],
get = function(info) return E.db.unitframe.colors[ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value; UF:Update_AllFrames() end,
+ set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value UF:Update_AllFrames() end
},
transparentHealth = {
- order = 6,
+ order = 7,
type = "toggle",
name = L["Transparent"],
desc = L["Make textures transparent."],
get = function(info) return E.db.unitframe.colors[ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value; UF:Update_AllFrames() end,
+ set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value UF:Update_AllFrames() end
},
useDeadBackdrop = {
- order = 7,
+ order = 8,
type = "toggle",
name = L["Use Dead Backdrop"],
get = function(info) return E.db.unitframe.colors[ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value; UF:Update_AllFrames() end,
+ set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value UF:Update_AllFrames() end
},
health = {
- order = 10,
+ order = 9,
type = "color",
- name = HEALTH,
+ name = HEALTH
},
health_backdrop = {
- order = 11,
+ order = 10,
type = "color",
- name = L["Health Backdrop"],
+ name = L["Health Backdrop"]
+ },
+ healthmultiplier = {
+ order = 11,
+ type = "range",
+ name = L["Health Backdrop Multiplier"],
+ min = 0, max = 1, step = .01,
+ get = function(info) return E.db.unitframe.colors[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value UF:Update_AllFrames() end
},
tapped = {
order = 12,
type = "color",
- name = L["Tapped"],
+ name = L["Tapped"]
},
disconnected = {
order = 13,
type = "color",
- name = L["Disconnected"],
+ name = L["Disconnected"]
},
health_backdrop_dead = {
order = 14,
type = "color",
name = L["Custom Dead Backdrop"],
- desc = L["Use this backdrop color for units that are dead or ghosts."],
- },
- },
+ desc = L["Use this backdrop color for units that are dead or ghosts."]
+ }
+ }
},
powerGroup = {
order = 3,
@@ -2146,43 +2660,48 @@ E.Options.args.unitframe = {
UF:Update_AllFrames()
end,
args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Powers"]
+ },
powerclass = {
- order = 0,
+ order = 2,
type = "toggle",
name = L["Class Power"],
desc = L["Color power by classcolor or reaction."],
get = function(info) return E.db.unitframe.colors[ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value; UF:Update_AllFrames() end,
+ set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value UF:Update_AllFrames() end
},
transparentPower = {
- order = 1,
+ order = 3,
type = "toggle",
name = L["Transparent"],
desc = L["Make textures transparent."],
get = function(info) return E.db.unitframe.colors[ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value; UF:Update_AllFrames() end,
+ set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value UF:Update_AllFrames() end
},
MANA = {
- order = 2,
- name = MANA,
+ order = 4,
type = "color",
+ name = MANA
},
RAGE = {
- order = 3,
- name = RAGE,
+ order = 5,
type = "color",
+ name = RAGE
},
FOCUS = {
- order = 4,
- name = FOCUS,
+ order = 6,
type = "color",
+ name = FOCUS
},
ENERGY = {
- order = 5,
- name = ENERGY,
+ order = 7,
type = "color",
- },
- },
+ name = ENERGY
+ }
+ }
},
reactionGroup = {
order = 4,
@@ -2199,22 +2718,27 @@ E.Options.args.unitframe = {
UF:Update_AllFrames()
end,
args = {
- BAD = {
+ header = {
order = 1,
- name = L["Bad"],
+ type = "header",
+ name = L["Reactions"]
+ },
+ BAD = {
+ order = 2,
type = "color",
+ name = L["Bad"]
},
NEUTRAL = {
- order = 2,
- name = FACTION_STANDING_LABEL4,
+ order = 3,
type = "color",
+ name = L["Neutral"]
},
GOOD = {
- order = 3,
- name = L["Good"],
+ order = 4,
type = "color",
- },
- },
+ name = L["Good"]
+ }
+ }
},
castBars = {
order = 5,
@@ -2231,76 +2755,81 @@ E.Options.args.unitframe = {
UF:Update_AllFrames()
end,
args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Castbar"]
+ },
castClassColor = {
- order = 0,
+ order = 2,
type = "toggle",
name = L["Class Castbars"],
desc = L["Color castbars by the class of player units."],
get = function(info) return E.db.unitframe.colors[ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value; UF:Update_AllFrames() end,
+ set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value UF:Update_AllFrames() end
},
castReactionColor = {
- order = 1,
+ order = 3,
type = "toggle",
name = L["Reaction Castbars"],
desc = L["Color castbars by the reaction type of non-player units."],
get = function(info) return E.db.unitframe.colors[ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value; UF:Update_AllFrames() end,
+ set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value UF:Update_AllFrames() end
},
transparentCastbar = {
- order = 2,
+ order = 4,
type = "toggle",
name = L["Transparent"],
desc = L["Make textures transparent."],
get = function(info) return E.db.unitframe.colors[ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value; UF:Update_AllFrames() end,
+ set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value UF:Update_AllFrames() end
},
castColor = {
- order = 3,
- name = L["Interruptable"],
+ order = 5,
type = "color",
- },
- castNoInterrupt = {
- order = 4,
- name = L["Non-Interruptable"],
- type = "color",
- },
- },
+ name = L["Cast Color"]
+ }
+ }
},
auraBars = {
order = 6,
type = "group",
name = L["Aura Bars"],
args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Aura Bars"]
+ },
transparentAurabars = {
- order = 0,
+ order = 2,
type = "toggle",
name = L["Transparent"],
desc = L["Make textures transparent."],
get = function(info) return E.db.unitframe.colors[ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value; UF:Update_AllFrames() end,
+ set = function(info, value) E.db.unitframe.colors[ info[getn(info)] ] = value UF:Update_AllFrames() end,
},
auraBarByType = {
- order = 1,
- name = L["By Type"],
- desc = L["Color aurabar debuffs by type."],
+ order = 3,
type = "toggle",
+ name = L["By Type"],
+ desc = L["Color aurabar debuffs by type."]
},
auraBarTurtle = {
- order = 2,
- name = L["Color Turtle Buffs"],
- desc = L["Color all buffs that reduce the unit's incoming damage."],
+ order = 4,
type = "toggle",
+ name = L["Color Turtle Buffs"],
+ desc = L["Color all buffs that reduce the unit's incoming damage."]
},
BUFFS = {
- order = 10,
- name = L["Buffs"],
+ order = 5,
type = "color",
+ name = L["Buffs"],
get = function(info)
local t = E.db.unitframe.colors.auraBarBuff
local d = P.unitframe.colors.auraBarBuff
return t.r, t.g, t.b, t.a, d.r, d.g, d.b
- end,
+ end,
set = function(info, r, g, b)
if E:CheckClassColor(r, g, b) then
local classColor = E.myclass == "PRIEST" and E.PriestColors or (CUSTOM_CLASS_COLORS and CUSTOM_CLASS_COLORS[E.myclass] or RAID_CLASS_COLORS[E.myclass])
@@ -2313,12 +2842,12 @@ E.Options.args.unitframe = {
t.r, t.g, t.b = r, g, b
UF:Update_AllFrames()
- end,
+ end
},
DEBUFFS = {
- order = 11,
- name = L["Debuffs"],
+ order = 6,
type = "color",
+ name = L["Debuffs"],
get = function(info)
local t = E.db.unitframe.colors.auraBarDebuff
local d = P.unitframe.colors.auraBarDebuff
@@ -2328,12 +2857,12 @@ E.Options.args.unitframe = {
local t = E.db.unitframe.colors.auraBarDebuff
t.r, t.g, t.b = r, g, b
UF:Update_AllFrames()
- end,
+ end
},
auraBarTurtleColor = {
- order = 12,
- name = L["Turtle Color"],
+ order = 7,
type = "color",
+ name = L["Turtle Color"],
get = function(info)
local t = E.db.unitframe.colors.auraBarTurtleColor
local d = P.unitframe.colors.auraBarTurtleColor
@@ -2343,9 +2872,9 @@ E.Options.args.unitframe = {
local t = E.db.unitframe.colors.auraBarTurtleColor
t.r, t.g, t.b = r, g, b
UF:Update_AllFrames()
- end,
- },
- },
+ end
+ }
+ }
},
healPrediction = {
order = 7,
@@ -2362,76 +2891,122 @@ E.Options.args.unitframe = {
UF:Update_AllFrames()
end,
args = {
- personal = {
+ header = {
order = 1,
- name = L["Personal"],
+ type = "header",
+ name = L["Heal Prediction"]
+ },
+ personal = {
+ order = 2,
type = "color",
- hasAlpha = true,
+ name = L["Personal"],
+ hasAlpha = true
},
others = {
- order = 2,
- name = L["Others"],
+ order = 3,
type = "color",
- hasAlpha = true,
+ name = L["Others"],
+ hasAlpha = true
},
maxOverflow = {
- order = 3,
+ order = 4,
type = "range",
name = L["Max Overflow"],
desc = L["Max amount of overflow allowed to extend past the end of the health bar."],
isPercent = true,
min = 0, max = 1, step = 0.01,
get = function(info) return E.db.unitframe.colors.healPrediction.maxOverflow end,
- set = function(info, value) E.db.unitframe.colors.healPrediction.maxOverflow = value; UF:Update_AllFrames() end,
- },
- },
+ set = function(info, value) E.db.unitframe.colors.healPrediction.maxOverflow = value UF:Update_AllFrames() end
+ }
+ }
},
- },
+ debuffHighlight = {
+ order = 8,
+ type = "group",
+ name = L["Debuff Highlighting"],
+ get = function(info)
+ local t = E.db.unitframe.colors.debuffHighlight[ info[getn(info)] ]
+ local d = P.unitframe.colors.debuffHighlight[ info[getn(info)] ]
+ return t.r, t.g, t.b, t.a, d.r, d.g, d.b, d.a
+ end,
+ set = function(info, r, g, b, a)
+ local t = E.db.unitframe.colors.debuffHighlight[ info[getn(info)] ]
+ t.r, t.g, t.b, t.a = r, g, b, a
+ UF:Update_AllFrames()
+ end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Debuff Highlighting"]
+ },
+ Magic = {
+ order = 2,
+ type = "color",
+ name = L["Magic Effect"],
+ hasAlpha = true
+ },
+ Curse = {
+ order = 3,
+ type = "color",
+ name = L["Curse Effect"],
+ hasAlpha = true
+ },
+ Disease = {
+ order = 4,
+ type = "color",
+ name = L["Disease Effect"],
+ hasAlpha = true
+ },
+ Poison = {
+ order = 5,
+ type = "color",
+ name = L["Poison Effect"],
+ hasAlpha = true
+ }
+ }
+ }
+ }
},
disabledBlizzardFrames = {
- order = 3,
+ order = 4,
type = "group",
name = L["Disabled Blizzard Frames"],
get = function(info) return E.private.unitframe.disabledBlizzardFrames[ info[getn(info)] ] end,
- set = function(info, value) E.private["unitframe"].disabledBlizzardFrames[ info[getn(info)] ] = value; E:StaticPopup_Show("PRIVATE_RL") end,
+ set = function(info, value) E.private.unitframe.disabledBlizzardFrames[ info[getn(info)] ] = value E:StaticPopup_Show("PRIVATE_RL") end,
args = {
header = {
- order = 0,
+ order = 1,
type = "header",
- name = L["Disabled Blizzard Frames"],
+ name = L["Disabled Blizzard Frames"]
},
player = {
- order = 1,
- type = "toggle",
- name = L["Player Frame"],
- desc = L["Disables the player and pet unitframes."],
- },
- target = {
order = 2,
type = "toggle",
- name = L["Target Frame"],
- desc = L["Disables the target and target of target unitframes."],
+ name = L["Player Frame"],
+ desc = L["Disables the player and pet unitframes."]
},
- focus = {
+ target = {
order = 3,
type = "toggle",
- name = L["Focus Frame"],
- desc = L["Disables the focus and target of focus unitframes."],
+ name = L["Target Frame"],
+ desc = L["Disables the target and target of target unitframes."]
},
+ --[[focus = {
+ order = 4,
+ type = "toggle",
+ name = L["Focus Frame"],
+ desc = L["Disables the focus and target of focus unitframes."]
+ },--]]
party = {
order = 6,
type = "toggle",
- name = L["Party Frames"],
- },
- raid = {
- order = 7,
- type = "toggle",
- name = L["Raid Frames"],
- },
- },
+ name = L["Party Frames"]
+ }
+ }
},
- --[[raidDebuffIndicator = {
- order = 4,
+ raidDebuffIndicator = {
+ order = 5,
type = "group",
name = L["RaidDebuff Indicator"],
args = {
@@ -2446,7 +3021,7 @@ E.Options.args.unitframe = {
name = L["Dungeon & Raid Filter"],
values = function()
local filters = {}
- local list = E.global.unitframe["aurafilters"]
+ local list = E.global.unitframe.aurafilters
if not list then return end
for filter in pairs(list) do
filters[filter] = filter
@@ -2455,7 +3030,7 @@ E.Options.args.unitframe = {
return filters
end,
get = function(info) return E.global.unitframe.raidDebuffIndicator.instanceFilter end,
- set = function(info, value) E.global.unitframe.raidDebuffIndicator.instanceFilter = value; UF:UpdateAllHeaders() end,
+ set = function(info, value) E.global.unitframe.raidDebuffIndicator.instanceFilter = value UF:UpdateAllHeaders() end,
},
otherFilter = {
order = 3,
@@ -2463,7 +3038,7 @@ E.Options.args.unitframe = {
name = L["Other Filter"],
values = function()
local filters = {}
- local list = E.global.unitframe["aurafilters"]
+ local list = E.global.unitframe.aurafilters
if not list then return end
for filter in pairs(list) do
filters[filter] = filter
@@ -2472,183 +3047,172 @@ E.Options.args.unitframe = {
return filters
end,
get = function(info) return E.global.unitframe.raidDebuffIndicator.otherFilter end,
- set = function(info, value) E.global.unitframe.raidDebuffIndicator.otherFilter = value; UF:UpdateAllHeaders() end,
- },
- },
- },--]]
- },
- },
- },
+ set = function(info, value) E.global.unitframe.raidDebuffIndicator.otherFilter = value UF:UpdateAllHeaders() end
+ }
+ }
+ }
+ }
+ }
+ }
}
---Player
E.Options.args.unitframe.args.player = {
- name = L["Player Frame"],
- type = "group",
order = 300,
+ type = "group",
+ name = L["Player Frame"],
childGroups = "tab",
- get = function(info) return E.db.unitframe.units["player"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["player"][ info[getn(info)] ] = value; UF:CreateAndUpdateUF("player") end,
- disabled = function() return not E.UnitFrames; end,
+ get = function(info) return E.db.unitframe.units.player[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.player[ info[getn(info)] ] = value UF:CreateAndUpdateUF("player") end,
+ disabled = function() return not E.UnitFrames end,
args = {
generalGroup = {
order = 1,
type = "group",
- name = GENERAL,
+ name = L["General"],
args = {
header = {
order = 1,
type = "header",
- name = GENERAL,
+ name = L["General"]
},
enable = {
- type = "toggle",
order = 2,
+ type = "toggle",
name = L["Enable"],
width = "full",
set = function(info, value)
- E.db.unitframe.units["player"][ info[getn(info)] ] = value;
- UF:CreateAndUpdateUF("player");
+ E.db.unitframe.units.player[ info[getn(info)] ] = value
+ UF:CreateAndUpdateUF("player")
if value == true and E.db.unitframe.units.player.combatfade then
ElvUF_Pet:SetParent(ElvUF_Player)
else
ElvUF_Pet:SetParent(ElvUF_Parent)
end
- end,
+ end
},
copyFrom = {
+ order = 3,
type = "select",
- order = 2,
name = L["Copy From"],
desc = L["Select a unit to copy settings from."],
- values = UF["units"],
- set = function(info, value) UF:MergeUnitSettings(value, "player"); end,
+ values = UF.units,
+ set = function(info, value) UF:MergeUnitSettings(value, "player") end
},
resetSettings = {
+ order = 4,
type = "execute",
- order = 3,
name = L["Restore Defaults"],
- func = function(info, value) UF:ResetUnitSettings("player"); E:ResetMovers(L["Player Frame"]) end,
+ func = function(info) E:StaticPopup_Show("RESET_UF_UNIT", L["Player Frame"], nil, {unit="player", mover="Player Frame"}) end
},
showAuras = {
- order = 4,
+ order = 5,
type = "execute",
name = L["Show Auras"],
func = function()
local frame = ElvUF_Player
if frame.forceShowAuras then
- frame.forceShowAuras = nil;
+ frame.forceShowAuras = nil
else
- frame.forceShowAuras = true;
+ frame.forceShowAuras = true
end
UF:CreateAndUpdateUF("player")
- end,
+ end
},
width = {
- order = 5,
- name = L["Width"],
+ order = 6,
type = "range",
- min = 50, max = 500, step = 1,
+ name = L["Width"],
+ min = 50, max = 1000, step = 1,
set = function(info, value)
- if E.db.unitframe.units["player"].castbar.width == E.db.unitframe.units["player"][ info[getn(info)] ] then
- E.db.unitframe.units["player"].castbar.width = value;
+ if E.db.unitframe.units.player.castbar.width == E.db.unitframe.units.player[ info[getn(info)] ] then
+ E.db.unitframe.units.player.castbar.width = value
end
- E.db.unitframe.units["player"][ info[getn(info)] ] = value;
- UF:CreateAndUpdateUF("player");
- end,
+ E.db.unitframe.units.player[ info[getn(info)] ] = value
+ UF:CreateAndUpdateUF("player")
+ end
},
height = {
- order = 6,
- name = L["Height"],
+ order = 7,
type = "range",
- min = 10, max = 250, step = 1,
+ name = L["Height"],
+ min = 10, max = 500, step = 1
},
combatfade = {
- order = 7,
+ order = 8,
+ type = "toggle",
name = L["Combat Fade"],
desc = L["Fade the unitframe when out of combat, not casting, no target exists."],
- type = "toggle",
set = function(info, value)
- E.db.unitframe.units["player"][ info[getn(info)] ] = value;
- UF:CreateAndUpdateUF("player");
+ E.db.unitframe.units.player[ info[getn(info)] ] = value
+ UF:CreateAndUpdateUF("player")
if value == true and E.db.unitframe.units.player.enable then
ElvUF_Pet:SetParent(ElvUF_Player)
else
ElvUF_Pet:SetParent(ElvUF_Parent)
end
- end,
+ end
},
healPrediction = {
- order = 8,
- name = L["Heal Prediction"],
- desc = L["Show an incoming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
+ order = 9,
type = "toggle",
+ name = L["Heal Prediction"],
+ desc = L["Show an incoming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."]
},
hideonnpc = {
+ order = 10,
type = "toggle",
- order = 9,
name = L["Text Toggle On NPC"],
desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
- get = function(info) return E.db.unitframe.units["player"]["power"].hideonnpc end,
- set = function(info, value) E.db.unitframe.units["player"]["power"].hideonnpc = value; UF:CreateAndUpdateUF("player") end,
- },
- restIcon = {
- order = 10,
- name = L["Rest Icon"],
- desc = L["Display the rested icon on the unitframe."],
- type = "toggle",
- },
- combatIcon = {
- order = 11,
- name = L["Combat Icon"],
- desc = L["Display the combat icon on the unitframe."],
- type = "toggle",
+ get = function(info) return E.db.unitframe.units.player.power.hideonnpc end,
+ set = function(info, value) E.db.unitframe.units.player.power.hideonnpc = value UF:CreateAndUpdateUF("player") end
},
threatStyle = {
+ order = 11,
type = "select",
- order = 12,
name = L["Threat Display Mode"],
- values = threatValues,
+ values = threatValues
},
smartAuraPosition = {
- order = 13,
+ order = 12,
type = "select",
name = L["Smart Aura Position"],
desc = L["Will show Buffs in the Debuff position when there are no Debuffs active, or vice versa."],
- values = {
- ["DISABLED"] = DISABLE,
- ["BUFFS_ON_DEBUFFS"] = L["Position Buffs on Debuffs"],
- ["DEBUFFS_ON_BUFFS"] = L["Position Debuffs on Buffs"],
- ["FLUID_BUFFS_ON_DEBUFFS"] = L["Fluid Position Buffs on Debuffs"],
- ["FLUID_DEBUFFS_ON_BUFFS"] = L["Fluid Position Debuffs on Buffs"],
- },
+ values = smartAuraPositionValues
},
orientation = {
- order = 14,
+ order = 13,
type = "select",
name = L["Frame Orientation"],
desc = L["Set the orientation of the UnitFrame."],
- values = {
- --["AUTOMATIC"] = L["Automatic"], not sure if i will use this yet
- ["LEFT"] = L["Left"],
- ["MIDDLE"] = L["Middle"],
- ["RIGHT"] = L["Right"],
- },
+ values = orientationValues
},
colorOverride = {
- order = 15,
+ order = 14,
+ type = "select",
name = L["Class Color Override"],
desc = L["Override the default class color setting."],
- type = "select",
- values = {
- ["USE_DEFAULT"] = L["Use Default"],
- ["FORCE_ON"] = L["Force On"],
- ["FORCE_OFF"] = L["Force Off"],
- },
+ values = colorOverrideValues
},
- },
+ spacer = {
+ order = 15,
+ type = "description",
+ name = ""
+ },
+ disableMouseoverGlow = {
+ order = 16,
+ type = "toggle",
+ name = L["Block Mouseover Glow"],
+ desc = L["Forces Mouseover Glow to be disabled for these frames"]
+ },
+ disableTargetGlow = {
+ order = 17,
+ type = "toggle",
+ name = L["Block Target Glow"],
+ desc = L["Forces Target Glow to be disabled for these frames"]
+ }
+ }
},
customText = GetOptionsTable_CustomText(UF.CreateAndUpdateUF, "player"),
health = GetOptionsTable_Health(false, UF.CreateAndUpdateUF, "player"),
@@ -2658,252 +3222,524 @@ E.Options.args.unitframe.args.player = {
portrait = GetOptionsTable_Portrait(UF.CreateAndUpdateUF, "player"),
buffs = GetOptionsTable_Auras(true, "buffs", false, UF.CreateAndUpdateUF, "player"),
debuffs = GetOptionsTable_Auras(true, "debuffs", false, UF.CreateAndUpdateUF, "player"),
- castbar = GetOptionsTable_Castbar(UF.CreateAndUpdateUF, "player"),
+ castbar = GetOptionsTable_Castbar(true, UF.CreateAndUpdateUF, "player"),
aurabar = GetOptionsTable_AuraBars(true, UF.CreateAndUpdateUF, "player"),
raidicon = GetOptionsTable_RaidIcon(UF.CreateAndUpdateUF, "player"),
classbar = {
- order = 1000,
+ order = 750,
type = "group",
name = L["Classbar"],
- get = function(info) return E.db.unitframe.units["player"]["classbar"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["player"]["classbar"][ info[getn(info)] ] = value; UF:CreateAndUpdateUF("player") end,
+ get = function(info) return E.db.unitframe.units.player.classbar[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.player.classbar[ info[getn(info)] ] = value UF:CreateAndUpdateUF("player") end,
args = {
header = {
order = 1,
type = "header",
- name = L["Classbar"],
+ name = L["Classbar"]
},
enable = {
- type = "toggle",
order = 2,
- name = L["Enable"],
+ type = "toggle",
+ name = L["Enable"]
},
height = {
- type = "range",
order = 3,
+ type = "range",
name = L["Height"],
min = ((E.db.unitframe.thinBorders or E.PixelMode) and 3 or 7),
- max = (E.db.unitframe.units["player"]["classbar"].detachFromFrame and 300 or 30),
+ max = (E.db.unitframe.units.player.classbar.detachFromFrame and 300 or 30),
step = 1,
+ disabled = function() return not E.db.unitframe.units.player.classbar.enable end
},
fill = {
- type = "select",
order = 4,
+ type = "select",
name = L["Fill"],
values = {
["fill"] = L["Filled"],
- ["spaced"] = L["Spaced"],
+ ["spaced"] = L["Spaced"]
},
+ disabled = function() return not E.db.unitframe.units.player.classbar.enable end
},
autoHide = {
order = 5,
type = "toggle",
name = L["Auto-Hide"],
+ disabled = function() return not E.db.unitframe.units.player.classbar.enable end
},
- detachFromFrame = {
- type = "toggle",
+ additionalPowerText = {
order = 6,
- name = L["Detach From Frame"],
- set = function(info, value)
- if value == true then
- E.Options.args.unitframe.args.player.args.classbar.args.height.max = 300
- else
- E.Options.args.unitframe.args.player.args.classbar.args.height.max = 30
- end
- E.db.unitframe.units["player"]["classbar"][ info[getn(info)] ] = value;
- UF:CreateAndUpdateUF("player")
- end,
- },
- verticalOrientation = {
- order = 7,
type = "toggle",
- name = L["Vertical Orientation"],
- disabled = function() return not E.db.unitframe.units["player"]["classbar"].detachFromFrame end,
+ name = L["Additional Power Text"],
+ disabled = function() return not E.db.unitframe.units.player.classbar.enable end
},
- detachedWidth = {
- type = "range",
+ spacer = {
+ order = 7,
+ type = "description",
+ name = ""
+ },
+ detachGroup = {
order = 8,
- name = L["Detached Width"],
- disabled = function() return not E.db.unitframe.units["player"]["classbar"].detachFromFrame end,
- min = ((E.db.unitframe.thinBorders or E.PixelMode) and 3 or 7), max = 800, step = 1,
- },
- parent = {
- type = "select",
- order = 9,
- name = L["Parent"],
- desc = L["Choose UIPARENT to prevent it from hiding with the unitframe."],
- disabled = function() return not E.db.unitframe.units["player"]["classbar"].detachFromFrame end,
- values = {
- ["FRAME"] = "FRAME",
- ["UIPARENT"] = "UIPARENT",
- },
- },
- strataAndLevel = {
- order = 20,
type = "group",
- name = L["Strata and Level"],
- get = function(info) return E.db.unitframe.units["player"]["classbar"]["strataAndLevel"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["player"]["classbar"]["strataAndLevel"][ info[getn(info)] ] = value; UF:CreateAndUpdateUF("player") end,
+ name = L["Detach From Frame"],
+ get = function(info) return E.db.unitframe.units.player.classbar[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.player.classbar[ info[getn(info)] ] = value UF:CreateAndUpdateUF("player") end,
guiInline = true,
- disabled = function() return not E.db.unitframe.units["player"]["classbar"].detachFromFrame end,
- hidden = function() return not E.db.unitframe.units["player"]["classbar"].detachFromFrame end,
args = {
- useCustomStrata = {
+ detachFromFrame = {
order = 1,
type = "toggle",
- name = L["Use Custom Strata"],
+ name = L["Enable"],
+ width = "full",
+ set = function(info, value)
+ if value == true then
+ E.Options.args.unitframe.args.player.args.classbar.args.height.max = 300
+ else
+ E.Options.args.unitframe.args.player.args.classbar.args.height.max = 30
+ end
+ E.db.unitframe.units.player.classbar[ info[getn(info)] ] = value
+ UF:CreateAndUpdateUF("player")
+ end,
+ disabled = function() return not E.db.unitframe.units.player.classbar.enable end
},
- frameStrata = {
+ detachedWidth = {
order = 2,
- type = "select",
- name = L["Frame Strata"],
- values = {
- ["BACKGROUND"] = "BACKGROUND",
- ["LOW"] = "LOW",
- ["MEDIUM"] = "MEDIUM",
- ["HIGH"] = "HIGH",
- ["DIALOG"] = "DIALOG",
- ["TOOLTIP"] = "TOOLTIP",
- },
+ type = "range",
+ name = L["Detached Width"],
+ disabled = function() return not E.db.unitframe.units.player.classbar.detachFromFrame or not E.db.unitframe.units.player.classbar.enable end,
+ min = ((E.db.unitframe.thinBorders or E.PixelMode) and 3 or 7), max = 800, step = 1
},
- spacer = {
+ orientation = {
order = 3,
- type = "description",
- name = "",
+ type = "select",
+ name = L["Frame Orientation"],
+ disabled = function()
+ return (E.db.unitframe.units.player.classbar.fill and (E.db.unitframe.units.player.classbar.fill == "fill"))
+ or not E.db.unitframe.units.player.classbar.detachFromFrame
+ or not E.db.unitframe.units.player.classbar.enable
+ end,
+ values = {
+ ["HORIZONTAL"] = L["Horizontal"],
+ ["VERTICAL"] = L["Vertical"]
+ }
},
- useCustomLevel = {
+ verticalOrientation = {
order = 4,
type = "toggle",
- name = L["Use Custom Level"],
+ name = L["Vertical Fill Direction"],
+ disabled = function() return not E.db.unitframe.units.player.classbar.detachFromFrame or not E.db.unitframe.units.player.classbar.enable end
},
- frameLevel = {
+ spacing = {
order = 5,
type = "range",
- name = L["Frame Level"],
- min = 2, max = 128, step = 1,
+ name = L["Spacing"],
+ min = ((E.db.unitframe.thinBorders or E.PixelMode) and -1 or -4), max = 20, step = 1,
+ disabled = function() return not E.db.unitframe.units.player.classbar.detachFromFrame or not E.db.unitframe.units.player.classbar.enable end
},
- },
- },
- },
+ parent = {
+ order = 6,
+ type = "select",
+ name = L["Parent"],
+ desc = L["Choose UIPARENT to prevent it from hiding with the unitframe."],
+ disabled = function() return not E.db.unitframe.units.player.classbar.detachFromFrame or not E.db.unitframe.units.player.classbar.enable end,
+ values = {
+ ["FRAME"] = "FRAME",
+ ["UIPARENT"] = "UIPARENT"
+ }
+ },
+ strataAndLevel = {
+ order = 7,
+ type = "group",
+ name = L["Strata and Level"],
+ get = function(info) return E.db.unitframe.units.player.classbar.strataAndLevel[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.player.classbar.strataAndLevel[ info[getn(info)] ] = value UF:CreateAndUpdateUF("player") end,
+ guiInline = true,
+ disabled = function() return not E.db.unitframe.units.player.classbar.detachFromFrame end,
+ hidden = function() return not E.db.unitframe.units.player.classbar.detachFromFrame end,
+ args = {
+ useCustomStrata = {
+ order = 1,
+ type = "toggle",
+ name = L["Use Custom Strata"],
+ disabled = function() return not E.db.unitframe.units.player.classbar.enable end
+ },
+ frameStrata = {
+ order = 2,
+ type = "select",
+ name = L["Frame Strata"],
+ values = {
+ ["BACKGROUND"] = "BACKGROUND",
+ ["LOW"] = "LOW",
+ ["MEDIUM"] = "MEDIUM",
+ ["HIGH"] = "HIGH",
+ ["DIALOG"] = "DIALOG",
+ ["TOOLTIP"] = "TOOLTIP"
+ },
+ disabled = function() return not E.db.unitframe.units.player.classbar.enable end
+ },
+ spacer = {
+ order = 3,
+ type = "description",
+ name = ""
+ },
+ useCustomLevel = {
+ order = 4,
+ type = "toggle",
+ name = L["Use Custom Level"],
+ disabled = function() return not E.db.unitframe.units.player.classbar.enable end
+ },
+ frameLevel = {
+ order = 5,
+ type = "range",
+ name = L["Frame Level"],
+ min = 2, max = 128, step = 1,
+ disabled = function() return not E.db.unitframe.units.player.classbar.enable end
+ }
+ }
+ }
+ }
+ }
+ }
},
- pvpIcon = {
- order = 449,
+ RestIcon = {
+ order = 430,
type = "group",
- name = L["PvP Icon"],
- get = function(info) return E.db.unitframe.units["player"]["pvpIcon"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["player"]["pvpIcon"][ info[getn(info)] ] = value; UF:CreateAndUpdateUF("player") end,
+ name = L["Rest Icon"],
+ get = function(info) return E.db.unitframe.units.player.RestIcon[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.player.RestIcon[ info[getn(info)] ] = value UF:CreateAndUpdateUF("player") end,
args = {
header = {
order = 1,
type = "header",
- name = L["PvP Icon"],
+ name = L["Rest Icon"]
},
enable = {
order = 2,
type = "toggle",
- name = L["Enable"],
+ name = L["Enable"]
},
- scale = {
+ defaultColor = {
order = 3,
- type = "range",
- name = L["Scale"],
- isPercent = true,
- min = 0.1, max = 2, step = 0.01,
+ type = "toggle",
+ name = L["Default Color"]
},
- spacer = {
+ color = {
order = 4,
- type = "description",
- name = " ",
+ type = "color",
+ name = COLOR,
+ hasAlpha = true,
+ disabled = function()
+ return E.db.unitframe.units.player.RestIcon.defaultColor
+ end,
+ get = function()
+ local c = E.db.unitframe.units.player.RestIcon.color
+ local d = P.unitframe.units.player.RestIcon.color
+ return c.r, c.g, c.b, c.a, d.r, d.g, d.b, d.a
+ end,
+ set = function(_, r, g, b, a)
+ local c = E.db.unitframe.units.player.RestIcon.color
+ c.r, c.g, c.b, c.a = r, g, b, a
+ UF:CreateAndUpdateUF("player")
+ end
},
- anchorPoint = {
+ size = {
order = 5,
- type = "select",
- name = L["Anchor Point"],
- values = positionValues,
+ type = "range",
+ name = L["Size"],
+ min = 10, max = 60, step = 1
},
xOffset = {
order = 6,
type = "range",
name = L["X-Offset"],
- min = -100, max = 100, step = 1,
+ min = -100, max = 100, step = 1
},
yOffset = {
order = 7,
type = "range",
name = L["Y-Offset"],
- min = -100, max = 100, step = 1,
+ min = -100, max = 100, step = 1
},
- },
+ spacer2 = {
+ order = 8,
+ type = "description",
+ name = " "
+ },
+ anchorPoint = {
+ order = 9,
+ type = "select",
+ name = L["Anchor Point"],
+ values = positionValues
+ },
+ texture = {
+ order = 10,
+ type = "select",
+ name = L["Texture"],
+ values = {
+ ["CUSTOM"] = L["Custom"],
+ ["DEFAULT"] = L["Default"],
+ ["RESTING"] = L["Icon 1"],
+ ["RESTING1"] = L["Icon 2"]
+ }
+ },
+ customTexture = {
+ order = 11,
+ type = "input",
+ name = L["Custom Texture"],
+ disabled = function()
+ return E.db.unitframe.units.player.RestIcon.texture ~= "CUSTOM"
+ end,
+ set = function(_, value)
+ E.db.unitframe.units.player.RestIcon.customTexture = (value and (not match(value, "^%s-$")) and value) or nil
+ UF:CreateAndUpdateUF("player")
+ end
+ }
+ }
},
- pvpText = {
- order = 450,
+ CombatIcon = {
+ order = 440,
type = "group",
- name = L["PvP Text"],
- get = function(info) return E.db.unitframe.units["player"]["pvp"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["player"]["pvp"][ info[getn(info)] ] = value; UF:CreateAndUpdateUF("player") end,
+ name = L["Combat Icon"],
+ get = function(info) return E.db.unitframe.units.player.CombatIcon[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.player.CombatIcon[ info[getn(info)] ] = value UF:CreateAndUpdateUF("player") end,
args = {
header = {
order = 1,
type = "header",
- name =L["PvP Text"],
+ name = L["Combat Icon"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ defaultColor = {
+ order = 3,
+ type = "toggle",
+ name = L["Default Color"]
+ },
+ color = {
+ order = 4,
+ type = "color",
+ name = COLOR,
+ hasAlpha = true,
+ disabled = function()
+ return E.db.unitframe.units.player.CombatIcon.defaultColor
+ end,
+ get = function()
+ local c = E.db.unitframe.units.player.CombatIcon.color
+ local d = P.unitframe.units.player.CombatIcon.color
+ return c.r, c.g, c.b, c.a, d.r, d.g, d.b, d.a
+ end,
+ set = function(_, r, g, b, a)
+ local c = E.db.unitframe.units.player.CombatIcon.color
+ c.r, c.g, c.b, c.a = r, g, b, a
+ UF:CreateAndUpdateUF("player")
+ end
+ },
+ size = {
+ order = 5,
+ type = "range",
+ name = L["Size"],
+ min = 10, max = 60, step = 1
+ },
+ xOffset = {
+ order = 6,
+ type = "range",
+ name = L["X-Offset"],
+ min = -100, max = 100, step = 1
+ },
+ yOffset = {
+ order = 7,
+ type = "range",
+ name = L["Y-Offset"],
+ min = -100, max = 100, step = 1
+ },
+ spacer2 = {
+ order = 8,
+ type = "description",
+ name = " ",
+ },
+ anchorPoint = {
+ order = 9,
+ type = "select",
+ name = L["Anchor Point"],
+ values = positionValues
+ },
+ texture = {
+ order = 10,
+ type = "select",
+ name = L["Texture"],
+ values = {
+ ["CUSTOM"] = L["Custom"],
+ ["DEFAULT"] = L["Default"],
+ ["COMBAT"] = L["Combat"],
+ ["ATTACK"] = L["Attack"],
+ ["ALERT"] = L["Alert"],
+ ["ALERT2"] = L["Alert 2"],
+ ["ARTHAS"] = L["Arthas"],
+ ["SKULL"] = L["Skull"]
+ }
+ },
+ customTexture = {
+ order = 11,
+ type = "input",
+ name = L["Custom Texture"],
+ disabled = function()
+ return E.db.unitframe.units.player.CombatIcon.texture ~= "CUSTOM"
+ end,
+ set = function(_, value)
+ E.db.unitframe.units.player.CombatIcon.customTexture = (value and (not match(value, "^%s-$")) and value) or nil
+ UF:CreateAndUpdateUF("player")
+ end
+ }
+ }
+ },
+ pvpIcon = {
+ order = 449,
+ type = "group",
+ name = L["PvP Icon"],
+ get = function(info) return E.db.unitframe.units.player.pvpIcon[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.player.pvpIcon[ info[getn(info)] ] = value UF:CreateAndUpdateUF("player") end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["PvP Icon"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ scale = {
+ order = 3,
+ type = "range",
+ name = L["Scale"],
+ isPercent = true,
+ min = 0.1, max = 2, step = 0.01
+ },
+ spacer = {
+ order = 4,
+ type = "description",
+ name = " "
+ },
+ anchorPoint = {
+ order = 5,
+ type = "select",
+ name = L["Anchor Point"],
+ values = positionValues
+ },
+ xOffset = {
+ order = 6,
+ type = "range",
+ name = L["X-Offset"],
+ min = -100, max = 100, step = 1
+ },
+ yOffset = {
+ order = 7,
+ type = "range",
+ name = L["Y-Offset"],
+ min = -100, max = 100, step = 1
+ }
+ }
+ },
+ pvpText = {
+ order = 850,
+ type = "group",
+ name = L["PvP Text"],
+ get = function(info) return E.db.unitframe.units.player.pvp[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.player.pvp[ info[getn(info)] ] = value UF:CreateAndUpdateUF("player") end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["PvP Text"]
},
position = {
- type = "select",
order = 2,
+ type = "select",
name = L["Position"],
- values = positionValues,
+ values = positionValues
},
text_format = {
order = 100,
- name = L["Text Format"],
type = "input",
- width = "full",
+ name = L["Text Format"],
desc = L["TEXT_FORMAT_DESC"],
- },
- },
+ width = "full"
+ }
+ }
},
- },
+ raidRoleIcons = {
+ order = 703,
+ type = "group",
+ name = L["RL / ML Icons"],
+ get = function(info) return E.db.unitframe.units.player.raidRoleIcons[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.player.raidRoleIcons[ info[getn(info)] ] = value UF:CreateAndUpdateUF("player") end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["RL / ML Icons"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ position = {
+ order = 3,
+ type = "select",
+ name = L["Position"],
+ values = {
+ ["TOPLEFT"] = "TOPLEFT",
+ ["TOPRIGHT"] = "TOPRIGHT"
+ }
+ }
+ }
+ }
+ }
}
---Target
E.Options.args.unitframe.args.target = {
- name = L["Target Frame"],
- type = "group",
order = 400,
+ type = "group",
+ name = L["Target Frame"],
childGroups = "tab",
- get = function(info) return E.db.unitframe.units["target"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["target"][ info[getn(info)] ] = value; UF:CreateAndUpdateUF("target") end,
- disabled = function() return not E.UnitFrames; end,
+ get = function(info) return E.db.unitframe.units.target[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.target[ info[getn(info)] ] = value UF:CreateAndUpdateUF("target") end,
+ disabled = function() return not E.UnitFrames end,
args = {
generalGroup = {
order = 1,
type = "group",
- name = GENERAL,
+ name = L["General"],
args = {
header = {
order = 1,
type = "header",
- name = GENERAL,
+ name = L["General"]
},
enable = {
- type = "toggle",
order = 2,
+ type = "toggle",
name = L["Enable"],
- width = "full",
+ width = "full"
},
copyFrom = {
- type = "select",
order = 3,
+ type = "select",
name = L["Copy From"],
desc = L["Select a unit to copy settings from."],
- values = UF["units"],
- set = function(info, value) UF:MergeUnitSettings(value, "target"); end,
+ values = UF.units,
+ set = function(info, value) UF:MergeUnitSettings(value, "target") end
},
resetSettings = {
- type = "execute",
order = 4,
+ type = "execute",
name = L["Restore Defaults"],
- func = function(info, value) UF:ResetUnitSettings("target"); E:ResetMovers(L["Target Frame"]) end,
+ func = function(info) E:StaticPopup_Show("RESET_UF_UNIT", L["Target Frame"], nil, {unit="target", mover="Target Frame"}) end
},
showAuras = {
order = 5,
@@ -2912,104 +3748,101 @@ E.Options.args.unitframe.args.target = {
func = function()
local frame = ElvUF_Target
if frame.forceShowAuras then
- frame.forceShowAuras = nil;
+ frame.forceShowAuras = nil
else
- frame.forceShowAuras = true;
+ frame.forceShowAuras = true
end
UF:CreateAndUpdateUF("target")
- end,
+ end
},
width = {
order = 6,
- name = L["Width"],
type = "range",
- min = 50, max = 500, step = 1,
+ name = L["Width"],
+ min = 50, max = 1000, step = 1,
set = function(info, value)
- if E.db.unitframe.units["target"].castbar.width == E.db.unitframe.units["target"][ info[getn(info)] ] then
- E.db.unitframe.units["target"].castbar.width = value;
+ if E.db.unitframe.units.target.castbar.width == E.db.unitframe.units.target[ info[getn(info)] ] then
+ E.db.unitframe.units.target.castbar.width = value
end
- E.db.unitframe.units["target"][ info[getn(info)] ] = value;
- UF:CreateAndUpdateUF("target");
+ E.db.unitframe.units.target[ info[getn(info)] ] = value
+ UF:CreateAndUpdateUF("target")
end,
},
height = {
order = 7,
- name = L["Height"],
type = "range",
- min = 10, max = 250, step = 1,
+ name = L["Height"],
+ min = 10, max = 500, step = 1,
},
rangeCheck = {
order = 8,
- name = L["Range Check"],
- desc = L["Check if you are in range to cast spells on this specific unit."],
type = "toggle",
+ name = L["Range Check"],
+ desc = L["Check if you are in range to cast spells on this specific unit."]
},
healPrediction = {
order = 9,
- name = L["Heal Prediction"],
- desc = L["Show an incoming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
type = "toggle",
+ name = L["Heal Prediction"],
+ desc = L["Show an incoming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."]
},
hideonnpc = {
- type = "toggle",
order = 10,
+ type = "toggle",
name = L["Text Toggle On NPC"],
desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
- get = function(info) return E.db.unitframe.units["target"]["power"].hideonnpc end,
- set = function(info, value) E.db.unitframe.units["target"]["power"].hideonnpc = value; UF:CreateAndUpdateUF("target") end,
+ get = function(info) return E.db.unitframe.units.target.power.hideonnpc end,
+ set = function(info, value) E.db.unitframe.units.target.power.hideonnpc = value UF:CreateAndUpdateUF("target") end
},
- middleClickFocus = {
+ --[[middleClickFocus = {
order = 11,
+ type = "toggle",
name = L["Middle Click - Set Focus"],
desc = L["Middle clicking the unit frame will cause your focus to match the unit."],
- type = "toggle",
- disabled = function() return IsAddOnLoaded("Clique") end,
- },
+ disabled = function() return IsAddOnLoaded("Clique") end
+ },--]]
threatStyle = {
- type = "select",
order = 12,
+ type = "select",
name = L["Threat Display Mode"],
- values = threatValues,
+ values = threatValues
},
smartAuraPosition = {
order = 13,
type = "select",
name = L["Smart Aura Position"],
desc = L["Will show Buffs in the Debuff position when there are no Debuffs active, or vice versa."],
- values = {
- ["DISABLED"] = DISABLE,
- ["BUFFS_ON_DEBUFFS"] = L["Position Buffs on Debuffs"],
- ["DEBUFFS_ON_BUFFS"] = L["Position Debuffs on Buffs"],
- ["FLUID_BUFFS_ON_DEBUFFS"] = L["Fluid Position Buffs on Debuffs"],
- ["FLUID_DEBUFFS_ON_BUFFS"] = L["Fluid Position Debuffs on Buffs"],
- },
+ values = smartAuraPositionValues
},
orientation = {
order = 14,
type = "select",
name = L["Frame Orientation"],
desc = L["Set the orientation of the UnitFrame."],
- values = {
- --["AUTOMATIC"] = L["Automatic"], not sure if i will use this yet
- ["LEFT"] = L["Left"],
- ["MIDDLE"] = L["Middle"],
- ["RIGHT"] = L["Right"],
- },
+ values = orientationValues
},
colorOverride = {
order = 15,
+ type = "select",
name = L["Class Color Override"],
desc = L["Override the default class color setting."],
- type = "select",
- values = {
- ["USE_DEFAULT"] = L["Use Default"],
- ["FORCE_ON"] = L["Force On"],
- ["FORCE_OFF"] = L["Force Off"],
- },
+ values = colorOverrideValues
},
- },
+ disableMouseoverGlow = {
+ order = 16,
+ type = "toggle",
+ name = L["Block Mouseover Glow"],
+ desc = L["Forces Mouseover Glow to be disabled for these frames"]
+ },
+ disableTargetGlow = {
+ order = 17,
+ type = "toggle",
+ name = L["Block Target Glow"],
+ desc = L["Forces Target Glow to be disabled for these frames"]
+ }
+ }
},
customText = GetOptionsTable_CustomText(UF.CreateAndUpdateUF, "target"),
health = GetOptionsTable_Health(false, UF.CreateAndUpdateUF, "target"),
@@ -3017,34 +3850,37 @@ E.Options.args.unitframe.args.target = {
power = GetOptionsTable_Power(true, UF.CreateAndUpdateUF, "target", nil, true),
name = GetOptionsTable_Name(UF.CreateAndUpdateUF, "target"),
portrait = GetOptionsTable_Portrait(UF.CreateAndUpdateUF, "target"),
- --buffs = GetOptionsTable_Auras(false, "buffs", false, UF.CreateAndUpdateUF, "target"),
- --debuffs = GetOptionsTable_Auras(false, "debuffs", false, UF.CreateAndUpdateUF, "target"),
- --castbar = GetOptionsTable_Castbar(UF.CreateAndUpdateUF, "target"),
- --aurabar = GetOptionsTable_AuraBars(false, UF.CreateAndUpdateUF, "target"),
+ buffs = GetOptionsTable_Auras(false, "buffs", false, UF.CreateAndUpdateUF, "target"),
+ debuffs = GetOptionsTable_Auras(false, "debuffs", false, UF.CreateAndUpdateUF, "target"),
+ castbar = GetOptionsTable_Castbar(false, UF.CreateAndUpdateUF, "target"),
+ aurabar = GetOptionsTable_AuraBars(false, UF.CreateAndUpdateUF, "target"),
raidicon = GetOptionsTable_RaidIcon(UF.CreateAndUpdateUF, "target"),
GPSArrow = GetOptionsTableForNonGroup_GPS("target"),
combobar = {
order = 850,
type = "group",
name = L["Combobar"],
- get = function(info) return E.db.unitframe.units["target"]["combobar"][ info[getn(info)] ]; end,
- set = function(info, value) E.db.unitframe.units["target"]["combobar"][ info[getn(info)] ] = value; UF:CreateAndUpdateUF("target"); end,
+ get = function(info) return E.db.unitframe.units.target.combobar[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.target.combobar[ info[getn(info)] ] = value UF:CreateAndUpdateUF("target") end,
args = {
header = {
order = 1,
type = "header",
- name = L["Combobar"],
+ name = L["Combobar"]
},
enable = {
order = 2,
type = "toggle",
- name = L["Enable"],
+ name = L["Enable"]
},
height = {
order = 3,
type = "range",
name = L["Height"],
- min = ((E.db.unitframe.thinBorders or E.PixelMode) and 3 or 7), max = 15, step = 1,
+ min = ((E.db.unitframe.thinBorders or E.PixelMode) and 3 or 7),
+ max = (E.db.unitframe.units.target.combobar.detachFromFrame and 300 or 30),
+ step = 1,
+ disabled = function() return not E.db.unitframe.units.target.combobar.enable end
},
fill = {
order = 4,
@@ -3052,119 +3888,233 @@ E.Options.args.unitframe.args.target = {
name = L["Fill"],
values = {
["fill"] = L["Filled"],
- ["spaced"] = L["Spaced"],
+ ["spaced"] = L["Spaced"]
},
+ disabled = function() return not E.db.unitframe.units.target.combobar.enable end
},
autoHide = {
order = 5,
type = "toggle",
name = L["Auto-Hide"],
+ disabled = function() return not E.db.unitframe.units.target.combobar.enable end
},
- detachFromFrame = {
+ spacer = {
order = 6,
- type = "toggle",
+ type = "description",
+ name = ""
+ },
+ detachGroup = {
+ order = 8,
+ type = "group",
name = L["Detach From Frame"],
- },
- detachedWidth = {
- order = 7,
- type = "range",
- name = L["Detached Width"],
- disabled = function() return not E.db.unitframe.units["target"]["combobar"].detachFromFrame; end,
- min = 15, max = 450, step = 1,
- },
- },
+ get = function(info) return E.db.unitframe.units.target.combobar[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.target.combobar[ info[getn(info)] ] = value UF:CreateAndUpdateUF("target") end,
+ guiInline = true,
+ args = {
+ detachFromFrame = {
+ order = 1,
+ type = "toggle",
+ name = L["Enable"],
+ width = "full",
+ set = function(info, value)
+ if value == true then
+ E.Options.args.unitframe.args.target.args.combobar.args.height.max = 300
+ else
+ E.Options.args.unitframe.args.target.args.combobar.args.height.max = 30
+ end
+ E.db.unitframe.units.target.combobar[ info[getn(info)] ] = value
+ UF:CreateAndUpdateUF("target")
+ end,
+ disabled = function() return not E.db.unitframe.units.target.combobar.enable end
+ },
+ detachedWidth = {
+ order = 2,
+ type = "range",
+ name = L["Detached Width"],
+ disabled = function() return not E.db.unitframe.units.target.combobar.detachFromFrame or not E.db.unitframe.units.target.combobar.enable end,
+ min = ((E.db.unitframe.thinBorders or E.PixelMode) and 3 or 7), max = 800, step = 1
+ },
+ orientation = {
+ order = 3,
+ type = "select",
+ name = L["Frame Orientation"],
+ disabled = function()
+ return (E.db.unitframe.units.target.combobar.fill and (E.db.unitframe.units.target.combobar.fill == "fill"))
+ or not E.db.unitframe.units.target.combobar.detachFromFrame
+ or not E.db.unitframe.units.target.combobar.enable
+ end,
+ values = {
+ ["HORIZONTAL"] = L["Horizontal"],
+ ["VERTICAL"] = L["Vertical"]
+ }
+ },
+ spacer = {
+ order = 4,
+ type = "description",
+ name = ""
+ },
+ spacing = {
+ order = 5,
+ type = "range",
+ name = L["Spacing"],
+ min = ((E.db.unitframe.thinBorders or E.PixelMode) and -1 or -4), max = 20, step = 1,
+ disabled = function() return not E.db.unitframe.units.target.combobar.detachFromFrame or not E.db.unitframe.units.target.combobar.enable end
+ },
+ parent = {
+ order = 6,
+ type = "select",
+ name = L["Parent"],
+ desc = L["Choose UIPARENT to prevent it from hiding with the unitframe."],
+ disabled = function() return not E.db.unitframe.units.target.combobar.detachFromFrame or not E.db.unitframe.units.target.combobar.enable end,
+ values = {
+ ["FRAME"] = "FRAME",
+ ["UIPARENT"] = "UIPARENT"
+ }
+ },
+ strataAndLevel = {
+ order = 7,
+ type = "group",
+ name = L["Strata and Level"],
+ get = function(info) return E.db.unitframe.units.target.combobar.strataAndLevel[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.target.combobar.strataAndLevel[ info[getn(info)] ] = value UF:CreateAndUpdateUF("target") end,
+ guiInline = true,
+ disabled = function() return not E.db.unitframe.units.target.combobar.detachFromFrame end,
+ hidden = function() return not E.db.unitframe.units.target.combobar.detachFromFrame end,
+ args = {
+ useCustomStrata = {
+ order = 1,
+ type = "toggle",
+ name = L["Use Custom Strata"],
+ disabled = function() return not E.db.unitframe.units.target.combobar.enable end
+ },
+ frameStrata = {
+ order = 2,
+ type = "select",
+ name = L["Frame Strata"],
+ values = {
+ ["BACKGROUND"] = "BACKGROUND",
+ ["LOW"] = "LOW",
+ ["MEDIUM"] = "MEDIUM",
+ ["HIGH"] = "HIGH",
+ ["DIALOG"] = "DIALOG",
+ ["TOOLTIP"] = "TOOLTIP"
+ },
+ disabled = function() return not E.db.unitframe.units.target.combobar.enable end
+ },
+ spacer = {
+ order = 3,
+ type = "description",
+ name = ""
+ },
+ useCustomLevel = {
+ order = 4,
+ type = "toggle",
+ name = L["Use Custom Level"],
+ disabled = function() return not E.db.unitframe.units.target.combobar.enable end
+ },
+ frameLevel = {
+ order = 5,
+ type = "range",
+ name = L["Frame Level"],
+ min = 2, max = 128, step = 1,
+ disabled = function() return not E.db.unitframe.units.target.combobar.enable end
+ }
+ }
+ }
+ }
+ }
+ }
},
- pvpIcon = {
+ pvpIcon = {
order = 449,
type = "group",
name = L["PvP Icon"],
- get = function(info) return E.db.unitframe.units["target"]["pvpIcon"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["target"]["pvpIcon"][ info[getn(info)] ] = value; UF:CreateAndUpdateUF("target") end,
+ get = function(info) return E.db.unitframe.units.target.pvpIcon[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.target.pvpIcon[ info[getn(info)] ] = value UF:CreateAndUpdateUF("target") end,
args = {
header = {
order = 1,
type = "header",
- name = L["PvP Icon"],
+ name = L["PvP Icon"]
},
enable = {
order = 2,
type = "toggle",
- name = L["Enable"],
+ name = L["Enable"]
},
scale = {
order = 3,
type = "range",
name = L["Scale"],
isPercent = true,
- min = 0.1, max = 2, step = 0.01,
+ min = 0.1, max = 2, step = 0.01
},
spacer = {
order = 4,
type = "description",
- name = " ",
+ name = " "
},
anchorPoint = {
order = 5,
type = "select",
name = L["Anchor Point"],
- values = positionValues,
+ values = positionValues
},
xOffset = {
order = 6,
type = "range",
name = L["X-Offset"],
- min = -100, max = 100, step = 1,
+ min = -100, max = 100, step = 1
},
yOffset = {
order = 7,
type = "range",
name = L["Y-Offset"],
- min = -100, max = 100, step = 1,
- },
- },
- },
- },
+ min = -100, max = 100, step = 1
+ }
+ }
+ }
+ }
}
---TargetTarget
E.Options.args.unitframe.args.targettarget = {
- name = L["TargetTarget Frame"],
- type = "group",
order = 500,
+ type = "group",
+ name = L["TargetTarget Frame"],
childGroups = "tab",
- get = function(info) return E.db.unitframe.units["targettarget"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["targettarget"][ info[getn(info)] ] = value; UF:CreateAndUpdateUF("targettarget") end,
- disabled = function() return not E.UnitFrames; end,
+ get = function(info) return E.db.unitframe.units.targettarget[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.targettarget[ info[getn(info)] ] = value UF:CreateAndUpdateUF("targettarget") end,
+ disabled = function() return not E.UnitFrames end,
args = {
generalGroup = {
order = 1,
type = "group",
- name = GENERAL,
+ name = L["General"],
args = {
header = {
order = 1,
type = "header",
- name = GENERAL,
+ name = L["General"]
},
enable = {
- type = "toggle",
order = 2,
+ type = "toggle",
name = L["Enable"],
- width = "full",
+ width = "full"
},
copyFrom = {
- type = "select",
order = 3,
+ type = "select",
name = L["Copy From"],
desc = L["Select a unit to copy settings from."],
- values = UF["units"],
- set = function(info, value) UF:MergeUnitSettings(value, "targettarget"); end,
+ values = UF.units,
+ set = function(info, value) UF:MergeUnitSettings(value, "targettarget") end
},
resetSettings = {
- type = "execute",
order = 4,
+ type = "execute",
name = L["Restore Defaults"],
- func = function(info, value) UF:ResetUnitSettings("targettarget"); E:ResetMovers(L["TargetTarget Frame"]) end,
+ func = function(info) E:StaticPopup_Show("RESET_UF_UNIT", L["TargetTarget Frame"], nil, {unit="targettarget", mover="TargetTarget Frame"}) end
},
showAuras = {
order = 5,
@@ -3173,81 +4123,85 @@ E.Options.args.unitframe.args.targettarget = {
func = function()
local frame = ElvUF_TargetTarget
if frame.forceShowAuras then
- frame.forceShowAuras = nil;
+ frame.forceShowAuras = nil
else
- frame.forceShowAuras = true;
+ frame.forceShowAuras = true
end
UF:CreateAndUpdateUF("targettarget")
- end,
+ end
},
width = {
order = 6,
- name = L["Width"],
type = "range",
- min = 50, max = 500, step = 1,
+ name = L["Width"],
+ min = 50, max = 1000, step = 1
},
height = {
order = 7,
- name = L["Height"],
type = "range",
- min = 10, max = 250, step = 1,
+ name = L["Height"],
+ min = 10, max = 500, step = 1
},
rangeCheck = {
order = 8,
- name = L["Range Check"],
- desc = L["Check if you are in range to cast spells on this specific unit."],
type = "toggle",
+ name = L["Range Check"],
+ desc = L["Check if you are in range to cast spells on this specific unit."]
},
hideonnpc = {
- type = "toggle",
order = 9,
+ type = "toggle",
name = L["Text Toggle On NPC"],
desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
- get = function(info) return E.db.unitframe.units["targettarget"]["power"].hideonnpc end,
- set = function(info, value) E.db.unitframe.units["targettarget"]["power"].hideonnpc = value; UF:CreateAndUpdateUF("targettarget") end,
+ get = function(info) return E.db.unitframe.units.targettarget.power.hideonnpc end,
+ set = function(info, value) E.db.unitframe.units.targettarget.power.hideonnpc = value UF:CreateAndUpdateUF("targettarget") end
},
threatStyle = {
- type = "select",
order = 10,
+ type = "select",
name = L["Threat Display Mode"],
- values = threatValues,
+ values = threatValues
},
smartAuraPosition = {
order = 11,
type = "select",
name = L["Smart Aura Position"],
desc = L["Will show Buffs in the Debuff position when there are no Debuffs active, or vice versa."],
- values = {
- ["DISABLED"] = DISABLE,
- ["BUFFS_ON_DEBUFFS"] = L["Position Buffs on Debuffs"],
- ["DEBUFFS_ON_BUFFS"] = L["Position Debuffs on Buffs"],
- },
+ values = smartAuraPositionValues
},
orientation = {
order = 12,
type = "select",
name = L["Frame Orientation"],
desc = L["Set the orientation of the UnitFrame."],
- values = {
- --["AUTOMATIC"] = L["Automatic"], not sure if i will use this yet
- ["LEFT"] = L["Left"],
- ["MIDDLE"] = L["Middle"],
- ["RIGHT"] = L["Right"],
- },
+ values = orientationValues
},
colorOverride = {
order = 13,
+ type = "select",
name = L["Class Color Override"],
desc = L["Override the default class color setting."],
- type = "select",
- values = {
- ["USE_DEFAULT"] = L["Use Default"],
- ["FORCE_ON"] = L["Force On"],
- ["FORCE_OFF"] = L["Force Off"],
- },
+ values = colorOverrideValues
},
- },
+ spacer = {
+ order = 14,
+ type = "description",
+ name = ""
+ },
+ disableMouseoverGlow = {
+ order = 15,
+ type = "toggle",
+ name = L["Block Mouseover Glow"],
+ desc = L["Forces Mouseover Glow to be disabled for these frames"]
+ },
+ disableTargetGlow = {
+ order = 16,
+ type = "toggle",
+ name = L["Block Target Glow"],
+ desc = L["Forces Target Glow to be disabled for these frames"]
+ }
+ }
},
customText = GetOptionsTable_CustomText(UF.CreateAndUpdateUF, "targettarget"),
health = GetOptionsTable_Health(false, UF.CreateAndUpdateUF, "targettarget"),
@@ -3255,51 +4209,50 @@ E.Options.args.unitframe.args.targettarget = {
power = GetOptionsTable_Power(nil, UF.CreateAndUpdateUF, "targettarget"),
name = GetOptionsTable_Name(UF.CreateAndUpdateUF, "targettarget"),
portrait = GetOptionsTable_Portrait(UF.CreateAndUpdateUF, "targettarget"),
- --buffs = GetOptionsTable_Auras(false, "buffs", false, UF.CreateAndUpdateUF, "targettarget"),
- --debuffs = GetOptionsTable_Auras(false, "debuffs", false, UF.CreateAndUpdateUF, "targettarget"),
+ buffs = GetOptionsTable_Auras(false, "buffs", false, UF.CreateAndUpdateUF, "targettarget"),
+ debuffs = GetOptionsTable_Auras(false, "debuffs", false, UF.CreateAndUpdateUF, "targettarget"),
raidicon = GetOptionsTable_RaidIcon(UF.CreateAndUpdateUF, "targettarget"),
- },
+ }
}
---TargetTargetTarget
E.Options.args.unitframe.args.targettargettarget = {
- name = L["TargetTargetTarget Frame"],
+ order = 550,
type = "group",
- order = 500,
+ name = L["TargetTargetTarget Frame"],
childGroups = "tab",
- get = function(info) return E.db.unitframe.units["targettargettarget"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["targettargettarget"][ info[getn(info)] ] = value; UF:CreateAndUpdateUF("targettargettarget") end,
- disabled = function() return not E.UnitFrames; end,
+ get = function(info) return E.db.unitframe.units.targettargettarget[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.targettargettarget[ info[getn(info)] ] = value UF:CreateAndUpdateUF("targettargettarget") end,
+ disabled = function() return not E.UnitFrames end,
args = {
generalGroup = {
order = 1,
type = "group",
- name = GENERAL,
+ name = L["General"],
args = {
header = {
order = 1,
type = "header",
- name = GENERAL,
+ name = L["General"]
},
enable = {
- type = "toggle",
order = 2,
+ type = "toggle",
name = L["Enable"],
- width = "full",
+ width = "full"
},
copyFrom = {
- type = "select",
order = 3,
+ type = "select",
name = L["Copy From"],
desc = L["Select a unit to copy settings from."],
- values = UF["units"],
- set = function(info, value) UF:MergeUnitSettings(value, "targettargettarget"); end,
+ values = UF.units,
+ set = function(info, value) UF:MergeUnitSettings(value, "targettargettarget") end
},
resetSettings = {
- type = "execute",
order = 4,
+ type = "execute",
name = L["Restore Defaults"],
- func = function(info, value) UF:ResetUnitSettings("targettargettarget"); E:ResetMovers(L["TargetTargetTarget Frame"]) end,
+ func = function(info) E:StaticPopup_Show("RESET_UF_UNIT", L["TargetTargetTarget Frame"], nil, {unit="targettargettarget", mover="TargetTargetTarget Frame"}) end
},
showAuras = {
order = 5,
@@ -3308,83 +4261,85 @@ E.Options.args.unitframe.args.targettargettarget = {
func = function()
local frame = ElvUF_TargetTargetTarget
if frame.forceShowAuras then
- frame.forceShowAuras = nil;
+ frame.forceShowAuras = nil
else
- frame.forceShowAuras = true;
+ frame.forceShowAuras = true
end
UF:CreateAndUpdateUF("targettargettarget")
- end,
+ end
},
width = {
order = 6,
- name = L["Width"],
type = "range",
- min = 50, max = 500, step = 1,
+ name = L["Width"],
+ min = 50, max = 1000, step = 1
},
height = {
order = 7,
- name = L["Height"],
type = "range",
- min = 10, max = 250, step = 1,
+ name = L["Height"],
+ min = 10, max = 500, step = 1
},
rangeCheck = {
order = 8,
- name = L["Range Check"],
- desc = L["Check if you are in range to cast spells on this specific unit."],
type = "toggle",
+ name = L["Range Check"],
+ desc = L["Check if you are in range to cast spells on this specific unit."]
},
hideonnpc = {
- type = "toggle",
order = 9,
+ type = "toggle",
name = L["Text Toggle On NPC"],
desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
- get = function(info) return E.db.unitframe.units["targettargettarget"]["power"].hideonnpc end,
- set = function(info, value) E.db.unitframe.units["targettargettarget"]["power"].hideonnpc = value; UF:CreateAndUpdateUF("targettargettarget") end,
+ get = function(info) return E.db.unitframe.units.targettargettarget.power.hideonnpc end,
+ set = function(info, value) E.db.unitframe.units.targettargettarget.power.hideonnpc = value UF:CreateAndUpdateUF("targettargettarget") end
},
threatStyle = {
- type = "select",
order = 10,
+ type = "select",
name = L["Threat Display Mode"],
- values = threatValues,
+ values = threatValues
},
smartAuraPosition = {
order = 11,
type = "select",
name = L["Smart Aura Position"],
desc = L["Will show Buffs in the Debuff position when there are no Debuffs active, or vice versa."],
- values = {
- ["DISABLED"] = DISABLE,
- ["BUFFS_ON_DEBUFFS"] = L["Position Buffs on Debuffs"],
- ["DEBUFFS_ON_BUFFS"] = L["Position Debuffs on Buffs"],
- ["FLUID_BUFFS_ON_DEBUFFS"] = L["Fluid Position Buffs on Debuffs"],
- ["FLUID_DEBUFFS_ON_BUFFS"] = L["Fluid Position Debuffs on Buffs"],
- },
+ values = smartAuraPositionValues
},
orientation = {
order = 12,
type = "select",
name = L["Frame Orientation"],
desc = L["Set the orientation of the UnitFrame."],
- values = {
- --["AUTOMATIC"] = L["Automatic"], not sure if i will use this yet
- ["LEFT"] = L["Left"],
- ["MIDDLE"] = L["Middle"],
- ["RIGHT"] = L["Right"],
- },
+ values = orientationValues
},
colorOverride = {
order = 13,
+ type = "select",
name = L["Class Color Override"],
desc = L["Override the default class color setting."],
- type = "select",
- values = {
- ["USE_DEFAULT"] = L["Use Default"],
- ["FORCE_ON"] = L["Force On"],
- ["FORCE_OFF"] = L["Force Off"],
- },
+ values = colorOverrideValues
},
- },
+ spacer = {
+ order = 14,
+ type = "description",
+ name = ""
+ },
+ disableMouseoverGlow = {
+ order = 15,
+ type = "toggle",
+ name = L["Block Mouseover Glow"],
+ desc = L["Forces Mouseover Glow to be disabled for these frames"]
+ },
+ disableTargetGlow = {
+ order = 16,
+ type = "toggle",
+ name = L["Block Target Glow"],
+ desc = L["Forces Target Glow to be disabled for these frames"]
+ }
+ }
},
customText = GetOptionsTable_CustomText(UF.CreateAndUpdateUF, "targettargettarget"),
health = GetOptionsTable_Health(false, UF.CreateAndUpdateUF, "targettargettarget"),
@@ -3392,51 +4347,329 @@ E.Options.args.unitframe.args.targettargettarget = {
power = GetOptionsTable_Power(nil, UF.CreateAndUpdateUF, "targettargettarget"),
name = GetOptionsTable_Name(UF.CreateAndUpdateUF, "targettargettarget"),
portrait = GetOptionsTable_Portrait(UF.CreateAndUpdateUF, "targettargettarget"),
- --buffs = GetOptionsTable_Auras(false, "buffs", false, UF.CreateAndUpdateUF, "targettargettarget"),
- --debuffs = GetOptionsTable_Auras(false, "debuffs", false, UF.CreateAndUpdateUF, "targettargettarget"),
+ buffs = GetOptionsTable_Auras(false, "buffs", false, UF.CreateAndUpdateUF, "targettargettarget"),
+ debuffs = GetOptionsTable_Auras(false, "debuffs", false, UF.CreateAndUpdateUF, "targettargettarget"),
raidicon = GetOptionsTable_RaidIcon(UF.CreateAndUpdateUF, "targettargettarget"),
- },
+ }
}
---Pet
-E.Options.args.unitframe.args.pet = {
- name = L["Pet Frame"],
+--[[E.Options.args.unitframe.args.focus = {
+ order = 600,
type = "group",
- order = 800,
+ name = L["Focus Frame"],
childGroups = "tab",
- get = function(info) return E.db.unitframe.units["pet"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["pet"][ info[getn(info)] ] = value; UF:CreateAndUpdateUF("pet") end,
- disabled = function() return not E.UnitFrames; end,
+ get = function(info) return E.db.unitframe.units.focus[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.focus[ info[getn(info)] ] = value UF:CreateAndUpdateUF("focus") end,
+ disabled = function() return not E.UnitFrames end,
args = {
generalGroup = {
order = 1,
type = "group",
- name = GENERAL,
+ name = L["General"],
args = {
header = {
order = 1,
type = "header",
- name = GENERAL,
+ name = L["General"]
},
enable = {
- type = "toggle",
order = 2,
+ type = "toggle",
name = L["Enable"],
- width = "full",
+ width = "full"
},
copyFrom = {
- type = "select",
order = 3,
+ type = "select",
name = L["Copy From"],
desc = L["Select a unit to copy settings from."],
- values = UF["units"],
- set = function(info, value) UF:MergeUnitSettings(value, "pet"); end,
+ values = UF.units,
+ set = function(info, value) UF:MergeUnitSettings(value, "focus") end
},
resetSettings = {
- type = "execute",
order = 4,
+ type = "execute",
name = L["Restore Defaults"],
- func = function(info, value) UF:ResetUnitSettings("pet"); E:ResetMovers(L["Pet Frame"]) end,
+ func = function(info) E:StaticPopup_Show("RESET_UF_UNIT", L["Focus Frame"], nil, {unit="focus", mover="Focus Frame"}) end
+ },
+ showAuras = {
+ order = 5,
+ type = "execute",
+ name = L["Show Auras"],
+ func = function()
+ local frame = ElvUF_Focus
+ if frame.forceShowAuras then
+ frame.forceShowAuras = nil
+ else
+ frame.forceShowAuras = true
+ end
+
+ UF:CreateAndUpdateUF("focus")
+ end
+ },
+ width = {
+ order = 6,
+ type = "range",
+ name = L["Width"],
+ min = 50, max = 1000, step = 1
+ },
+ height = {
+ order = 7,
+ type = "range",
+ name = L["Height"],
+ min = 10, max = 500, step = 1
+ },
+ rangeCheck = {
+ order = 8,
+ type = "toggle",
+ name = L["Range Check"],
+ desc = L["Check if you are in range to cast spells on this specific unit."]
+ },
+ healPrediction = {
+ order = 9,
+ type = "toggle",
+ name = L["Heal Prediction"],
+ desc = L["Show an incoming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."]
+ },
+ hideonnpc = {
+ order = 10,
+ type = "toggle",
+ name = L["Text Toggle On NPC"],
+ desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
+ get = function(info) return E.db.unitframe.units.focus.power.hideonnpc end,
+ set = function(info, value) E.db.unitframe.units.focus.power.hideonnpc = value UF:CreateAndUpdateUF("focus") end
+ },
+ threatStyle = {
+ order = 11,
+ type = "select",
+ name = L["Threat Display Mode"],
+ values = threatValues
+ },
+ smartAuraPosition = {
+ order = 12,
+ type = "select",
+ name = L["Smart Aura Position"],
+ desc = L["Will show Buffs in the Debuff position when there are no Debuffs active, or vice versa."],
+ values = smartAuraPositionValues
+ },
+ orientation = {
+ order = 13,
+ type = "select",
+ name = L["Frame Orientation"],
+ desc = L["Set the orientation of the UnitFrame."],
+ values = orientationValues
+ },
+ colorOverride = {
+ order = 14,
+ type = "select",
+ name = L["Class Color Override"],
+ desc = L["Override the default class color setting."],
+ values = colorOverrideValues
+ },
+ disableMouseoverGlow = {
+ order = 15,
+ type = "toggle",
+ name = L["Block Mouseover Glow"],
+ desc = L["Forces Mouseover Glow to be disabled for these frames"]
+ },
+ disableTargetGlow = {
+ order = 16,
+ type = "toggle",
+ name = L["Block Target Glow"],
+ desc = L["Forces Target Glow to be disabled for these frames"]
+ }
+ }
+ },
+ customText = GetOptionsTable_CustomText(UF.CreateAndUpdateUF, "focus"),
+ health = GetOptionsTable_Health(false, UF.CreateAndUpdateUF, "focus"),
+ infoPanel = GetOptionsTable_InformationPanel(UF.CreateAndUpdateUF, "focus"),
+ power = GetOptionsTable_Power(nil, UF.CreateAndUpdateUF, "focus"),
+ name = GetOptionsTable_Name(UF.CreateAndUpdateUF, "focus"),
+ portrait = GetOptionsTable_Portrait(UF.CreateAndUpdateUF, "focus"),
+ buffs = GetOptionsTable_Auras(false, "buffs", false, UF.CreateAndUpdateUF, "focus"),
+ debuffs = GetOptionsTable_Auras(false, "debuffs", false, UF.CreateAndUpdateUF, "focus"),
+ castbar = GetOptionsTable_Castbar(false, UF.CreateAndUpdateUF, "focus"),
+ aurabar = GetOptionsTable_AuraBars(false, UF.CreateAndUpdateUF, "focus"),
+ raidicon = GetOptionsTable_RaidIcon(UF.CreateAndUpdateUF, "focus"),
+ GPSArrow = GetOptionsTableForNonGroup_GPS("focus"),
+ }
+}--]]
+
+--[[E.Options.args.unitframe.args.focustarget = {
+ order = 700,
+ type = "group",
+ name = L["FocusTarget Frame"],
+ childGroups = "tab",
+ get = function(info) return E.db.unitframe.units.focustarget[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.focustarget[ info[getn(info)] ] = value UF:CreateAndUpdateUF("focustarget") end,
+ disabled = function() return not E.UnitFrames end,
+ args = {
+ generalGroup = {
+ order = 1,
+ type = "group",
+ name = L["General"],
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["General"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"],
+ width = "full"
+ },
+ copyFrom = {
+ order = 3,
+ type = "select",
+ name = L["Copy From"],
+ desc = L["Select a unit to copy settings from."],
+ values = UF.units,
+ set = function(info, value) UF:MergeUnitSettings(value, "focustarget") end
+ },
+ resetSettings = {
+ order = 4,
+ type = "execute",
+ name = L["Restore Defaults"],
+ func = function(info) E:StaticPopup_Show("RESET_UF_UNIT", L["FocusTarget Frame"], nil, {unit="focustarget", mover="FocusTarget Frame"}) end
+ },
+ showAuras = {
+ order = 5,
+ type = "execute",
+ name = L["Show Auras"],
+ func = function()
+ local frame = ElvUF_FocusTarget
+ if frame.forceShowAuras then
+ frame.forceShowAuras = nil
+ else
+ frame.forceShowAuras = true
+ end
+ UF:CreateAndUpdateUF("focustarget")
+ end
+ },
+ width = {
+ order = 6,
+ type = "range",
+ name = L["Width"],
+ min = 50, max = 1000, step = 1
+ },
+ height = {
+ order = 7,
+ type = "range",
+ name = L["Height"],
+ min = 10, max = 500, step = 1
+ },
+ rangeCheck = {
+ order = 8,
+ type = "toggle",
+ name = L["Range Check"],
+ desc = L["Check if you are in range to cast spells on this specific unit."]
+ },
+ hideonnpc = {
+ order = 9,
+ type = "toggle",
+ name = L["Text Toggle On NPC"],
+ desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
+ get = function(info) return E.db.unitframe.units.focustarget.power.hideonnpc end,
+ set = function(info, value) E.db.unitframe.units.focustarget.power.hideonnpc = value UF:CreateAndUpdateUF("focustarget") end
+ },
+ threatStyle = {
+ order = 10,
+ type = "select",
+ name = L["Threat Display Mode"],
+ values = threatValues
+ },
+ smartAuraPosition = {
+ order = 11,
+ type = "select",
+ name = L["Smart Aura Position"],
+ desc = L["Will show Buffs in the Debuff position when there are no Debuffs active, or vice versa."],
+ values = smartAuraPositionValues
+ },
+ orientation = {
+ order = 12,
+ type = "select",
+ name = L["Frame Orientation"],
+ desc = L["Set the orientation of the UnitFrame."],
+ values = orientationValues
+ },
+ colorOverride = {
+ order = 13,
+ type = "select",
+ name = L["Class Color Override"],
+ desc = L["Override the default class color setting."],
+ values = colorOverrideValues
+ },
+ spacer = {
+ order = 14,
+ type = "description",
+ name = ""
+ },
+ disableMouseoverGlow = {
+ order = 15,
+ type = "toggle",
+ name = L["Block Mouseover Glow"],
+ desc = L["Forces Mouseover Glow to be disabled for these frames"]
+ },
+ disableTargetGlow = {
+ order = 16,
+ type = "toggle",
+ name = L["Block Target Glow"],
+ desc = L["Forces Target Glow to be disabled for these frames"]
+ }
+ }
+ },
+ customText = GetOptionsTable_CustomText(UF.CreateAndUpdateUF, "focustarget"),
+ health = GetOptionsTable_Health(false, UF.CreateAndUpdateUF, "focustarget"),
+ infoPanel = GetOptionsTable_InformationPanel(UF.CreateAndUpdateUF, "focustarget"),
+ power = GetOptionsTable_Power(false, UF.CreateAndUpdateUF, "focustarget"),
+ name = GetOptionsTable_Name(UF.CreateAndUpdateUF, "focustarget"),
+ portrait = GetOptionsTable_Portrait(UF.CreateAndUpdateUF, "focustarget"),
+ buffs = GetOptionsTable_Auras(false, "buffs", false, UF.CreateAndUpdateUF, "focustarget"),
+ debuffs = GetOptionsTable_Auras(false, "debuffs", false, UF.CreateAndUpdateUF, "focustarget"),
+ raidicon = GetOptionsTable_RaidIcon(UF.CreateAndUpdateUF, "focustarget"),
+ }
+}--]]
+
+E.Options.args.unitframe.args.pet = {
+ order = 800,
+ type = "group",
+ name = L["Pet Frame"],
+ childGroups = "tab",
+ get = function(info) return E.db.unitframe.units.pet[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.pet[ info[getn(info)] ] = value UF:CreateAndUpdateUF("pet") end,
+ disabled = function() return not E.UnitFrames end,
+ args = {
+ generalGroup = {
+ order = 1,
+ type = "group",
+ name = L["General"],
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["General"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"],
+ width = "full"
+ },
+ copyFrom = {
+ order = 3,
+ type = "select",
+ name = L["Copy From"],
+ desc = L["Select a unit to copy settings from."],
+ values = UF.units,
+ set = function(info, value) UF:MergeUnitSettings(value, "pet") end
+ },
+ resetSettings = {
+ order = 4,
+ type = "execute",
+ name = L["Restore Defaults"],
+ func = function(info) E:StaticPopup_Show("RESET_UF_UNIT", L["Pet Frame"], nil, {unit="pet", mover="Pet Frame"}) end
},
showAuras = {
order = 5,
@@ -3445,96 +4678,92 @@ E.Options.args.unitframe.args.pet = {
func = function()
local frame = ElvUF_Pet
if frame.forceShowAuras then
- frame.forceShowAuras = nil;
+ frame.forceShowAuras = nil
else
- frame.forceShowAuras = true;
+ frame.forceShowAuras = true
end
-
UF:CreateAndUpdateUF("pet")
- end,
+ end
},
width = {
order = 6,
- name = L["Width"],
type = "range",
- min = 50, max = 500, step = 1,
+ name = L["Width"],
+ min = 50, max = 1000, step = 1
},
height = {
order = 7,
- name = L["Height"],
type = "range",
- min = 10, max = 250, step = 1,
+ name = L["Height"],
+ min = 10, max = 500, step = 1
},
rangeCheck = {
order = 8,
- name = L["Range Check"],
- desc = L["Check if you are in range to cast spells on this specific unit."],
type = "toggle",
+ name = L["Range Check"],
+ desc = L["Check if you are in range to cast spells on this specific unit."]
},
healPrediction = {
order = 9,
- name = L["Heal Prediction"],
- desc = L["Show an incoming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
type = "toggle",
+ name = L["Heal Prediction"],
+ desc = L["Show an incoming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."]
},
hideonnpc = {
- type = "toggle",
order = 10,
+ type = "toggle",
name = L["Text Toggle On NPC"],
desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
- get = function(info) return E.db.unitframe.units["pet"]["power"].hideonnpc end,
- set = function(info, value) E.db.unitframe.units["pet"]["power"].hideonnpc = value; UF:CreateAndUpdateUF("pet") end,
+ get = function(info) return E.db.unitframe.units.pet.power.hideonnpc end,
+ set = function(info, value) E.db.unitframe.units.pet.power.hideonnpc = value UF:CreateAndUpdateUF("pet") end
},
threatStyle = {
- type = "select",
order = 11,
+ type = "select",
name = L["Threat Display Mode"],
- values = threatValues,
+ values = threatValues
},
smartAuraPosition = {
order = 12,
type = "select",
name = L["Smart Aura Position"],
desc = L["Will show Buffs in the Debuff position when there are no Debuffs active, or vice versa."],
- values = {
- ["DISABLED"] = DISABLE,
- ["BUFFS_ON_DEBUFFS"] = L["Position Buffs on Debuffs"],
- ["DEBUFFS_ON_BUFFS"] = L["Position Debuffs on Buffs"],
- ["FLUID_BUFFS_ON_DEBUFFS"] = L["Fluid Position Buffs on Debuffs"],
- ["FLUID_DEBUFFS_ON_BUFFS"] = L["Fluid Position Debuffs on Buffs"],
- },
+ values = smartAuraPositionValues
},
orientation = {
order = 13,
type = "select",
name = L["Frame Orientation"],
desc = L["Set the orientation of the UnitFrame."],
- values = {
- --["AUTOMATIC"] = L["Automatic"], not sure if i will use this yet
- ["LEFT"] = L["Left"],
- ["MIDDLE"] = L["Middle"],
- ["RIGHT"] = L["Right"],
- },
+ values = orientationValues
},
colorOverride = {
order = 14,
+ type = "select",
name = L["Class Color Override"],
desc = L["Override the default class color setting."],
- type = "select",
- values = {
- ["USE_DEFAULT"] = L["Use Default"],
- ["FORCE_ON"] = L["Force On"],
- ["FORCE_OFF"] = L["Force Off"],
- },
+ values = colorOverrideValues
},
- },
+ disableMouseoverGlow = {
+ order = 15,
+ type = "toggle",
+ name = L["Block Mouseover Glow"],
+ desc = L["Forces Mouseover Glow to be disabled for these frames"]
+ },
+ disableTargetGlow = {
+ order = 16,
+ type = "toggle",
+ name = L["Block Target Glow"],
+ desc = L["Forces Target Glow to be disabled for these frames"]
+ }
+ }
},
buffIndicator = {
order = 600,
type = "group",
name = L["Buff Indicator"],
- get = function(info) return E.db.unitframe.units["pet"]["buffIndicator"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["pet"]["buffIndicator"][ info[getn(info)] ] = value; UF:CreateAndUpdateUF("pet") end,
+ get = function(info) return E.db.unitframe.units.pet.buffIndicator[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.pet.buffIndicator[ info[getn(info)] ] = value UF:CreateAndUpdateUF("pet") end,
args = {
header = {
order = 1,
@@ -3542,24 +4771,24 @@ E.Options.args.unitframe.args.pet = {
name = L["Buff Indicator"],
},
enable = {
- type = "toggle",
- name = L["Enable"],
order = 2,
+ type = "toggle",
+ name = L["Enable"]
},
size = {
+ order = 3,
type = "range",
name = L["Size"],
desc = L["Size of the indicator icon."],
- order = 3,
- min = 4, max = 50, step = 1,
+ min = 4, max = 50, step = 1
},
fontSize = {
+ order = 4,
type = "range",
name = FONT_SIZE,
- order = 4,
- min = 7, max = 22, step = 1,
- },
- },
+ min = 7, max = 22, step = 1
+ }
+ }
},
customText = GetOptionsTable_CustomText(UF.CreateAndUpdateUF, "pet"),
health = GetOptionsTable_Health(false, UF.CreateAndUpdateUF, "pet"),
@@ -3567,51 +4796,82 @@ E.Options.args.unitframe.args.pet = {
power = GetOptionsTable_Power(false, UF.CreateAndUpdateUF, "pet"),
name = GetOptionsTable_Name(UF.CreateAndUpdateUF, "pet"),
portrait = GetOptionsTable_Portrait(UF.CreateAndUpdateUF, "pet"),
- --buffs = GetOptionsTable_Auras(true, "buffs", false, UF.CreateAndUpdateUF, "pet"),
- --debuffs = GetOptionsTable_Auras(true, "debuffs", false, UF.CreateAndUpdateUF, "pet"),
- --castbar = GetOptionsTable_Castbar(UF.CreateAndUpdateUF, "pet"),
- },
-}
-
---Pet Target
-E.Options.args.unitframe.args.pettarget = {
- name = L["PetTarget Frame"],
- type = "group",
- order = 900,
- childGroups = "tab",
- get = function(info) return E.db.unitframe.units["pettarget"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["pettarget"][ info[getn(info)] ] = value; UF:CreateAndUpdateUF("pettarget") end,
- disabled = function() return not E.UnitFrames; end,
- args = {
- generalGroup = {
- order = 1,
+ buffs = GetOptionsTable_Auras(true, "buffs", false, UF.CreateAndUpdateUF, "pet"),
+ debuffs = GetOptionsTable_Auras(true, "debuffs", false, UF.CreateAndUpdateUF, "pet"),
+ castbar = GetOptionsTable_Castbar(false, UF.CreateAndUpdateUF, "pet"),
+ aurabar = GetOptionsTable_AuraBars(true, UF.CreateAndUpdateUF, "pet"),
+ happiness = {
+ order = 700,
type = "group",
- name = GENERAL,
+ name = HAPPINESS,
+ get = function(info) return E.db.unitframe.units.pet.happiness[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.pet.happiness[ info[getn(info)] ] = value UF:CreateAndUpdateUF("pet") end,
+ disabled = E.myclass ~= "HUNTER",
args = {
header = {
order = 1,
type = "header",
- name = GENERAL,
+ name = HAPPINESS
},
enable = {
- type = "toggle",
order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ autoHide = {
+ order = 3,
+ type = "toggle",
+ name = L["Auto-Hide"]
+ },
+ width = {
+ order = 4,
+ type = "range",
+ name = L["Size"],
+ min = 5, max = 40, step = 1
+ }
+ }
+ }
+ }
+}
+
+E.Options.args.unitframe.args.pettarget = {
+ order = 900,
+ type = "group",
+ name = L["PetTarget Frame"],
+ childGroups = "tab",
+ get = function(info) return E.db.unitframe.units.pettarget[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.pettarget[ info[getn(info)] ] = value UF:CreateAndUpdateUF("pettarget") end,
+ disabled = function() return not E.UnitFrames end,
+ args = {
+ generalGroup = {
+ order = 1,
+ type = "group",
+ name = L["General"],
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["General"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
name = L["Enable"],
- width = "full",
+ width = "full"
},
copyFrom = {
- type = "select",
order = 3,
+ type = "select",
name = L["Copy From"],
desc = L["Select a unit to copy settings from."],
- values = UF["units"],
- set = function(info, value) UF:MergeUnitSettings(value, "pettarget"); end,
+ values = UF.units,
+ set = function(info, value) UF:MergeUnitSettings(value, "pettarget") end
},
resetSettings = {
- type = "execute",
order = 4,
+ type = "execute",
name = L["Restore Defaults"],
- func = function(info, value) UF:ResetUnitSettings("pettarget"); E:ResetMovers(L["PetTarget Frame"]) end,
+ func = function(info) E:StaticPopup_Show("RESET_UF_UNIT", L["PetTarget Frame"], nil, {unit="pettarget", mover="PetTarget Frame"}) end
},
showAuras = {
order = 5,
@@ -3620,83 +4880,85 @@ E.Options.args.unitframe.args.pettarget = {
func = function()
local frame = ElvUF_PetTarget
if frame.forceShowAuras then
- frame.forceShowAuras = nil;
+ frame.forceShowAuras = nil
else
- frame.forceShowAuras = true;
+ frame.forceShowAuras = true
end
UF:CreateAndUpdateUF("pettarget")
- end,
+ end
},
width = {
order = 6,
- name = L["Width"],
type = "range",
- min = 50, max = 500, step = 1,
+ name = L["Width"],
+ min = 50, max = 1000, step = 1
},
height = {
order = 7,
- name = L["Height"],
type = "range",
- min = 10, max = 250, step = 1,
+ name = L["Height"],
+ min = 10, max = 500, step = 1
},
rangeCheck = {
order = 8,
- name = L["Range Check"],
- desc = L["Check if you are in range to cast spells on this specific unit."],
type = "toggle",
+ name = L["Range Check"],
+ desc = L["Check if you are in range to cast spells on this specific unit."]
},
hideonnpc = {
- type = "toggle",
order = 9,
+ type = "toggle",
name = L["Text Toggle On NPC"],
desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
- get = function(info) return E.db.unitframe.units["pettarget"]["power"].hideonnpc end,
- set = function(info, value) E.db.unitframe.units["pettarget"]["power"].hideonnpc = value; UF:CreateAndUpdateUF("pettarget") end,
+ get = function(info) return E.db.unitframe.units.pettarget.power.hideonnpc end,
+ set = function(info, value) E.db.unitframe.units.pettarget.power.hideonnpc = value UF:CreateAndUpdateUF("pettarget") end
},
threatStyle = {
- type = "select",
order = 10,
+ type = "select",
name = L["Threat Display Mode"],
- values = threatValues,
+ values = threatValues
},
smartAuraPosition = {
order = 11,
type = "select",
name = L["Smart Aura Position"],
desc = L["Will show Buffs in the Debuff position when there are no Debuffs active, or vice versa."],
- values = {
- ["DISABLED"] = DISABLE,
- ["BUFFS_ON_DEBUFFS"] = L["Position Buffs on Debuffs"],
- ["DEBUFFS_ON_BUFFS"] = L["Position Debuffs on Buffs"],
- ["FLUID_BUFFS_ON_DEBUFFS"] = L["Fluid Position Buffs on Debuffs"],
- ["FLUID_DEBUFFS_ON_BUFFS"] = L["Fluid Position Debuffs on Buffs"],
- },
+ values = smartAuraPositionValues
},
orientation = {
order = 12,
type = "select",
name = L["Frame Orientation"],
desc = L["Set the orientation of the UnitFrame."],
- values = {
- --["AUTOMATIC"] = L["Automatic"], not sure if i will use this yet
- ["LEFT"] = L["Left"],
- ["MIDDLE"] = L["Middle"],
- ["RIGHT"] = L["Right"],
- },
+ values = orientationValues
},
colorOverride = {
order = 13,
+ type = "select",
name = L["Class Color Override"],
desc = L["Override the default class color setting."],
- type = "select",
- values = {
- ["USE_DEFAULT"] = L["Use Default"],
- ["FORCE_ON"] = L["Force On"],
- ["FORCE_OFF"] = L["Force Off"],
- },
+ values = colorOverrideValues
},
- },
+ spacer = {
+ order = 14,
+ type = "description",
+ name = ""
+ },
+ disableMouseoverGlow = {
+ order = 15,
+ type = "toggle",
+ name = L["Block Mouseover Glow"],
+ desc = L["Forces Mouseover Glow to be disabled for these frames"]
+ },
+ disableTargetGlow = {
+ order = 16,
+ type = "toggle",
+ name = L["Block Target Glow"],
+ desc = L["Forces Target Glow to be disabled for these frames"]
+ }
+ }
},
customText = GetOptionsTable_CustomText(UF.CreateAndUpdateUF, "pettarget"),
health = GetOptionsTable_Health(false, UF.CreateAndUpdateUF, "pettarget"),
@@ -3704,20 +4966,19 @@ E.Options.args.unitframe.args.pettarget = {
power = GetOptionsTable_Power(false, UF.CreateAndUpdateUF, "pettarget"),
name = GetOptionsTable_Name(UF.CreateAndUpdateUF, "pettarget"),
portrait = GetOptionsTable_Portrait(UF.CreateAndUpdateUF, "pettarget"),
- --buffs = GetOptionsTable_Auras(false, "buffs", false, UF.CreateAndUpdateUF, "pettarget"),
- --debuffs = GetOptionsTable_Auras(false, "debuffs", false, UF.CreateAndUpdateUF, "pettarget"),
- },
+ buffs = GetOptionsTable_Auras(false, "buffs", false, UF.CreateAndUpdateUF, "pettarget"),
+ debuffs = GetOptionsTable_Auras(false, "debuffs", false, UF.CreateAndUpdateUF, "pettarget")
+ }
}
---Party Frames
E.Options.args.unitframe.args.party = {
- name = L["Party Frames"],
+ order = 1200,
type = "group",
- order = 1100,
+ name = L["Party Frames"],
childGroups = "tab",
- get = function(info) return E.db.unitframe.units["party"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["party"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("party") end,
- disabled = function() return not E.UnitFrames; end,
+ get = function(info) return E.db.unitframe.units.party[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.party[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("party") end,
+ disabled = function() return not E.UnitFrames end,
args = {
configureToggle = {
order = 1,
@@ -3725,186 +4986,182 @@ E.Options.args.unitframe.args.party = {
name = L["Display Frames"],
func = function()
UF:HeaderConfig(ElvUF_Party, ElvUF_Party.forceShow ~= true or nil)
- end,
+ end
},
resetSettings = {
- type = "execute",
order = 2,
+ type = "execute",
name = L["Restore Defaults"],
- func = function(info, value) UF:ResetUnitSettings("party"); E:ResetMovers(L["Party Frames"]) end,
+ func = function(info) E:StaticPopup_Show("RESET_UF_UNIT", L["Party Frames"], nil, {unit="party", mover="Party Frames"}) end
},
copyFrom = {
- type = "select",
order = 3,
+ type = "select",
name = L["Copy From"],
desc = L["Select a unit to copy settings from."],
values = {
["raid"] = L["Raid Frames"],
- ["raid40"] = L["Raid40 Frames"],
+ ["raid40"] = L["Raid40 Frames"]
},
- set = function(info, value) UF:MergeUnitSettings(value, "party", true); end,
+ set = function(info, value) UF:MergeUnitSettings(value, "party", true) end
},
- customText = GetOptionsTable_CustomText(UF.CreateAndUpdateHeaderGroup, "party", nil, 4),
+ customText = GetOptionsTable_CustomText(UF.CreateAndUpdateHeaderGroup, "party"),
generalGroup = {
order = 5,
type = "group",
- name = GENERAL,
+ name = L["General"],
args = {
header = {
order = 1,
type = "header",
- name = GENERAL,
+ name = L["General"]
},
enable = {
- type = "toggle",
order = 2,
- name = L["Enable"],
+ type = "toggle",
+ name = L["Enable"]
},
hideonnpc = {
- type = "toggle",
order = 3,
+ type = "toggle",
name = L["Text Toggle On NPC"],
desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
- get = function(info) return E.db.unitframe.units["party"]["power"].hideonnpc end,
- set = function(info, value) E.db.unitframe.units["party"]["power"].hideonnpc = value; UF:CreateAndUpdateHeaderGroup("party"); end,
+ get = function(info) return E.db.unitframe.units.party.power.hideonnpc end,
+ set = function(info, value) E.db.unitframe.units.party.power.hideonnpc = value UF:CreateAndUpdateHeaderGroup("party") end
},
rangeCheck = {
order = 4,
- name = L["Range Check"],
- desc = L["Check if you are in range to cast spells on this specific unit."],
type = "toggle",
+ name = L["Range Check"],
+ desc = L["Check if you are in range to cast spells on this specific unit."]
},
healPrediction = {
order = 5,
- name = L["Heal Prediction"],
- desc = L["Show an incoming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
type = "toggle",
+ name = L["Heal Prediction"],
+ desc = L["Show an incoming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."]
},
threatStyle = {
- type = "select",
order = 6,
+ type = "select",
name = L["Threat Display Mode"],
- values = threatValues,
+ values = threatValues
},
colorOverride = {
order = 7,
+ type = "select",
name = L["Class Color Override"],
desc = L["Override the default class color setting."],
- type = "select",
- values = {
- ["USE_DEFAULT"] = L["Use Default"],
- ["FORCE_ON"] = L["Force On"],
- ["FORCE_OFF"] = L["Force Off"],
- },
+ values = colorOverrideValues
},
orientation = {
order = 8,
type = "select",
name = L["Frame Orientation"],
desc = L["Set the orientation of the UnitFrame."],
- values = {
- --["AUTOMATIC"] = L["Automatic"], not sure if i will use this yet
- ["LEFT"] = L["Left"],
- ["MIDDLE"] = L["Middle"],
- ["RIGHT"] = L["Right"],
- },
+ values = orientationValues
},
- targetGlow = {
+ disableMouseoverGlow = {
order = 9,
type = "toggle",
- name = L["Target Glow"],
+ name = L["Block Mouseover Glow"],
+ desc = L["Forces Mouseover Glow to be disabled for these frames"]
+ },
+ disableTargetGlow = {
+ order = 10,
+ type = "toggle",
+ name = L["Block Target Glow"],
+ desc = L["Forces Target Glow to be disabled for these frames"]
},
positionsGroup = {
order = 100,
name = L["Size and Positions"],
type = "group",
guiInline = true,
- set = function(info, value) E.db.unitframe.units["party"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("party", nil, nil, true) end,
+ set = function(info, value) E.db.unitframe.units.party[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("party", nil, nil, true) end,
args = {
width = {
order = 1,
- name = L["Width"],
type = "range",
+ name = L["Width"],
min = 10, max = 500, step = 1,
- set = function(info, value) E.db.unitframe.units["party"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("party") end,
+ set = function(info, value) E.db.unitframe.units.party[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("party") end
},
height = {
order = 2,
- name = L["Height"],
type = "range",
+ name = L["Height"],
min = 10, max = 500, step = 1,
- set = function(info, value) E.db.unitframe.units["party"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("party") end,
+ set = function(info, value) E.db.unitframe.units.party[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("party") end
},
spacer = {
order = 3,
- name = "",
type = "description",
- width = "full",
+ name = "",
+ width = "full"
},
growthDirection = {
order = 4,
+ type = "select",
name = L["Growth Direction"],
desc = L["Growth direction from the first unitframe."],
- type = "select",
- values = {
- DOWN_RIGHT = format(L["%s and then %s"], L["Down"], L["Right"]),
- DOWN_LEFT = format(L["%s and then %s"], L["Down"], L["Left"]),
- UP_RIGHT = format(L["%s and then %s"], L["Up"], L["Right"]),
- UP_LEFT = format(L["%s and then %s"], L["Up"], L["Left"]),
- RIGHT_DOWN = format(L["%s and then %s"], L["Right"], L["Down"]),
- RIGHT_UP = format(L["%s and then %s"], L["Right"], L["Up"]),
- LEFT_DOWN = format(L["%s and then %s"], L["Left"], L["Down"]),
- LEFT_UP = format(L["%s and then %s"], L["Left"], L["Up"]),
- },
+ values = growthDirectionValues
},
numGroups = {
- order = 7,
+ order = 5,
type = "range",
name = L["Number of Groups"],
min = 1, max = 8, step = 1,
set = function(info, value)
- E.db.unitframe.units["party"][ info[getn(info)] ] = value;
+ E.db.unitframe.units.party[ info[getn(info)] ] = value
UF:CreateAndUpdateHeaderGroup("party")
if ElvUF_Party.isForced then
UF:HeaderConfig(ElvUF_Party)
UF:HeaderConfig(ElvUF_Party, true)
end
- end,
+ end
},
groupsPerRowCol = {
- order = 8,
+ order = 6,
type = "range",
name = L["Groups Per Row/Column"],
min = 1, max = 8, step = 1,
set = function(info, value)
- E.db.unitframe.units["party"][ info[getn(info)] ] = value;
+ E.db.unitframe.units.party[ info[getn(info)] ] = value
UF:CreateAndUpdateHeaderGroup("party")
if ElvUF_Party.isForced then
UF:HeaderConfig(ElvUF_Party)
UF:HeaderConfig(ElvUF_Party, true)
end
- end,
+ end
},
horizontalSpacing = {
- order = 9,
+ order = 7,
type = "range",
name = L["Horizontal Spacing"],
- min = -1, max = 50, step = 1,
+ min = -1, max = 50, step = 1
},
verticalSpacing = {
- order = 10,
+ order = 8,
type = "range",
name = L["Vertical Spacing"],
- min = -1, max = 50, step = 1,
+ min = -1, max = 50, step = 1
},
- },
+ groupSpacing = {
+ order = 9,
+ type = "range",
+ name = L["Group Spacing"],
+ desc = L["Additional spacing between each individual group."],
+ min = 0, softMax = 50, step = 1
+ }
+ }
},
visibilityGroup = {
order = 200,
- name = L["Visibility"],
type = "group",
+ name = L["Visibility"],
guiInline = true,
- set = function(info, value) E.db.unitframe.units["party"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("party", nil, nil, true) end,
+ set = function(info, value) E.db.unitframe.units.party[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("party", nil, nil, true) end,
args = {
showPlayer = {
order = 1,
@@ -3917,38 +5174,38 @@ E.Options.args.unitframe.args.party = {
type = "input",
name = L["Visibility"],
desc = L["The following macro must be true in order for the group to be shown, in addition to any filter that may already be set."],
- width = "full",
- },
- },
+ width = "full"
+ }
+ }
},
sortingGroup = {
order = 300,
type = "group",
guiInline = true,
name = L["Grouping & Sorting"],
- set = function(info, value) E.db.unitframe.units["party"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("party", nil, nil, true) end,
+ set = function(info, value) E.db.unitframe.units.party[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("party", nil, nil, true) end,
args = {
groupBy = {
order = 1,
+ type = "select",
name = L["Group By"],
desc = L["Set the order that the group will sort."],
- type = "select",
values = {
["CLASS"] = CLASS,
["NAME"] = NAME,
["MTMA"] = L["Main Tanks / Main Assist"],
- ["GROUP"] = GROUP,
- },
+ ["GROUP"] = GROUP
+ }
},
sortDir = {
order = 2,
+ type = "select",
name = L["Sort Direction"],
desc = L["Defines the sort order of the selected sort method."],
- type = "select",
values = {
["ASC"] = L["Ascending"],
["DESC"] = L["Descending"]
- },
+ }
},
spacer = {
order = 3,
@@ -3958,361 +5215,308 @@ E.Options.args.unitframe.args.party = {
},
raidWideSorting = {
order = 4,
- name = L["Raid-Wide Sorting"],
- desc = L["Enabling this allows raid-wide sorting however you will not be able to distinguish between groups."],
type = "toggle",
+ name = L["Raid-Wide Sorting"],
+ desc = L["Enabling this allows raid-wide sorting however you will not be able to distinguish between groups."]
},
invertGroupingOrder = {
order = 5,
+ type = "toggle",
name = L["Invert Grouping Order"],
desc = L["Enabling this inverts the grouping order when the raid is not full, this will reverse the direction it starts from."],
- disabled = function() return not E.db.unitframe.units["party"].raidWideSorting end,
- type = "toggle",
+ disabled = function() return not E.db.unitframe.units.party.raidWideSorting end
},
startFromCenter = {
order = 6,
+ type = "toggle",
name = L["Start Near Center"],
desc = L["The initial group will start near the center and grow out."],
- disabled = function() return not E.db.unitframe.units["party"].raidWideSorting end,
- type = "toggle",
- },
- },
- },
- },
+ disabled = function() return not E.db.unitframe.units.party.raidWideSorting end
+ }
+ }
+ }
+ }
},
buffIndicator = {
- order = 701,
+ order = 600,
type = "group",
name = L["Buff Indicator"],
- get = function(info) return E.db.unitframe.units["party"]["buffIndicator"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["party"]["buffIndicator"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("party") end,
+ get = function(info) return E.db.unitframe.units.party.buffIndicator[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.party.buffIndicator[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("party") end,
args = {
header = {
order = 1,
type = "header",
- name = L["Buff Indicator"],
+ name = L["Buff Indicator"]
},
enable = {
- type = "toggle",
- name = L["Enable"],
order = 2,
+ type = "toggle",
+ name = L["Enable"]
},
size = {
+ order = 3,
type = "range",
name = L["Size"],
desc = L["Size of the indicator icon."],
- order = 3,
- min = 4, max = 50, step = 1,
+ min = 4, max = 50, step = 1
},
fontSize = {
+ order = 4,
type = "range",
name = FONT_SIZE,
- order = 4,
- min = 7, max = 22, step = 1,
+ min = 7, max = 22, step = 1
},
profileSpecific = {
+ order = 5,
type = "toggle",
name = L["Profile Specific"],
- desc = L["Use the profile specific filter 'Buff Indicator (Profile)' instead of the global filter 'Buff Indicator'."],
- order = 5,
+ desc = L["Use the profile specific filter 'Buff Indicator (Profile)' instead of the global filter 'Buff Indicator'."]
},
configureButton = {
+ order = 6,
type = "execute",
name = L["Configure Auras"],
func = function()
- if E.db.unitframe.units["party"]["buffIndicator"].profileSpecific then
+ if E.db.unitframe.units.party.buffIndicator.profileSpecific then
E:SetToFilterConfig("Buff Indicator (Profile)")
else
E:SetToFilterConfig("Buff Indicator")
end
- end,
- order = 6
- },
- },
- },
- roleIcon = {
- order = 702,
- type = "group",
- name = L["Role Icon"],
- get = function(info) return E.db.unitframe.units["party"]["roleIcon"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["party"]["roleIcon"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("party") end,
- args = {
- header = {
- order = 1,
- type = "header",
- name = L["Role Icon"],
- },
- enable = {
- type = "toggle",
- name = L["Enable"],
- order = 2,
- },
- position = {
- type = "select",
- order = 3,
- name = L["Position"],
- values = positionValues,
- },
- attachTo = {
- type = "select",
- order = 4,
- name = L["Attach To"],
- values = {
- ["Health"] = HEALTH,
- ["Power"] = L["Power"],
- ["InfoPanel"] = L["Information Panel"],
- ["Frame"] = L["Frame"],
- },
- },
- xOffset = {
- order = 5,
- type = "range",
- name = L["xOffset"],
- min = -300, max = 300, step = 1,
- },
- yOffset = {
- order = 6,
- type = "range",
- name = L["yOffset"],
- min = -300, max = 300, step = 1,
- },
- size = {
- type = "range",
- order = 7,
- name = L["Size"],
- min = 4, max = 100, step = 1,
- },
- },
+ end
+ }
+ }
},
raidRoleIcons = {
- order = 703,
+ order = 750,
type = "group",
name = L["RL / ML Icons"],
- get = function(info) return E.db.unitframe.units["party"]["raidRoleIcons"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["party"]["raidRoleIcons"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("party") end,
+ get = function(info) return E.db.unitframe.units.party.raidRoleIcons[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.party.raidRoleIcons[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("party") end,
args = {
header = {
order = 1,
type = "header",
- name = L["RL / ML Icons"],
+ name = L["RL / ML Icons"]
},
enable = {
- type = "toggle",
- name = L["Enable"],
order = 2,
+ type = "toggle",
+ name = L["Enable"]
},
position = {
- type = "select",
order = 3,
+ type = "select",
name = L["Position"],
values = {
["TOPLEFT"] = "TOPLEFT",
- ["TOPRIGHT"] = "TOPRIGHT",
- },
- },
- },
+ ["TOPRIGHT"] = "TOPRIGHT"
+ }
+ }
+ }
},
health = GetOptionsTable_Health(true, UF.CreateAndUpdateHeaderGroup, "party"),
- infoPanel = GetOptionsTable_InformationPanel(UF.CreateAndUpdateHeaderGroup, "party"),
power = GetOptionsTable_Power(false, UF.CreateAndUpdateHeaderGroup, "party"),
+ infoPanel = GetOptionsTable_InformationPanel(UF.CreateAndUpdateHeaderGroup, "party"),
name = GetOptionsTable_Name(UF.CreateAndUpdateHeaderGroup, "party"),
portrait = GetOptionsTable_Portrait(UF.CreateAndUpdateHeaderGroup, "party"),
- --buffs = GetOptionsTable_Auras(true, "buffs", true, UF.CreateAndUpdateHeaderGroup, "party"),
- --debuffs = GetOptionsTable_Auras(true, "debuffs", true, UF.CreateAndUpdateHeaderGroup, "party"),
+ buffs = GetOptionsTable_Auras(true, "buffs", true, UF.CreateAndUpdateHeaderGroup, "party"),
+ debuffs = GetOptionsTable_Auras(true, "debuffs", true, UF.CreateAndUpdateHeaderGroup, "party"),
rdebuffs = GetOptionsTable_RaidDebuff(UF.CreateAndUpdateHeaderGroup, "party"),
+ castbar = GetOptionsTable_Castbar(false, UF.CreateAndUpdateHeaderGroup, "party", 5),
petsGroup = {
order = 850,
type = "group",
name = L["Party Pets"],
- get = function(info) return E.db.unitframe.units["party"]["petsGroup"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["party"]["petsGroup"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("party") end,
+ get = function(info) return E.db.unitframe.units.party.petsGroup[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.party.petsGroup[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("party") end,
args = {
header = {
order = 1,
type = "header",
- name = L["Party Pets"],
+ name = L["Party Pets"]
},
enable = {
- type = "toggle",
- name = L["Enable"],
order = 2,
+ type = "toggle",
+ name = L["Enable"]
},
width = {
order = 3,
- name = L["Width"],
type = "range",
- min = 10, max = 500, step = 1,
+ name = L["Width"],
+ min = 10, max = 500, step = 1
},
height = {
order = 4,
- name = L["Height"],
type = "range",
- min = 10, max = 250, step = 1,
+ name = L["Height"],
+ min = 10, max = 500, step = 1
},
anchorPoint = {
- type = "select",
order = 5,
+ type = "select",
name = L["Anchor Point"],
desc = L["What point to anchor to the frame you set to attach to."],
- values = petAnchors,
+ values = petAnchors
},
xOffset = {
order = 6,
type = "range",
name = L["xOffset"],
desc = L["An X offset (in pixels) to be used when anchoring new frames."],
- min = -500, max = 500, step = 1,
+ min = -500, max = 500, step = 1
},
yOffset = {
order = 7,
type = "range",
name = L["yOffset"],
desc = L["An Y offset (in pixels) to be used when anchoring new frames."],
- min = -500, max = 500, step = 1,
+ min = -500, max = 500, step = 1
},
name = {
order = 8,
type = "group",
- guiInline = true,
- get = function(info) return E.db.unitframe.units["party"]["petsGroup"]["name"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["party"]["petsGroup"]["name"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("party") end,
name = NAME,
+ guiInline = true,
+ get = function(info) return E.db.unitframe.units.party.petsGroup.name[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.party.petsGroup.name[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("party") end,
args = {
position = {
- type = "select",
order = 1,
+ type = "select",
name = L["Text Position"],
- values = positionValues,
+ values = positionValues
},
xOffset = {
order = 2,
type = "range",
name = L["Text xOffset"],
desc = L["Offset position for text."],
- min = -300, max = 300, step = 1,
+ min = -300, max = 300, step = 1
},
yOffset = {
order = 3,
type = "range",
name = L["Text yOffset"],
desc = L["Offset position for text."],
- min = -300, max = 300, step = 1,
+ min = -300, max = 300, step = 1
},
text_format = {
order = 100,
- name = L["Text Format"],
type = "input",
- width = "full",
+ name = L["Text Format"],
desc = L["TEXT_FORMAT_DESC"],
- },
- },
- },
- },
+ width = "full"
+ }
+ }
+ }
+ }
},
targetsGroup = {
order = 900,
type = "group",
name = L["Party Targets"],
- get = function(info) return E.db.unitframe.units["party"]["targetsGroup"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["party"]["targetsGroup"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("party") end,
+ get = function(info) return E.db.unitframe.units.party.targetsGroup[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.party.targetsGroup[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("party") end,
args = {
header = {
order = 1,
type = "header",
- name = L["Party Targets"],
+ name = L["Party Targets"]
},
enable = {
- type = "toggle",
- name = L["Enable"],
order = 2,
+ type = "toggle",
+ name = L["Enable"]
},
width = {
order = 3,
- name = L["Width"],
type = "range",
- min = 10, max = 500, step = 1,
+ name = L["Width"],
+ min = 10, max = 500, step = 1
},
height = {
order = 4,
- name = L["Height"],
type = "range",
- min = 10, max = 250, step = 1,
+ name = L["Height"],
+ min = 10, max = 500, step = 1
},
anchorPoint = {
- type = "select",
order = 5,
+ type = "select",
name = L["Anchor Point"],
desc = L["What point to anchor to the frame you set to attach to."],
- values = petAnchors,
+ values = petAnchors
},
xOffset = {
order = 6,
type = "range",
name = L["xOffset"],
desc = L["An X offset (in pixels) to be used when anchoring new frames."],
- min = -500, max = 500, step = 1,
+ min = -500, max = 500, step = 1
},
yOffset = {
order = 7,
type = "range",
name = L["yOffset"],
desc = L["An Y offset (in pixels) to be used when anchoring new frames."],
- min = -500, max = 500, step = 1,
+ min = -500, max = 500, step = 1
},
name = {
order = 8,
type = "group",
guiInline = true,
- get = function(info) return E.db.unitframe.units["party"]["targetsGroup"]["name"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["party"]["targetsGroup"]["name"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("party") end,
+ get = function(info) return E.db.unitframe.units.party.targetsGroup.name[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.party.targetsGroup.name[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("party") end,
name = NAME,
args = {
position = {
- type = "select",
order = 1,
+ type = "select",
name = L["Text Position"],
- values = positionValues,
+ values = positionValues
},
xOffset = {
order = 2,
type = "range",
name = L["Text xOffset"],
desc = L["Offset position for text."],
- min = -300, max = 300, step = 1,
+ min = -300, max = 300, step = 1
},
yOffset = {
order = 3,
type = "range",
name = L["Text yOffset"],
desc = L["Offset position for text."],
- min = -300, max = 300, step = 1,
+ min = -300, max = 300, step = 1
},
text_format = {
order = 100,
- name = L["Text Format"],
type = "input",
- width = "full",
+ name = L["Text Format"],
desc = L["TEXT_FORMAT_DESC"],
- },
- },
- },
- },
+ width = "full"
+ }
+ }
+ }
+ }
},
raidicon = GetOptionsTable_RaidIcon(UF.CreateAndUpdateHeaderGroup, "party"),
readycheckIcon = GetOptionsTable_ReadyCheckIcon(UF.CreateAndUpdateHeaderGroup, "party"),
- GPSArrow = GetOptionsTable_GPS("party"),
- },
+ resurrectIcon = GetOptionsTable_ResurrectIcon(UF.CreateAndUpdateHeaderGroup, "party"),
+ GPSArrow = GetOptionsTable_GPS("party")
+ }
}
---Raid Frames
E.Options.args.unitframe.args.raid = {
- name = L["Raid Frames"],
+ order = 1300,
type = "group",
- order = 1100,
+ name = L["Raid Frames"],
childGroups = "tab",
- get = function(info) return E.db.unitframe.units["raid"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["raid"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("raid") end,
- disabled = function() return not E.UnitFrames; end,
+ get = function(info) return E.db.unitframe.units.raid[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.raid[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid") end,
+ disabled = function() return not E.UnitFrames end,
args = {
configureToggle = {
order = 1,
@@ -4320,137 +5524,126 @@ E.Options.args.unitframe.args.raid = {
name = L["Display Frames"],
func = function()
UF:HeaderConfig(_G["ElvUF_Raid"], _G["ElvUF_Raid"].forceShow ~= true or nil)
- end,
+ end
},
resetSettings = {
- type = "execute",
order = 2,
+ type = "execute",
name = L["Restore Defaults"],
- func = function(info, value) UF:ResetUnitSettings("raid"); E:ResetMovers("Raid Frames") end,
+ func = function(info) E:StaticPopup_Show("RESET_UF_UNIT", L["Raid Frames"], nil, {unit="raid", mover="Raid Frames"}) end
},
copyFrom = {
- type = "select",
order = 3,
+ type = "select",
name = L["Copy From"],
desc = L["Select a unit to copy settings from."],
values = {
["party"] = L["Party Frames"],
- ["raid40"] = L["Raid40 Frames"],
+ ["raid40"] = L["Raid40 Frames"]
},
- set = function(info, value) UF:MergeUnitSettings(value, "raid", true); end,
+ set = function(info, value) UF:MergeUnitSettings(value, "raid", true) end
},
- customText = GetOptionsTable_CustomText(UF.CreateAndUpdateHeaderGroup, "raid", nil, 4),
+ customText = GetOptionsTable_CustomText(UF.CreateAndUpdateHeaderGroup, "raid"),
generalGroup = {
order = 5,
type = "group",
- name = GENERAL,
+ name = L["General"],
args = {
header = {
order = 1,
type = "header",
- name = GENERAL,
+ name = L["General"]
},
enable = {
- type = "toggle",
order = 2,
- name = L["Enable"],
+ type = "toggle",
+ name = L["Enable"]
},
hideonnpc = {
- type = "toggle",
order = 3,
+ type = "toggle",
name = L["Text Toggle On NPC"],
desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
- get = function(info) return E.db.unitframe.units["raid"]["power"].hideonnpc end,
- set = function(info, value) E.db.unitframe.units["raid"]["power"].hideonnpc = value; UF:CreateAndUpdateHeaderGroup("raid"); end,
+ get = function(info) return E.db.unitframe.units.raid.power.hideonnpc end,
+ set = function(info, value) E.db.unitframe.units.raid.power.hideonnpc = value UF:CreateAndUpdateHeaderGroup("raid") end
},
rangeCheck = {
order = 4,
- name = L["Range Check"],
- desc = L["Check if you are in range to cast spells on this specific unit."],
type = "toggle",
+ name = L["Range Check"],
+ desc = L["Check if you are in range to cast spells on this specific unit."]
},
healPrediction = {
order = 5,
- name = L["Heal Prediction"],
- desc = L["Show an incoming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."],
type = "toggle",
+ name = L["Heal Prediction"],
+ desc = L["Show an incoming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."]
},
threatStyle = {
- type = "select",
order = 6,
+ type = "select",
name = L["Threat Display Mode"],
- values = threatValues,
+ values = threatValues
},
colorOverride = {
order = 7,
+ type = "select",
name = L["Class Color Override"],
desc = L["Override the default class color setting."],
- type = "select",
- values = {
- ["USE_DEFAULT"] = L["Use Default"],
- ["FORCE_ON"] = L["Force On"],
- ["FORCE_OFF"] = L["Force Off"],
- },
+ values = colorOverrideValues
},
orientation = {
order = 8,
type = "select",
name = L["Frame Orientation"],
desc = L["Set the orientation of the UnitFrame."],
- values = {
- --["AUTOMATIC"] = L["Automatic"], not sure if i will use this yet
- ["LEFT"] = L["Left"],
- ["MIDDLE"] = L["Middle"],
- ["RIGHT"] = L["Right"],
- },
+ values = orientationValues
},
- targetGlow = {
+ disableMouseoverGlow = {
order = 9,
type = "toggle",
- name = L["Target Glow"],
+ name = L["Block Mouseover Glow"],
+ desc = L["Forces Mouseover Glow to be disabled for these frames"]
+ },
+ disableTargetGlow = {
+ order = 10,
+ type = "toggle",
+ name = L["Block Target Glow"],
+ desc = L["Forces Target Glow to be disabled for these frames"]
},
positionsGroup = {
order = 100,
name = L["Size and Positions"],
type = "group",
guiInline = true,
- set = function(info, value) E.db.unitframe.units["raid"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("raid", nil, nil, true) end,
+ set = function(info, value) E.db.unitframe.units.raid[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid", nil, nil, true) end,
args = {
width = {
order = 1,
- name = L["Width"],
type = "range",
+ name = L["Width"],
min = 10, max = 500, step = 1,
- set = function(info, value) E.db.unitframe.units["raid"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("raid") end,
+ set = function(info, value) E.db.unitframe.units.raid[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid") end
},
height = {
order = 2,
name = L["Height"],
type = "range",
min = 10, max = 500, step = 1,
- set = function(info, value) E.db.unitframe.units["raid"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("raid") end,
+ set = function(info, value) E.db.unitframe.units.raid[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid") end
},
spacer = {
order = 3,
- name = "",
type = "description",
- width = "full",
+ name = "",
+ width = "full"
},
growthDirection = {
order = 4,
name = L["Growth Direction"],
desc = L["Growth direction from the first unitframe."],
type = "select",
- values = {
- DOWN_RIGHT = format(L["%s and then %s"], L["Down"], L["Right"]),
- DOWN_LEFT = format(L["%s and then %s"], L["Down"], L["Left"]),
- UP_RIGHT = format(L["%s and then %s"], L["Up"], L["Right"]),
- UP_LEFT = format(L["%s and then %s"], L["Up"], L["Left"]),
- RIGHT_DOWN = format(L["%s and then %s"], L["Right"], L["Down"]),
- RIGHT_UP = format(L["%s and then %s"], L["Right"], L["Up"]),
- LEFT_DOWN = format(L["%s and then %s"], L["Left"], L["Down"]),
- LEFT_UP = format(L["%s and then %s"], L["Left"], L["Up"]),
- },
+ values = growthDirectionValues
},
numGroups = {
order = 7,
@@ -4458,13 +5651,13 @@ E.Options.args.unitframe.args.raid = {
name = L["Number of Groups"],
min = 1, max = 8, step = 1,
set = function(info, value)
- E.db.unitframe.units["raid"][ info[getn(info)] ] = value;
+ E.db.unitframe.units.raid[ info[getn(info)] ] = value
UF:CreateAndUpdateHeaderGroup("raid")
if _G["ElvUF_Raid"].isForced then
UF:HeaderConfig(_G["ElvUF_Raid"])
UF:HeaderConfig(_G["ElvUF_Raid"], true)
end
- end,
+ end
},
groupsPerRowCol = {
order = 8,
@@ -4472,34 +5665,41 @@ E.Options.args.unitframe.args.raid = {
name = L["Groups Per Row/Column"],
min = 1, max = 8, step = 1,
set = function(info, value)
- E.db.unitframe.units["raid"][ info[getn(info)] ] = value;
+ E.db.unitframe.units.raid[ info[getn(info)] ] = value
UF:CreateAndUpdateHeaderGroup("raid")
if _G["ElvUF_Raid"].isForced then
UF:HeaderConfig(_G["ElvUF_Raid"])
UF:HeaderConfig(_G["ElvUF_Raid"], true)
end
- end,
+ end
},
horizontalSpacing = {
order = 9,
type = "range",
name = L["Horizontal Spacing"],
- min = -1, max = 50, step = 1,
+ min = -1, max = 50, step = 1
},
verticalSpacing = {
order = 10,
type = "range",
name = L["Vertical Spacing"],
- min = -1, max = 50, step = 1,
+ min = -1, max = 50, step = 1
},
- },
+ groupSpacing = {
+ order = 11,
+ type = "range",
+ name = L["Group Spacing"],
+ desc = L["Additional spacing between each individual group."],
+ min = 0, softMax = 50, step = 1
+ }
+ }
},
visibilityGroup = {
order = 200,
name = L["Visibility"],
type = "group",
guiInline = true,
- set = function(info, value) E.db.unitframe.units["raid"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("raid", nil, nil, true) end,
+ set = function(info, value) E.db.unitframe.units.raid[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid", nil, nil, true) end,
args = {
showPlayer = {
order = 1,
@@ -4512,38 +5712,38 @@ E.Options.args.unitframe.args.raid = {
type = "input",
name = L["Visibility"],
desc = L["The following macro must be true in order for the group to be shown, in addition to any filter that may already be set."],
- width = "full",
- },
- },
+ width = "full"
+ }
+ }
},
sortingGroup = {
order = 300,
type = "group",
guiInline = true,
name = L["Grouping & Sorting"],
- set = function(info, value) E.db.unitframe.units["raid"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("raid", nil, nil, true) end,
+ set = function(info, value) E.db.unitframe.units.raid[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid", nil, nil, true) end,
args = {
groupBy = {
order = 1,
+ type = "select",
name = L["Group By"],
desc = L["Set the order that the group will sort."],
- type = "select",
values = {
- ["CLASS"] = "CLASS",
- ["NAME"] = "NAME",
+ ["CLASS"] = CLASS,
+ ["NAME"] = NAME,
["MTMA"] = L["Main Tanks / Main Assist"],
- ["GROUP"] = "GROUP",
- },
+ ["GROUP"] = GROUP
+ }
},
sortDir = {
order = 2,
+ type = "select",
name = L["Sort Direction"],
desc = L["Defines the sort order of the selected sort method."],
- type = "select",
values = {
["ASC"] = L["Ascending"],
["DESC"] = L["Descending"]
- },
+ }
},
spacer = {
order = 3,
@@ -4553,174 +5753,1177 @@ E.Options.args.unitframe.args.raid = {
},
raidWideSorting = {
order = 4,
- name = L["Raid-Wide Sorting"],
- desc = L["Enabling this allows raid-wide sorting however you will not be able to distinguish between groups."],
type = "toggle",
+ name = L["Raid-Wide Sorting"],
+ desc = L["Enabling this allows raid-wide sorting however you will not be able to distinguish between groups."]
},
invertGroupingOrder = {
order = 5,
+ type = "toggle",
name = L["Invert Grouping Order"],
desc = L["Enabling this inverts the grouping order when the raid is not full, this will reverse the direction it starts from."],
- disabled = function() return not E.db.unitframe.units["raid"].raidWideSorting end,
- type = "toggle",
+ disabled = function() return not E.db.unitframe.units.raid.raidWideSorting end
},
startFromCenter = {
order = 6,
+ type = "toggle",
name = L["Start Near Center"],
desc = L["The initial group will start near the center and grow out."],
- disabled = function() return not E.db.unitframe.units["raid"].raidWideSorting end,
- type = "toggle",
- },
- },
- },
- },
+ disabled = function() return not E.db.unitframe.units.raid.raidWideSorting end
+ }
+ }
+ }
+ }
},
health = GetOptionsTable_Health(true, UF.CreateAndUpdateHeaderGroup, "raid"),
- infoPanel = GetOptionsTable_InformationPanel(UF.CreateAndUpdateHeaderGroup, "raid"),
power = GetOptionsTable_Power(false, UF.CreateAndUpdateHeaderGroup, "raid"),
+ infoPanel = GetOptionsTable_InformationPanel(UF.CreateAndUpdateHeaderGroup, "raid"),
name = GetOptionsTable_Name(UF.CreateAndUpdateHeaderGroup, "raid"),
portrait = GetOptionsTable_Portrait(UF.CreateAndUpdateHeaderGroup, "raid"),
- --buffs = GetOptionsTable_Auras(true, "buffs", true, UF.CreateAndUpdateHeaderGroup, "raid"),
- --debuffs = GetOptionsTable_Auras(true, "debuffs", true, UF.CreateAndUpdateHeaderGroup, "raid"),
+ buffs = GetOptionsTable_Auras(true, "buffs", true, UF.CreateAndUpdateHeaderGroup, "raid"),
+ debuffs = GetOptionsTable_Auras(true, "debuffs", true, UF.CreateAndUpdateHeaderGroup, "raid"),
buffIndicator = {
- order = 701,
+ order = 600,
type = "group",
name = L["Buff Indicator"],
- get = function(info) return E.db.unitframe.units["raid"]["buffIndicator"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["raid"]["buffIndicator"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("raid") end,
+ get = function(info) return E.db.unitframe.units.raid.buffIndicator[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.raid.buffIndicator[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid") end,
args = {
header = {
order = 1,
type = "header",
- name = L["Buff Indicator"],
+ name = L["Buff Indicator"]
},
enable = {
- type = "toggle",
- name = L["Enable"],
order = 2,
+ type = "toggle",
+ name = L["Enable"]
},
size = {
+ order = 3,
type = "range",
name = L["Size"],
desc = L["Size of the indicator icon."],
- order = 3,
- min = 4, max = 50, step = 1,
+ min = 4, max = 50, step = 1
},
fontSize = {
+ order = 4,
type = "range",
name = FONT_SIZE,
- order = 4,
- min = 7, max = 22, step = 1,
+ min = 7, max = 22, step = 1
},
profileSpecific = {
+ order = 5,
type = "toggle",
name = L["Profile Specific"],
- desc = L["Use the profile specific filter 'Buff Indicator (Profile)' instead of the global filter 'Buff Indicator'."],
- order = 5,
+ desc = L["Use the profile specific filter 'Buff Indicator (Profile)' instead of the global filter 'Buff Indicator'."]
},
configureButton = {
+ order = 6,
type = "execute",
name = L["Configure Auras"],
func = function()
- if E.db.unitframe.units["raid"]["buffIndicator"].profileSpecific then
+ if E.db.unitframe.units.raid.buffIndicator.profileSpecific then
E:SetToFilterConfig("Buff Indicator (Profile)")
else
E:SetToFilterConfig("Buff Indicator")
end
- end,
- order = 6
- },
- },
- },
- roleIcon = {
- order = 702,
- type = "group",
- name = L["Role Icon"],
- get = function(info) return E.db.unitframe.units["raid"]["roleIcon"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["raid"]["roleIcon"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("raid") end,
- args = {
- header = {
- order = 1,
- type = "header",
- name = L["Role Icon"],
- },
- enable = {
- type = "toggle",
- name = L["Enable"],
- order = 2,
- },
- position = {
- type = "select",
- order = 3,
- name = L["Position"],
- values = positionValues,
- },
- attachTo = {
- type = "select",
- order = 4,
- name = L["Attach To"],
- values = {
- ["Health"] = HEALTH,
- ["Power"] = L["Power"],
- ["InfoPanel"] = L["Information Panel"],
- ["Frame"] = L["Frame"],
- },
- },
- xOffset = {
- order = 5,
- type = "range",
- name = L["xOffset"],
- min = -300, max = 300, step = 1,
- },
- yOffset = {
- order = 6,
- type = "range",
- name = L["yOffset"],
- min = -300, max = 300, step = 1,
- },
- size = {
- type = "range",
- order = 7,
- name = L["Size"],
- min = 4, max = 100, step = 1,
- },
- },
+ end
+ }
+ }
},
raidRoleIcons = {
- order = 703,
+ order = 750,
type = "group",
name = L["RL / ML Icons"],
- get = function(info) return E.db.unitframe.units["raid"]["raidRoleIcons"][ info[getn(info)] ] end,
- set = function(info, value) E.db.unitframe.units["raid"]["raidRoleIcons"][ info[getn(info)] ] = value; UF:CreateAndUpdateHeaderGroup("raid") end,
+ get = function(info) return E.db.unitframe.units.raid.raidRoleIcons[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.raid.raidRoleIcons[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid") end,
args = {
header = {
order = 1,
type = "header",
- name = L["RL / ML Icons"],
+ name = L["RL / ML Icons"]
},
enable = {
- type = "toggle",
- name = L["Enable"],
order = 2,
+ type = "toggle",
+ name = L["Enable"]
},
position = {
- type = "select",
order = 3,
+ type = "select",
name = L["Position"],
values = {
["TOPLEFT"] = "TOPLEFT",
- ["TOPRIGHT"] = "TOPRIGHT",
- },
- },
- },
+ ["TOPRIGHT"] = "TOPRIGHT"
+ }
+ }
+ }
},
- --rdebuffs = GetOptionsTable_RaidDebuff(UF.CreateAndUpdateHeaderGroup, "raid"),
- --raidicon = GetOptionsTable_RaidIcon(UF.CreateAndUpdateHeaderGroup, "raid"),
+ rdebuffs = GetOptionsTable_RaidDebuff(UF.CreateAndUpdateHeaderGroup, "raid"),
+ raidicon = GetOptionsTable_RaidIcon(UF.CreateAndUpdateHeaderGroup, "raid"),
readycheckIcon = GetOptionsTable_ReadyCheckIcon(UF.CreateAndUpdateHeaderGroup, "raid"),
- GPSArrow = GetOptionsTable_GPS("raid"),
- },
+ resurrectIcon = GetOptionsTable_ResurrectIcon(UF.CreateAndUpdateHeaderGroup, "raid"),
+ GPSArrow = GetOptionsTable_GPS("raid")
+ }
}
+E.Options.args.unitframe.args.raid40 = {
+ order = 1350,
+ type = "group",
+ name = L["Raid-40 Frames"],
+ childGroups = "tab",
+ get = function(info) return E.db.unitframe.units.raid40[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.raid40[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid40") end,
+ disabled = function() return not E.UnitFrames end,
+ args = {
+ configureToggle = {
+ order = 1,
+ type = "execute",
+ name = L["Display Frames"],
+ func = function()
+ UF:HeaderConfig(_G["ElvUF_Raid40"], _G["ElvUF_Raid40"].forceShow ~= true or nil)
+ end
+ },
+ resetSettings = {
+ order = 2,
+ type = "execute",
+ name = L["Restore Defaults"],
+ func = function(info) E:StaticPopup_Show("RESET_UF_UNIT", L["Raid-40 Frames"], nil, {unit="raid40", mover="Raid Frames"}) end
+ },
+ copyFrom = {
+ order = 3,
+ type = "select",
+ name = L["Copy From"],
+ desc = L["Select a unit to copy settings from."],
+ values = {
+ ["party"] = L["Party Frames"],
+ ["raid"] = L["Raid Frames"]
+ },
+ set = function(info, value) UF:MergeUnitSettings(value, "raid40", true) end
+ },
+ customText = GetOptionsTable_CustomText(UF.CreateAndUpdateHeaderGroup, "raid40"),
+ generalGroup = {
+ order = 5,
+ type = "group",
+ name = L["General"],
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["General"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ hideonnpc = {
+ order = 3,
+ type = "toggle",
+ name = L["Text Toggle On NPC"],
+ desc = L["Power text will be hidden on NPC targets, in addition the name text will be repositioned to the power texts anchor point."],
+ get = function(info) return E.db.unitframe.units.raid40.power.hideonnpc end,
+ set = function(info, value) E.db.unitframe.units.raid40.power.hideonnpc = value UF:CreateAndUpdateHeaderGroup("raid40") end
+ },
+ rangeCheck = {
+ order = 4,
+ type = "toggle",
+ name = L["Range Check"],
+ desc = L["Check if you are in range to cast spells on this specific unit."]
+ },
+ healPrediction = {
+ order = 5,
+ type = "toggle",
+ name = L["Heal Prediction"],
+ desc = L["Show an incoming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."]
+ },
+ threatStyle = {
+ order = 6,
+ type = "select",
+ name = L["Threat Display Mode"],
+ values = threatValues
+ },
+ colorOverride = {
+ order = 7,
+ type = "select",
+ name = L["Class Color Override"],
+ desc = L["Override the default class color setting."],
+ values = colorOverrideValues
+ },
+ orientation = {
+ order = 8,
+ type = "select",
+ name = L["Frame Orientation"],
+ desc = L["Set the orientation of the UnitFrame."],
+ values = orientationValues
+ },
+ disableMouseoverGlow = {
+ order = 9,
+ type = "toggle",
+ name = L["Block Mouseover Glow"],
+ desc = L["Forces Mouseover Glow to be disabled for these frames"]
+ },
+ disableTargetGlow = {
+ order = 10,
+ type = "toggle",
+ name = L["Block Target Glow"],
+ desc = L["Forces Target Glow to be disabled for these frames"]
+ },
+ positionsGroup = {
+ order = 100,
+ type = "group",
+ name = L["Size and Positions"],
+ guiInline = true,
+ set = function(info, value) E.db.unitframe.units.raid40[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid40", nil, nil, true) end,
+ args = {
+ width = {
+ order = 1,
+ type = "range",
+ name = L["Width"],
+ min = 10, max = 500, step = 1,
+ set = function(info, value) E.db.unitframe.units.raid40[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid40") end
+ },
+ height = {
+ order = 2,
+ type = "range",
+ name = L["Height"],
+ min = 10, max = 500, step = 1,
+ set = function(info, value) E.db.unitframe.units.raid40[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid40") end
+ },
+ spacer = {
+ order = 3,
+ type = "description",
+ name = "",
+ width = "full"
+ },
+ growthDirection = {
+ order = 4,
+ type = "select",
+ name = L["Growth Direction"],
+ desc = L["Growth direction from the first unitframe."],
+ values = growthDirectionValues
+ },
+ numGroups = {
+ order = 7,
+ type = "range",
+ name = L["Number of Groups"],
+ min = 1, max = 8, step = 1,
+ set = function(info, value)
+ E.db.unitframe.units.raid40[ info[getn(info)] ] = value
+ UF:CreateAndUpdateHeaderGroup("raid40")
+ if _G["ElvUF_Raid"].isForced then
+ UF:HeaderConfig(_G["ElvUF_Raid40"])
+ UF:HeaderConfig(_G["ElvUF_Raid40"], true)
+ end
+ end
+ },
+ groupsPerRowCol = {
+ order = 8,
+ type = "range",
+ name = L["Groups Per Row/Column"],
+ min = 1, max = 8, step = 1,
+ set = function(info, value)
+ E.db.unitframe.units.raid40[ info[getn(info)] ] = value
+ UF:CreateAndUpdateHeaderGroup("raid40")
+ if _G["ElvUF_Raid"].isForced then
+ UF:HeaderConfig(_G["ElvUF_Raid40"])
+ UF:HeaderConfig(_G["ElvUF_Raid40"], true)
+ end
+ end
+ },
+ horizontalSpacing = {
+ order = 9,
+ type = "range",
+ name = L["Horizontal Spacing"],
+ min = -1, max = 50, step = 1
+ },
+ verticalSpacing = {
+ order = 10,
+ type = "range",
+ name = L["Vertical Spacing"],
+ min = -1, max = 50, step = 1
+ },
+ groupSpacing = {
+ order = 11,
+ type = "range",
+ name = L["Group Spacing"],
+ desc = L["Additional spacing between each individual group."],
+ min = 0, softMax = 50, step = 1
+ }
+ }
+ },
+ visibilityGroup = {
+ order = 200,
+ type = "group",
+ name = L["Visibility"],
+ guiInline = true,
+ set = function(info, value) E.db.unitframe.units.raid40[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid40", nil, nil, true) end,
+ args = {
+ showPlayer = {
+ order = 1,
+ type = "toggle",
+ name = L["Display Player"],
+ desc = L["When true, the header includes the player when not in a raid."]
+ },
+ visibility = {
+ order = 2,
+ type = "input",
+ name = L["Visibility"],
+ desc = L["The following macro must be true in order for the group to be shown, in addition to any filter that may already be set."],
+ width = "full"
+ }
+ }
+ },
+ sortingGroup = {
+ order = 300,
+ type = "group",
+ guiInline = true,
+ name = L["Grouping & Sorting"],
+ set = function(info, value) E.db.unitframe.units.raid40[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid40", nil, nil, true) end,
+ args = {
+ groupBy = {
+ order = 1,
+ type = "select",
+ name = L["Group By"],
+ desc = L["Set the order that the group will sort."],
+ values = {
+ ["CLASS"] = CLASS,
+ ["NAME"] = NAME,
+ ["MTMA"] = L["Main Tanks / Main Assist"],
+ ["GROUP"] = GROUP
+ }
+ },
+ sortDir = {
+ order = 2,
+ type = "select",
+ name = L["Sort Direction"],
+ desc = L["Defines the sort order of the selected sort method."],
+ values = {
+ ["ASC"] = L["Ascending"],
+ ["DESC"] = L["Descending"]
+ }
+ },
+ spacer = {
+ order = 3,
+ type = "description",
+ width = "full",
+ name = " "
+ },
+ raidWideSorting = {
+ order = 4,
+ type = "toggle",
+ name = L["Raid-Wide Sorting"],
+ desc = L["Enabling this allows raid-wide sorting however you will not be able to distinguish between groups."]
+ },
+ invertGroupingOrder = {
+ order = 5,
+ type = "toggle",
+ name = L["Invert Grouping Order"],
+ desc = L["Enabling this inverts the grouping order when the raid is not full, this will reverse the direction it starts from."],
+ disabled = function() return not E.db.unitframe.units.raid40.raidWideSorting end
+ },
+ startFromCenter = {
+ order = 6,
+ type = "toggle",
+ name = L["Start Near Center"],
+ desc = L["The initial group will start near the center and grow out."],
+ disabled = function() return not E.db.unitframe.units.raid40.raidWideSorting end
+ }
+ }
+ }
+ }
+ },
+ health = GetOptionsTable_Health(true, UF.CreateAndUpdateHeaderGroup, "raid40"),
+ power = GetOptionsTable_Power(false, UF.CreateAndUpdateHeaderGroup, "raid40"),
+ infoPanel = GetOptionsTable_InformationPanel(UF.CreateAndUpdateHeaderGroup, "raid40"),
+ name = GetOptionsTable_Name(UF.CreateAndUpdateHeaderGroup, "raid40"),
+ portrait = GetOptionsTable_Portrait(UF.CreateAndUpdateHeaderGroup, "raid40"),
+ buffs = GetOptionsTable_Auras(true, "buffs", true, UF.CreateAndUpdateHeaderGroup, "raid40"),
+ debuffs = GetOptionsTable_Auras(true, "debuffs", true, UF.CreateAndUpdateHeaderGroup, "raid40"),
+ buffIndicator = {
+ order = 600,
+ type = "group",
+ name = L["Buff Indicator"],
+ get = function(info) return E.db.unitframe.units.raid40.buffIndicator[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.raid40.buffIndicator[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid40") end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Buff Indicator"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ size = {
+ order = 3,
+ type = "range",
+ name = L["Size"],
+ desc = L["Size of the indicator icon."],
+ min = 4, max = 50, step = 1
+ },
+ fontSize = {
+ order = 4,
+ type = "range",
+ name = FONT_SIZE,
+ min = 7, max = 22, step = 1
+ },
+ profileSpecific = {
+ order = 5,
+ type = "toggle",
+ name = L["Profile Specific"],
+ desc = L["Use the profile specific filter 'Buff Indicator (Profile)' instead of the global filter 'Buff Indicator'."]
+ },
+ configureButton = {
+ order = 6,
+ type = "execute",
+ name = L["Configure Auras"],
+ func = function()
+ if E.db.unitframe.units.raid40.buffIndicator.profileSpecific then
+ E:SetToFilterConfig("Buff Indicator (Profile)")
+ else
+ E:SetToFilterConfig("Buff Indicator")
+ end
+ end
+ }
+ }
+ },
+ raidRoleIcons = {
+ order = 750,
+ type = "group",
+ name = L["RL / ML Icons"],
+ get = function(info) return E.db.unitframe.units.raid40.raidRoleIcons[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.raid40.raidRoleIcons[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raid40") end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["RL / ML Icons"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ position = {
+ order = 3,
+ type = "select",
+ name = L["Position"],
+ values = {
+ ["TOPLEFT"] = "TOPLEFT",
+ ["TOPRIGHT"] = "TOPRIGHT"
+ }
+ }
+ }
+ },
+ rdebuffs = GetOptionsTable_RaidDebuff(UF.CreateAndUpdateHeaderGroup, "raid40"),
+ raidicon = GetOptionsTable_RaidIcon(UF.CreateAndUpdateHeaderGroup, "raid40"),
+ readycheckIcon = GetOptionsTable_ReadyCheckIcon(UF.CreateAndUpdateHeaderGroup, "raid40"),
+ resurrectIcon = GetOptionsTable_ResurrectIcon(UF.CreateAndUpdateHeaderGroup, "raid40"),
+ GPSArrow = GetOptionsTable_GPS("raid40")
+ }
+}
+
+E.Options.args.unitframe.args.raidpet = {
+ order = 1400,
+ type = "group",
+ name = L["Raid Pet Frames"],
+ childGroups = "tab",
+ get = function(info) return E.db.unitframe.units.raidpet[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.raidpet[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raidpet") end,
+ disabled = function() return not E.UnitFrames end,
+ args = {
+ configureToggle = {
+ order = 1,
+ type = "execute",
+ name = L["Display Frames"],
+ func = function()
+ UF:HeaderConfig(ElvUF_Raidpet, ElvUF_Raidpet.forceShow ~= true or nil)
+ end
+ },
+ resetSettings = {
+ order = 2,
+ type = "execute",
+ name = L["Restore Defaults"],
+ func = function(info) E:StaticPopup_Show("RESET_UF_UNIT", L["Raid Pet Frames"], nil, {unit="raidpet", mover="Raid Pet Frames"}) end
+ },
+ copyFrom = {
+ order = 3,
+ type = "select",
+ name = L["Copy From"],
+ desc = L["Select a unit to copy settings from."],
+ values = {
+ ["party"] = L["Party Frames"],
+ ["raid"] = L["Raid Frames"]
+ },
+ set = function(info, value) UF:MergeUnitSettings(value, "raidpet", true) end
+ },
+ customText = GetOptionsTable_CustomText(UF.CreateAndUpdateHeaderGroup, "raidpet"),
+ generalGroup = {
+ order = 5,
+ type = "group",
+ name = L["General"],
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["General"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ rangeCheck = {
+ order = 3,
+ type = "toggle",
+ name = L["Range Check"],
+ desc = L["Check if you are in range to cast spells on this specific unit."]
+ },
+ healPrediction = {
+ order = 4,
+ type = "toggle",
+ name = L["Heal Prediction"],
+ desc = L["Show an incoming heal prediction bar on the unitframe. Also display a slightly different colored bar for incoming overheals."]
+ },
+ threatStyle = {
+ order = 5,
+ type = "select",
+ name = L["Threat Display Mode"],
+ values = threatValues
+ },
+ colorOverride = {
+ order = 6,
+ type = "select",
+ name = L["Class Color Override"],
+ desc = L["Override the default class color setting."],
+ values = colorOverrideValues
+ },
+ orientation = {
+ order = 7,
+ type = "select",
+ name = L["Frame Orientation"],
+ desc = L["Set the orientation of the UnitFrame."],
+ values = orientationValues
+ },
+ disableMouseoverGlow = {
+ order = 8,
+ type = "toggle",
+ name = L["Block Mouseover Glow"],
+ desc = L["Forces Mouseover Glow to be disabled for these frames"]
+ },
+ disableTargetGlow = {
+ order = 9,
+ type = "toggle",
+ name = L["Block Target Glow"],
+ desc = L["Forces Target Glow to be disabled for these frames"]
+ },
+ positionsGroup = {
+ order = 100,
+ type = "group",
+ name = L["Size and Positions"],
+ guiInline = true,
+ set = function(info, value) E.db.unitframe.units.raidpet[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raidpet", nil, nil, true) end,
+ args = {
+ width = {
+ order = 1,
+ type = "range",
+ name = L["Width"],
+ min = 10, max = 500, step = 1,
+ set = function(info, value) E.db.unitframe.units.raidpet[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raidpet") end
+ },
+ height = {
+ order = 2,
+ type = "range",
+ name = L["Height"],
+ min = 10, max = 500, step = 1,
+ set = function(info, value) E.db.unitframe.units.raidpet[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raidpet") end
+ },
+ spacer = {
+ order = 3,
+ type = "description",
+ name = "",
+ width = "full"
+ },
+ growthDirection = {
+ order = 4,
+ type = "select",
+ name = L["Growth Direction"],
+ desc = L["Growth direction from the first unitframe."],
+ values = growthDirectionValues
+ },
+ numGroups = {
+ order = 7,
+ type = "range",
+ name = L["Number of Groups"],
+ min = 1, max = 8, step = 1,
+ set = function(info, value)
+ E.db.unitframe.units.raidpet[ info[getn(info)] ] = value
+ UF:CreateAndUpdateHeaderGroup("raidpet")
+ if ElvUF_Raidpet.isForced then
+ UF:HeaderConfig(ElvUF_Raidpet)
+ UF:HeaderConfig(ElvUF_Raidpet, true)
+ end
+ end
+ },
+ groupsPerRowCol = {
+ order = 8,
+ type = "range",
+ name = L["Groups Per Row/Column"],
+ min = 1, max = 8, step = 1,
+ set = function(info, value)
+ E.db.unitframe.units.raidpet[ info[getn(info)] ] = value
+ UF:CreateAndUpdateHeaderGroup("raidpet")
+ if ElvUF_Raidpet.isForced then
+ UF:HeaderConfig(ElvUF_Raidpet)
+ UF:HeaderConfig(ElvUF_Raidpet, true)
+ end
+ end
+ },
+ horizontalSpacing = {
+ order = 9,
+ type = "range",
+ name = L["Horizontal Spacing"],
+ min = -1, max = 50, step = 1
+ },
+ verticalSpacing = {
+ order = 10,
+ type = "range",
+ name = L["Vertical Spacing"],
+ min = -1, max = 50, step = 1
+ },
+ groupSpacing = {
+ order = 11,
+ type = "range",
+ name = L["Group Spacing"],
+ desc = L["Additional spacing between each individual group."],
+ min = 0, softMax = 50, step = 1
+ }
+ }
+ },
+ visibilityGroup = {
+ order = 200,
+ type = "group",
+ name = L["Visibility"],
+ guiInline = true,
+ set = function(info, value) E.db.unitframe.units.raidpet[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raidpet", nil, nil, true) end,
+ args = {
+ visibility = {
+ order = 2,
+ type = "input",
+ name = L["Visibility"],
+ desc = L["The following macro must be true in order for the group to be shown, in addition to any filter that may already be set."],
+ width = "full"
+ }
+ }
+ },
+ sortingGroup = {
+ order = 300,
+ type = "group",
+ guiInline = true,
+ name = L["Grouping & Sorting"],
+ set = function(info, value) E.db.unitframe.units.raidpet[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raidpet", nil, nil, true) end,
+ args = {
+ groupBy = {
+ order = 1,
+ type = "select",
+ name = L["Group By"],
+ desc = L["Set the order that the group will sort."],
+ values = {
+ ["NAME"] = L["Owners Name"],
+ ["PETNAME"] = L["Pet Name"],
+ ["GROUP"] = GROUP
+ }
+ },
+ sortDir = {
+ order = 2,
+ type = "select",
+ name = L["Sort Direction"],
+ desc = L["Defines the sort order of the selected sort method."],
+ values = {
+ ["ASC"] = L["Ascending"],
+ ["DESC"] = L["Descending"]
+ }
+ },
+ spacer = {
+ order = 3,
+ type = "description",
+ width = "full",
+ name = " "
+ },
+ raidWideSorting = {
+ order = 4,
+ type = "toggle",
+ name = L["Raid-Wide Sorting"],
+ desc = L["Enabling this allows raid-wide sorting however you will not be able to distinguish between groups."]
+ },
+ invertGroupingOrder = {
+ order = 5,
+ type = "toggle",
+ name = L["Invert Grouping Order"],
+ desc = L["Enabling this inverts the grouping order when the raid is not full, this will reverse the direction it starts from."],
+ disabled = function() return not E.db.unitframe.units.raidpet.raidWideSorting end
+ },
+ startFromCenter = {
+ order = 6,
+ type = "toggle",
+ name = L["Start Near Center"],
+ desc = L["The initial group will start near the center and grow out."],
+ disabled = function() return not E.db.unitframe.units.raidpet.raidWideSorting end
+ }
+ }
+ }
+ }
+ },
+ health = GetOptionsTable_Health(true, UF.CreateAndUpdateHeaderGroup, "raidpet"),
+ name = GetOptionsTable_Name(UF.CreateAndUpdateHeaderGroup, "raidpet"),
+ portrait = GetOptionsTable_Portrait(UF.CreateAndUpdateHeaderGroup, "raidpet"),
+ buffs = GetOptionsTable_Auras(true, "buffs", true, UF.CreateAndUpdateHeaderGroup, "raidpet"),
+ debuffs = GetOptionsTable_Auras(true, "debuffs", true, UF.CreateAndUpdateHeaderGroup, "raidpet"),
+ rdebuffs = GetOptionsTable_RaidDebuff(UF.CreateAndUpdateHeaderGroup, "raidpet"),
+ raidicon = GetOptionsTable_RaidIcon(UF.CreateAndUpdateHeaderGroup, "raidpet"),
+ buffIndicator = {
+ order = 600,
+ type = "group",
+ name = L["Buff Indicator"],
+ get = function(info) return E.db.unitframe.units.raidpet.buffIndicator[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.raidpet.buffIndicator[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("raidpet") end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Buff Indicator"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ size = {
+ order = 3,
+ type = "range",
+ name = L["Size"],
+ desc = L["Size of the indicator icon."],
+ min = 4, max = 50, step = 1
+ },
+ fontSize = {
+ order = 4,
+ type = "range",
+ name = FONT_SIZE,
+ min = 7, max = 22, step = 1
+ },
+ configureButton = {
+ order = 5,
+ type = "execute",
+ name = L["Configure Auras"],
+ func = function() E:SetToFilterConfig("Buff Indicator") end
+ }
+ }
+ }
+ }
+}
+
+E.Options.args.unitframe.args.tank = {
+ order = 1500,
+ type = "group",
+ name = L["Tank Frames"],
+ childGroups = "tab",
+ get = function(info) return E.db.unitframe.units.tank[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.tank[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("tank") end,
+ disabled = function() return not E.UnitFrames end,
+ args = {
+ resetSettings = {
+ order = 1,
+ type = "execute",
+ name = L["Restore Defaults"],
+ func = function(info) E:StaticPopup_Show("RESET_UF_UNIT", L["Tank Frames"], nil, {unit="tank"}) end
+ },
+ generalGroup = {
+ order = 2,
+ type = "group",
+ name = L["General"],
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["General"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ width = {
+ order = 3,
+ type = "range",
+ name = L["Width"],
+ min = 50, max = 1000, step = 1
+ },
+ height = {
+ order = 4,
+ type = "range",
+ name = L["Height"],
+ min = 10, max = 500, step = 1
+ },
+ disableDebuffHighlight = {
+ order = 5,
+ type = "toggle",
+ name = L["Disable Debuff Highlight"],
+ desc = L["Forces Debuff Highlight to be disabled for these frames"],
+ disabled = function() return E.db.unitframe.debuffHighlighting == "NONE" end
+ },
+ orientation = {
+ order = 6,
+ type = "select",
+ name = L["Frame Orientation"],
+ desc = L["Set the orientation of the UnitFrame."],
+ values = orientationValues
+ },
+ colorOverride = {
+ order = 8,
+ type = "select",
+ name = L["Class Color Override"],
+ desc = L["Override the default class color setting."],
+ values = colorOverrideValues
+ },
+ disableMouseoverGlow = {
+ order = 9,
+ type = "toggle",
+ name = L["Block Mouseover Glow"],
+ desc = L["Forces Mouseover Glow to be disabled for these frames"]
+ },
+ disableTargetGlow = {
+ order = 10,
+ type = "toggle",
+ name = L["Block Target Glow"],
+ desc = L["Forces Target Glow to be disabled for these frames"]
+ }
+ }
+ },
+ targetsGroup = {
+ order = 3,
+ type = "group",
+ name = L["Tank Target"],
+ get = function(info) return E.db.unitframe.units.tank.targetsGroup[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.tank.targetsGroup[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("tank") end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Tank Target"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ width = {
+ order = 3,
+ type = "range",
+ name = L["Width"],
+ min = 10, max = 500, step = 1
+ },
+ height = {
+ order = 4,
+ type = "range",
+ name = L["Height"],
+ min = 10, max = 500, step = 1
+ },
+ anchorPoint = {
+ order = 5,
+ type = "select",
+ name = L["Anchor Point"],
+ desc = L["What point to anchor to the frame you set to attach to."],
+ values = petAnchors
+ },
+ xOffset = {
+ order = 6,
+ type = "range",
+ name = L["xOffset"],
+ desc = L["An X offset (in pixels) to be used when anchoring new frames."],
+ min = -500, max = 500, step = 1
+ },
+ yOffset = {
+ order = 7,
+ type = "range",
+ name = L["yOffset"],
+ desc = L["An Y offset (in pixels) to be used when anchoring new frames."],
+ min = -500, max = 500, step = 1
+ },
+ colorOverride = {
+ order = 8,
+ type = "select",
+ name = L["Class Color Override"],
+ desc = L["Override the default class color setting."],
+ values = colorOverrideValues
+ },
+ name = GetOptionsTable_Name(UF.CreateAndUpdateHeaderGroup, "tank")
+ }
+ },
+ name = GetOptionsTable_Name(UF.CreateAndUpdateHeaderGroup, "tank"),
+ buffs = GetOptionsTable_Auras(true, "buffs", true, UF.CreateAndUpdateHeaderGroup, "tank"),
+ debuffs = GetOptionsTable_Auras(true, "debuffs", true, UF.CreateAndUpdateHeaderGroup, "tank"),
+ rdebuffs = GetOptionsTable_RaidDebuff(UF.CreateAndUpdateHeaderGroup, "tank"),
+ raidicon = GetOptionsTable_RaidIcon(UF.CreateAndUpdateHeaderGroup, "tank"),
+ buffIndicator = {
+ order = 800,
+ type = "group",
+ name = L["Buff Indicator"],
+ get = function(info) return E.db.unitframe.units.tank.buffIndicator[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.tank.buffIndicator[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("tank") end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Buff Indicator"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ size = {
+ order = 3,
+ type = "range",
+ name = L["Size"],
+ desc = L["Size of the indicator icon."],
+ min = 4, max = 50, step = 1
+ },
+ fontSize = {
+ order = 4,
+ type = "range",
+ name = FONT_SIZE,
+ min = 7, max = 22, step = 1
+ },
+ profileSpecific = {
+ order = 5,
+ type = "toggle",
+ name = L["Profile Specific"],
+ desc = L["Use the profile specific filter 'Buff Indicator (Profile)' instead of the global filter 'Buff Indicator'."]
+ },
+ configureButton = {
+ order = 6,
+ type = "execute",
+ name = L["Configure Auras"],
+ func = function()
+ if E.db.unitframe.units.tank.buffIndicator.profileSpecific then
+ E:SetToFilterConfig("Buff Indicator (Profile)")
+ else
+ E:SetToFilterConfig("Buff Indicator")
+ end
+ end
+ }
+ }
+ }
+ }
+}
+E.Options.args.unitframe.args.tank.args.name.args.attachTextTo.values = {["Health"] = HEALTH, ["Frame"] = L["Frame"]}
+E.Options.args.unitframe.args.tank.args.targetsGroup.args.name.args.attachTextTo.values = {["Health"] = HEALTH, ["Frame"] = L["Frame"]}
+E.Options.args.unitframe.args.tank.args.targetsGroup.args.name.get = function(info) return E.db.unitframe.units.tank.targetsGroup.name[ info[getn(info)] ] end
+E.Options.args.unitframe.args.tank.args.targetsGroup.args.name.set = function(info, value) E.db.unitframe.units.tank.targetsGroup.name[ info[getn(info)] ] = value UF.CreateAndUpdateHeaderGroup(UF, "tank") end
+
+E.Options.args.unitframe.args.assist = {
+ order = 1600,
+ type = "group",
+ name = L["Assist Frames"],
+ childGroups = "tab",
+ get = function(info) return E.db.unitframe.units.assist[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.assist[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("assist") end,
+ disabled = function() return not E.UnitFrames end,
+ args = {
+ resetSettings = {
+ order = 1,
+ type = "execute",
+ name = L["Restore Defaults"],
+ func = function(info) E:StaticPopup_Show("RESET_UF_UNIT", L["Assist Frames"], nil, {unit="assist"}) end
+ },
+ generalGroup = {
+ order = 2,
+ type = "group",
+ name = L["General"],
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["General"],
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ width = {
+ order = 3,
+ type = "range",
+ name = L["Width"],
+ min = 50, max = 1000, step = 1
+ },
+ height = {
+ order = 4,
+ type = "range",
+ name = L["Height"],
+ min = 10, max = 500, step = 1
+ },
+ disableDebuffHighlight = {
+ order = 5,
+ type = "toggle",
+ name = L["Disable Debuff Highlight"],
+ desc = L["Forces Debuff Highlight to be disabled for these frames"],
+ disabled = function() return E.db.unitframe.debuffHighlighting == "NONE" end
+ },
+ orientation = {
+ order = 6,
+ type = "select",
+ name = L["Frame Orientation"],
+ desc = L["Set the orientation of the UnitFrame."],
+ values = orientationValues
+ },
+ colorOverride = {
+ order = 8,
+ type = "select",
+ name = L["Class Color Override"],
+ desc = L["Override the default class color setting."],
+ values = colorOverrideValues
+ },
+ disableMouseoverGlow = {
+ order = 9,
+ type = "toggle",
+ name = L["Block Mouseover Glow"],
+ desc = L["Forces Mouseover Glow to be disabled for these frames"]
+ },
+ disableTargetGlow = {
+ order = 10,
+ type = "toggle",
+ name = L["Block Target Glow"],
+ desc = L["Forces Target Glow to be disabled for these frames"]
+ }
+ }
+ },
+ targetsGroup = {
+ order = 3,
+ type = "group",
+ name = L["Assist Target"],
+ get = function(info) return E.db.unitframe.units.assist.targetsGroup[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.assist.targetsGroup[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("assist") end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Assist Target"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ width = {
+ order = 3,
+ type = "range",
+ name = L["Width"],
+ min = 10, max = 500, step = 1
+ },
+ height = {
+ order = 4,
+ type = "range",
+ name = L["Height"],
+ min = 10, max = 500, step = 1
+ },
+ anchorPoint = {
+ order = 5,
+ type = "select",
+ name = L["Anchor Point"],
+ desc = L["What point to anchor to the frame you set to attach to."],
+ values = petAnchors
+ },
+ xOffset = {
+ order = 6,
+ type = "range",
+ name = L["xOffset"],
+ desc = L["An X offset (in pixels) to be used when anchoring new frames."],
+ min = -500, max = 500, step = 1
+ },
+ yOffset = {
+ order = 7,
+ type = "range",
+ name = L["yOffset"],
+ desc = L["An Y offset (in pixels) to be used when anchoring new frames."],
+ min = -500, max = 500, step = 1
+ },
+ colorOverride = {
+ order = 8,
+ type = "select",
+ name = L["Class Color Override"],
+ desc = L["Override the default class color setting."],
+ values = colorOverrideValues
+ },
+ name = GetOptionsTable_Name(UF.CreateAndUpdateHeaderGroup, "assist")
+ }
+ },
+ name = GetOptionsTable_Name(UF.CreateAndUpdateHeaderGroup, "assist"),
+ buffs = GetOptionsTable_Auras(true, "buffs", true, UF.CreateAndUpdateHeaderGroup, "assist"),
+ debuffs = GetOptionsTable_Auras(true, "debuffs", true, UF.CreateAndUpdateHeaderGroup, "assist"),
+ rdebuffs = GetOptionsTable_RaidDebuff(UF.CreateAndUpdateHeaderGroup, "assist"),
+ raidicon = GetOptionsTable_RaidIcon(UF.CreateAndUpdateHeaderGroup, "assist"),
+ buffIndicator = {
+ order = 800,
+ type = "group",
+ name = L["Buff Indicator"],
+ get = function(info) return E.db.unitframe.units.assist.buffIndicator[ info[getn(info)] ] end,
+ set = function(info, value) E.db.unitframe.units.assist.buffIndicator[ info[getn(info)] ] = value UF:CreateAndUpdateHeaderGroup("assist") end,
+ args = {
+ header = {
+ order = 1,
+ type = "header",
+ name = L["Buff Indicator"]
+ },
+ enable = {
+ order = 2,
+ type = "toggle",
+ name = L["Enable"]
+ },
+ size = {
+ order = 3,
+ type = "range",
+ name = L["Size"],
+ desc = L["Size of the indicator icon."],
+ min = 4, max = 50, step = 1
+ },
+ fontSize = {
+ order = 4,
+ type = "range",
+ name = FONT_SIZE,
+ min = 7, max = 22, step = 1
+ },
+ profileSpecific = {
+ order = 5,
+ type = "toggle",
+ name = L["Profile Specific"],
+ desc = L["Use the profile specific filter 'Buff Indicator (Profile)' instead of the global filter 'Buff Indicator'."]
+ },
+ configureButton = {
+ order = 6,
+ type = "execute",
+ name = L["Configure Auras"],
+ func = function()
+ if E.db.unitframe.units.assist.buffIndicator.profileSpecific then
+ E:SetToFilterConfig("Buff Indicator (Profile)")
+ else
+ E:SetToFilterConfig("Buff Indicator")
+ end
+ end
+ }
+ }
+ }
+ }
+}
+E.Options.args.unitframe.args.assist.args.name.args.attachTextTo.values = {["Health"] = HEALTH, ["Frame"] = L["Frame"]}
+E.Options.args.unitframe.args.assist.args.targetsGroup.args.name.args.attachTextTo.values = {["Health"] = HEALTH, ["Frame"] = L["Frame"]}
+E.Options.args.unitframe.args.assist.args.targetsGroup.args.name.get = function(info) return E.db.unitframe.units.assist.targetsGroup.name[ info[getn(info)] ] end
+E.Options.args.unitframe.args.assist.args.targetsGroup.args.name.set = function(info, value) E.db.unitframe.units.assist.targetsGroup.name[ info[getn(info)] ] = value UF.CreateAndUpdateHeaderGroup(UF, "assist") end
+
--MORE COLORING STUFF YAY
E.Options.args.unitframe.args.generalOptionsGroup.args.allColorsGroup.args.classResourceGroup = {
order = -10,
@@ -4736,7 +6939,13 @@ E.Options.args.unitframe.args.generalOptionsGroup.args.allColorsGroup.args.class
t.r, t.g, t.b = r, g, b
UF:Update_AllFrames()
end,
- args = {}
+ args = {
+ header = {
+ order = 0,
+ type = "header",
+ name = L["Class Resources"]
+ }
+ }
}
E.Options.args.unitframe.args.generalOptionsGroup.args.allColorsGroup.args.classResourceGroup.args.bgColor = {
@@ -4746,7 +6955,7 @@ E.Options.args.unitframe.args.generalOptionsGroup.args.allColorsGroup.args.class
hasAlpha = false,
}
-for i = 1, 3 do
+for i = 1, 5 do
E.Options.args.unitframe.args.generalOptionsGroup.args.allColorsGroup.args.classResourceGroup.args["combo"..i] = {
order = i + 2,
type = "color",
@@ -4760,34 +6969,32 @@ for i = 1, 3 do
local t = E.db.unitframe.colors.classResources.comboPoints[i]
t.r, t.g, t.b = r, g, b
UF:Update_AllFrames()
- end,
+ end
}
end
-
if P.unitframe.colors.classResources[E.myclass] then
E.Options.args.unitframe.args.generalOptionsGroup.args.allColorsGroup.args.classResourceGroup.args.spacer2 = {
order = 10,
- name = " ",
type = "description",
- width = "full",
+ name = " ",
+ width = "full"
}
end
---Custom Texts
function E:RefreshCustomTextsConfigs()
- --Hide any custom texts that don't belong to current profile
+ --Hide any custom texts that don"t belong to current profile
for _, customText in pairs(CUSTOMTEXT_CONFIGS) do
customText.hidden = true
end
twipe(CUSTOMTEXT_CONFIGS)
- for unit, _ in pairs(E.db.unitframe.units) do
+ for unit in pairs(E.db.unitframe.units) do
if E.db.unitframe.units[unit].customTexts then
- for objectName, _ in pairs(E.db.unitframe.units[unit].customTexts) do
+ for objectName in pairs(E.db.unitframe.units[unit].customTexts) do
CreateCustomTextGroup(unit, objectName)
end
end
end
end
-E:RefreshCustomTextsConfigs()
+E:RefreshCustomTextsConfigs()
\ No newline at end of file