Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .github/screenshots/swingtimer.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 4 additions & 4 deletions EUI_MacroFactory.lua
Original file line number Diff line number Diff line change
Expand Up @@ -618,10 +618,10 @@ function EllesmereUI.BuildMacroFactory(parent, startY, PP)
}

-- Detect current spec and class
local specIndex = GetSpecialization()
local specIndex = C_SpecializationInfo.GetSpecialization()
local activeSpecID, activeSpecName
if specIndex then
activeSpecID, activeSpecName = GetSpecializationInfo(specIndex)
activeSpecID, activeSpecName = C_SpecializationInfo.GetSpecializationInfo(specIndex)
end
local activeClassName = UnitClass("player") or "Unknown"
-- All spec macro bodies use spell-ID {n} tokens (localized at build time via
Expand Down Expand Up @@ -1681,8 +1681,8 @@ function EllesmereUI.RefreshMacroFactory()
if not mf or not mf.parent or not mf.parent.IsObjectType then return end
-- PLAYER_SPECIALIZATION_CHANGED can fire several times for one switch; skip
-- the rebuild if the spec that's already built hasn't actually changed.
local idx = GetSpecialization()
local curSpecID = idx and GetSpecializationInfo(idx) or nil
local idx = C_SpecializationInfo.GetSpecialization()
local curSpecID = idx and C_SpecializationInfo.GetSpecializationInfo(idx) or nil
if curSpecID == mf.builtSpecID then return end
local oldContainer = mf.container

Expand Down
4 changes: 4 additions & 0 deletions EllesmereUIBags/EllesmereUIBags.lua
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ EUI_BagsWindow = CreateFrame("Frame", "EUI_BagsWindowFrame", UIParent)
EUI_BagsWindow:Hide()

local SLOT_SIZE, SPACING = 34, 4
local GetItemInfo = C_Item.GetItemInfo
local GetItemInfoInstant = C_Item.GetItemInfoInstant
local GetItemQualityColor = C_Item.GetItemQualityColor
local IsEquippableItem = C_Item.IsEquippableItem

-- Red-tint usability test (shared with the bank module via EUI). Tooltip must come from
-- the real item, never GetItemByID: scaling gear's bonus IDs lower its required level, but
Expand Down
3 changes: 3 additions & 0 deletions EllesmereUIBags/EllesmereUIBags_Bank.lua
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ if EUI_CLIENT_BLOCKED then return end -- pre-12.1 client failsafe (EllesmereUI_C
-- Visually matches the Bags module with sidebar, search, and sorting
-------------------------------------------------------------------------------
local EUI = EllesmereUI
local GetItemInfo = C_Item.GetItemInfo
local GetItemInfoInstant = C_Item.GetItemInfoInstant
local GetItemQualityColor = C_Item.GetItemQualityColor
-- Profile access helper (DB created in EUI_Bags_Options.lua, loaded first per TOC)
local _emptyP = {}
local function BP() return (EUI._bagsDB and EUI._bagsDB.profile) or _emptyP end
Expand Down
1 change: 1 addition & 0 deletions EllesmereUIBags/EllesmereUIBags_Categories.lua
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ if EUI_CLIENT_BLOCKED then return end -- pre-12.1 client failsafe (EllesmereUI_C
local CategoryManager = {}
-- Profile access helper (DB created in EUI_Bags_Options.lua, loaded first per TOC)
local EUI = EllesmereUI
local GetItemInfoInstant = C_Item.GetItemInfoInstant
local _emptyP = {}
local function BP() return (EUI._bagsDB and EUI._bagsDB.profile) or _emptyP end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1191,9 +1191,10 @@ function WSkin.Tab(tab, opts)
hooksecurefunc(sys, "SetTabVisuallySelected", UpdateAllTabs)
end
end
-- Icon tabs carry their label in Icon; retain its clipping mask as well.
for j = 1, select("#", tab:GetRegions()) do
local r = select(j, tab:GetRegions())
if r and r:IsObjectType("Texture") then
if r and r ~= tab.Icon and r ~= tab.IconMask and r:IsObjectType("Texture") then
r:SetTexture("")
if r.SetAtlas then r:SetAtlas("") end
end
Expand Down
7 changes: 6 additions & 1 deletion EllesmereUIOptions/EUI_QoL_Options.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2814,10 +2814,12 @@ initFrame:SetScript("OnEvent", function(self)
return math.abs(y)
end

local pages = { PAGE_QOL, PAGE_RAIDTOOLS, PAGE_CURSOR, PAGE_SHIFTER, PAGE_MOVEMENT, PAGE_UPGCALC }
if _G._EUI_Swing_Profile then pages[#pages + 1] = "Swing Timer" end
EllesmereUI:RegisterModule("EllesmereUIQoL", {
title = "Quality of Life",
description = "Quality of life features and custom cursor.",
pages = { PAGE_QOL, PAGE_RAIDTOOLS, PAGE_CURSOR, PAGE_SHIFTER, PAGE_MOVEMENT, PAGE_UPGCALC },
pages = pages,
searchTerms = { "brez", "bres", "battle res", "combat res", "cursor", "macro", "fps", "logging", "combat log", "warcraft logs", "upgrade", "ilvl", "item level", "crest", "upgrade calculator", "shifter", "move", "drag", "position", "demodal", "drift", "combat alert", "enter combat", "leave combat", "in combat", "combat text", "combat notification", "transform", "transforms", "costume", "disguise", "chef's hat", "noggenfogger", "target distance", "distance to target", "range text", "yard", "yards", "movement", "mobility", "gap closer", "blink", "gateway", "warlock gateway", "control shard", "time spiral", "free movement", "raid tools", "raid", "pull timer", "pull", "ready check", "role check", "raid marker", "target marker", "world marker", "flare", "disband", "convert to raid", "countdown" },
buildPage = function(pageName, parent, yOffset)
-- The Raid Tools settings preview ends when any OTHER QoL page
Expand All @@ -2828,6 +2830,9 @@ initFrame:SetScript("OnEvent", function(self)
and _G._EUI_RaidTools_Preview then
_G._EUI_RaidTools_Preview(false)
end
if pageName == "Swing Timer" and _G._EUI_BuildSwingPage then
return _G._EUI_BuildSwingPage(pageName, parent, yOffset)
end
if pageName == PAGE_QOL then
return BuildQoLPage(pageName, parent, yOffset)
end
Expand Down
47 changes: 47 additions & 0 deletions EllesmereUIOptions/EUI_QoL_Swing_Options.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
if EUI_CLIENT_BLOCKED then return end
if not EllesmereUI._ModuleNS["EllesmereUIQoL"] or not _G._EUI_Swing_Profile then return end

_G._EUI_BuildSwingPage = function(_, parent, yOffset)
local EUI = EllesmereUI
local W = EUI.Widgets
local y = yOffset
EUI:ClearContentHeader()
local function Get(key) return _G._EUI_Swing_Profile()[key] end
local function Set(key, value)
_G._EUI_Swing_Profile()[key] = value
_G._EUI_Swing_Apply()
end
local function Toggle(label, key)
return { type = "toggle", text = label,
getValue = function() return Get(key) end,
setValue = function(v) Set(key, v) end }
end
local function Slider(label, key, lo, hi)
return { type = "slider", text = label, min = lo, max = hi, step = 1,
getValue = function() return Get(key) end,
setValue = function(v) Set(key, v) end }
end
local _, h = W:DualRow(parent, y,
Toggle("Enable Swing Timer", "enabled"), Toggle("Only Show In Combat", "combatOnly"))
y = y - h
_, h = W:DualRow(parent, y,
Toggle("Main Hand", "mainHand"), Toggle("Off Hand", "offHand"))
y = y - h
_, h = W:DualRow(parent, y,
Toggle("Ranged", "ranged"), Toggle("Highlight Queued Attacks", "queueColor"))
y = y - h
_, h = W:DualRow(parent, y,
Slider("Width", "width", 100, 600), Slider("Bar Height", "height", 12, 40))
y = y - h
_, h = W:DualRow(parent, y,
Slider("Bar Spacing", "gap", 0, 20), Slider("Text Size", "fontSize", 8, 24))
y = y - h
local _, textureNames, textureOrder = EUI.BuildBarTextureTables()
_, h = W:DualRow(parent, y,
{ type = "dropdown", text = "Bar Texture", values = textureNames, order = textureOrder,
getValue = function() return Get("texture") end,
setValue = function(v) Set("texture", v) end },
{ type = "label", text = "Position with Unlock Mode" })
y = y - h
return math.abs(y)
end
1 change: 1 addition & 0 deletions EllesmereUIOptions/EllesmereUIOptions.toc
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ EUI_QoL_AutoLogging_Options.lua
EUI_QoL_Shifter_Options.lua
EUI_QoL_MovementAlert_Options.lua
EUI_QoL_RaidTools_Options.lua
EUI_QoL_Swing_Options.lua
EUI_UpgradeCalc_Options.lua
EUI_QuestTracker_Options.lua
EUI_Quickdraw_Options.lua
Expand Down
1 change: 1 addition & 0 deletions EllesmereUIQoL/EllesmereUIQoL.lua
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ local qolFrame = CreateFrame("Frame")
qolFrame:RegisterEvent("PLAYER_LOGIN")
qolFrame:SetScript("OnEvent", function(self)
self:UnregisterEvent("PLAYER_LOGIN")
if _G._EUI_Swing_Apply then _G._EUI_Swing_Apply() end

---------------------------------------------------------------------------
-- Auto Unwrap Collections (Mounts / Pets / Toys)
Expand Down
1 change: 1 addition & 0 deletions EllesmereUIQoL/EllesmereUIQoL.toc
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ EllesmereUIQoL_TeleportPrompt.lua
EllesmereUIQoL_Shifter.lua
EllesmereUIQoL_MovementAlert.lua
EllesmereUIQoL_RaidTools.lua
EllesmereUIQoL_Swing.lua
EUI_UpgradeCalc.lua

# Options
4 changes: 2 additions & 2 deletions EllesmereUIQoL/EllesmereUIQoL_MovementAlert.lua
Original file line number Diff line number Diff line change
Expand Up @@ -791,9 +791,9 @@ local function SafeGetBaseDuration(spellId)
end

local function ResolvePlayerSpecId()
local spec = GetSpecialization()
local spec = C_SpecializationInfo.GetSpecialization()
if not spec then return nil end
local specId = select(1, GetSpecializationInfo(spec))
local specId = C_SpecializationInfo.GetSpecializationInfo(spec)
if specId and specId > 0 then return specId end
return nil
end
Expand Down
Loading
Loading