reverting last commit since it caused conflicts.

reverting last commit since it caused conflicts.
This commit is contained in:
Meow
2026-02-19 07:31:39 +01:00
parent 862d3e30ee
commit a2cdaeb73c
4 changed files with 15 additions and 176 deletions
-6
View File
@@ -230,12 +230,6 @@ function pfUI:LoadConfig()
pfUI:UpdateConfig("unitframes", nil, "comboheight", "6")
pfUI:UpdateConfig("unitframes", nil, "swingtimerwidth", "200")
pfUI:UpdateConfig("unitframes", nil, "swingtimerheight", "12")
pfUI:UpdateConfig("unitframes", nil, "swingtimerlabel", "1")
pfUI:UpdateConfig("unitframes", nil, "swingtimeroh", "1")
pfUI:UpdateConfig("unitframes", nil, "swingtimerhsqueue","1")
pfUI:UpdateConfig("unitframes", nil, "swingtimertexture","img:bar")
pfUI:UpdateConfig("unitframes", nil, "swingtimertext", "1")
pfUI:UpdateConfig("unitframes", nil, "swingtimerfontsize","12")
pfUI:UpdateConfig("unitframes", nil, "abbrevnum", "1")
pfUI:UpdateConfig("unitframes", nil, "castbardecimals", "2")
pfUI:UpdateConfig("unitframes", nil, "abbrevname", "1")
-36
View File
@@ -3224,42 +3224,6 @@ function pfUI.uf:GetStatusValue(unit, pos)
end
elseif config == "powerminmax" then
return unit:GetColor("power") .. pfUI.api.Abbreviate(mp) .. "/" .. pfUI.api.Abbreviate(mpmax)
elseif config == "attackspeed" then
local mainSpeed = UnitAttackSpeed(unitstr)
return unit:GetColor("unit") .. format("Spd: %.2f", mainSpeed)
elseif config == "attackdmg" then
local lowDmg, hiDmg = UnitDamage(unitstr)
return unit:GetColor("unit") .. format("Dmg: %.0f - %.0f", lowDmg, hiDmg)
elseif config == "unit-left" then
local name = unit:GetColor("unit") .. pfUI.uf:GetNameString(unitstr)
local level = unit:GetColor("level") .. pfUI.uf:GetLevelString(unitstr)
return level .. "|cffffffff | " .. name
elseif config == "unit-right" then
local name = unit:GetColor("unit") .. pfUI.uf:GetNameString(unitstr)
local level = unit:GetColor("level") .. pfUI.uf:GetLevelString(unitstr)
return name .. "|cffffffff | " .. level
elseif config == "unit-white-left" then
local name = "|cffffffff" .. pfUI.uf:GetNameString(unitstr)
local level = "|cffffffff" .. pfUI.uf:GetLevelString(unitstr)
return level .. " |cffffffff | " .. name
elseif config == "unit-white-right" then
local name = "|cffffffff" .. pfUI.uf:GetNameString(unitstr)
local level = "|cffffffff" .. pfUI.uf:GetLevelString(unitstr)
return name .. " |cffffffff | " .. level
elseif config == "hp-right" then
return unit:GetColor("health") .. ceil(rhp / rhpmax * 100) .. "%" .. " | " .. pfUI.api.Abbreviate(rhp)
elseif config == "hp-left" then
return unit:GetColor("health") .. pfUI.api.Abbreviate(rhp) .. " | " .. ceil(rhp / rhpmax * 100) .. "%"
elseif config == "mana-auto-deli" then
if mp ~= mpmax and UnitPowerType(unitstr) == 0 then
return "|cffffffff" .. pfUI.api.Abbreviate(mp) .. " - " .. ceil(mp / mpmax * 100) .. "%"
else
return "|cffffffff" .. pfUI.api.Abbreviate(mp)
end
elseif config == "mana-current-deli" then
return "|cffffffff" .. pfUI.api.Abbreviate(mp)
elseif config == "petname" then
return "|cffffffff" .. (UnitName(unitstr) or "")
else
return ""
end
-17
View File
@@ -1060,17 +1060,6 @@ pfUI:RegisterModule("gui", "vanilla:tbc", function ()
"powerperc:" .. T["Mana - Percentage"],
"powermiss:" .. T["Mana - Missing"],
"powerminmax:" .. T["Mana - Min/Max"],
"attackspeed:" .. T["Attack Speed"],
"attackdmg:" .. T["Min/Max Damage"],
"unit-left:" .. T["Unit String Left"],
"unit-right:" .. T["Unit String Right"],
"unit-white-left:" .. T["Unit String Left White"],
"unit-white-right:" .. T["Unit String Right White"],
"hp-right:" .. T["HP Current | Percent"],
"hp-left:" .. T["HP Percent | Current"],
"mana-auto-deli:" .. T["Mana Auto"],
"mana-current-deli:" .. T["Mana Current"],
"petname:" .. T["Pet Name"],
},
["hpformat"] = {
"percent:" .. T["Percent"],
@@ -1968,12 +1957,6 @@ pfUI:RegisterModule("gui", "vanilla:tbc", function ()
CreateConfig(nil, T["Swing Timer"], nil, nil, "header")
CreateConfig(nil, T["Swing Timer Width"], C.unitframes, "swingtimerwidth")
CreateConfig(nil, T["Swing Timer Height"], C.unitframes, "swingtimerheight")
CreateConfig(nil, T["Swing Timer Texture"], C.unitframes, "swingtimertexture", "dropdown", pfUI.gui.dropdowns.uf_bartexture)
CreateConfig(nil, T["Show Timer Text"], C.unitframes, "swingtimertext", "checkbox")
CreateConfig(nil, T["Timer Text Font Size"], C.unitframes, "swingtimerfontsize")
CreateConfig(nil, T["Show MH/OH Labels"], C.unitframes, "swingtimerlabel", "checkbox")
CreateConfig(nil, T["Show Offhand Bar"], C.unitframes, "swingtimeroh", "checkbox")
CreateConfig(nil, T["Show HS/Cleave Queue Color"], C.unitframes, "swingtimerhsqueue", "checkbox")
CreateConfig(U[c], T["Font Options"], nil, nil, "header")
CreateConfig(nil, T["Unit Frame Text Font"], C.global, "font_unit", "dropdown", pfUI.gui.dropdowns.fonts)
+15 -117
View File
@@ -23,16 +23,8 @@ pfUI:RegisterModule("swingtimer", "vanilla:tbc", function ()
pfUI.swingtimer:SetFrameStrata("MEDIUM")
pfUI.swingtimer:Hide()
-- Config locals (read once at load, no per-frame lookups)
local sw_width = tonumber(C.unitframes.swingtimerwidth) or 200
local sw_height = tonumber(C.unitframes.swingtimerheight) or 12
local sw_label = C.unitframes.swingtimerlabel ~= "0"
local sw_oh = C.unitframes.swingtimeroh ~= "0"
local sw_hs = C.unitframes.swingtimerhsqueue ~= "0"
local sw_text = C.unitframes.swingtimertext ~= "0"
local sw_fontsize = tonumber(C.unitframes.swingtimerfontsize) or 12
-- swingtimertexture stores a pfUI.media key (e.g. "img:bar"), not a raw path
local sw_texture = pfUI.media[C.unitframes.swingtimertexture] or pfUI.media["img:bar"]
local sw_width = tonumber(C.unitframes.swingtimerwidth) or 200
local sw_height = tonumber(C.unitframes.swingtimerheight) or 12
-- Mainhand bar
pfUI.swingtimer.mainhand = CreateFrame("StatusBar", "pfSwingTimerMainhand", UIParent)
@@ -41,22 +33,21 @@ pfUI:RegisterModule("swingtimer", "vanilla:tbc", function ()
pfUI.swingtimer.mainhand:SetHeight(sw_height)
pfUI.swingtimer.mainhand:SetMinMaxValues(0, 1)
pfUI.swingtimer.mainhand:SetValue(0)
pfUI.swingtimer.mainhand:SetStatusBarTexture(sw_texture)
pfUI.swingtimer.mainhand:SetStatusBarTexture(pfUI.media["img:bar"])
pfUI.swingtimer.mainhand:SetStatusBarColor(0.8, 0.3, 0.3, 1)
pfUI.swingtimer.mainhand:Hide()
pfUI.swingtimer.mainhand.text = pfUI.swingtimer.mainhand:CreateFontString("Status", "DIALOG", "GameFontNormal")
pfUI.swingtimer.mainhand.text:SetPoint("CENTER", pfUI.swingtimer.mainhand, "CENTER", 0, 0)
pfUI.swingtimer.mainhand.text:SetFont(pfUI.font_default, sw_fontsize, "OUTLINE")
pfUI.swingtimer.mainhand.text:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE")
pfUI.swingtimer.mainhand.text:SetTextColor(1, 1, 1, 1)
pfUI.swingtimer.mainhand.text:SetText("")
if not sw_text then pfUI.swingtimer.mainhand.text:Hide() end
pfUI.swingtimer.mainhand.label = pfUI.swingtimer.mainhand:CreateFontString("Status", "DIALOG", "GameFontNormal")
pfUI.swingtimer.mainhand.label:SetPoint("RIGHT", pfUI.swingtimer.mainhand, "LEFT", -4, 0)
pfUI.swingtimer.mainhand.label:SetFont(pfUI.font_default, sw_fontsize, "OUTLINE")
pfUI.swingtimer.mainhand.label:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE")
pfUI.swingtimer.mainhand.label:SetTextColor(0.8, 0.8, 0.8, 1)
pfUI.swingtimer.mainhand.label:SetText(sw_label and "MH" or "")
pfUI.swingtimer.mainhand.label:SetText("MH")
CreateBackdrop(pfUI.swingtimer.mainhand)
CreateBackdropShadow(pfUI.swingtimer.mainhand)
@@ -68,79 +59,30 @@ pfUI:RegisterModule("swingtimer", "vanilla:tbc", function ()
pfUI.swingtimer.offhand:SetHeight(sw_height)
pfUI.swingtimer.offhand:SetMinMaxValues(0, 1)
pfUI.swingtimer.offhand:SetValue(0)
pfUI.swingtimer.offhand:SetStatusBarTexture(sw_texture)
pfUI.swingtimer.offhand:SetStatusBarTexture(pfUI.media["img:bar"])
pfUI.swingtimer.offhand:SetStatusBarColor(0.3, 0.8, 0.3, 1)
pfUI.swingtimer.offhand:Hide()
pfUI.swingtimer.offhand.text = pfUI.swingtimer.offhand:CreateFontString("Status", "DIALOG", "GameFontNormal")
pfUI.swingtimer.offhand.text:SetPoint("CENTER", pfUI.swingtimer.offhand, "CENTER", 0, 0)
pfUI.swingtimer.offhand.text:SetFont(pfUI.font_default, sw_fontsize, "OUTLINE")
pfUI.swingtimer.offhand.text:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE")
pfUI.swingtimer.offhand.text:SetTextColor(1, 1, 1, 1)
pfUI.swingtimer.offhand.text:SetText("")
if not sw_text then pfUI.swingtimer.offhand.text:Hide() end
pfUI.swingtimer.offhand.label = pfUI.swingtimer.offhand:CreateFontString("Status", "DIALOG", "GameFontNormal")
pfUI.swingtimer.offhand.label:SetPoint("RIGHT", pfUI.swingtimer.offhand, "LEFT", -4, 0)
pfUI.swingtimer.offhand.label:SetFont(pfUI.font_default, sw_fontsize, "OUTLINE")
pfUI.swingtimer.offhand.label:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE")
pfUI.swingtimer.offhand.label:SetTextColor(0.8, 0.8, 0.8, 1)
pfUI.swingtimer.offhand.label:SetText(sw_label and "OH" or "")
pfUI.swingtimer.offhand.label:SetText("OH")
CreateBackdrop(pfUI.swingtimer.offhand)
CreateBackdropShadow(pfUI.swingtimer.offhand)
-- HS/Cleave queue detection (Warrior only)
-- Slots are cached on load and on actionbar changes to avoid per-frame texture lookups.
local hsTrackedSlots = {}
local cleaveTrackedSlots = {}
local function UpdateHSCleaveSlots()
local _, class = UnitClass("player")
if class ~= "WARRIOR" or not sw_hs then return end
hsTrackedSlots = {}
cleaveTrackedSlots = {}
for slot = 1, 120 do
local texture = GetActionTexture(slot)
local text = GetActionText(slot)
if texture then
-- Heroic Strike and Ambush share the same icon in 1.12.1
if texture == "Interface\\Icons\\Ability_Rogue_Ambush" then
tinsert(hsTrackedSlots, slot)
elseif texture == "Interface\\Icons\\Ability_Warrior_Cleave" then
tinsert(cleaveTrackedSlots, slot)
elseif text then
text = string.lower(text)
if text == "heroic strike" or text == "heroicstrike" or text == "hs" then
tinsert(hsTrackedSlots, slot)
elseif text == "cleave" then
tinsert(cleaveTrackedSlots, slot)
end
end
end
end
end
local function IsHSQueued()
if not sw_hs then return false end
for _, slot in ipairs(hsTrackedSlots) do
if IsCurrentAction(slot) then return true end
end
return false
end
local function IsCleaveQueued()
if not sw_hs then return false end
for _, slot in ipairs(cleaveTrackedSlots) do
if IsCurrentAction(slot) then return true end
end
return false
end
UpdateMovable(pfUI.swingtimer.mainhand)
-- inventoryType numbers from ItemStats DBC:
-- 17 = INVTYPE_WEAPON (one-hand, can go in either hand)
-- 21 = INVTYPE_WEAPONOFFHAND
-- Shields (14), Ranged (15/26), Relics (28) etc. must NOT trigger OH timer.
local OH_SWINGABLE = { [17] = true, [21] = true }
local function HasOffhandWeapon()
@@ -167,8 +109,6 @@ pfUI:RegisterModule("swingtimer", "vanilla:tbc", function ()
swingState.mainhand.speed = mhSpeed / 1000
end
-- offhandAttackTime is populated by the server even for 2H / empty OH slot.
-- Gate it on an actual swingable weapon in the offhand equipment slot.
if HasOffhandWeapon() then
local ohSpeed = GetUnitField("player", "offhandAttackTime")
if ohSpeed and ohSpeed > 0 then
@@ -184,13 +124,12 @@ pfUI:RegisterModule("swingtimer", "vanilla:tbc", function ()
local function StartSwing(isOffhand)
local now = GetTime()
-- Refresh speeds on every swing to catch haste changes mid-combat.
UpdateWeaponSpeeds()
if isOffhand and swingState.offhand.speed > 0 then
swingState.offhand.nextSwing = now + swingState.offhand.speed
swingState.offhand.swinging = true
if sw_oh then pfUI.swingtimer.offhand:Show() end
pfUI.swingtimer.offhand:Show()
else
swingState.mainhand.nextSwing = now + swingState.mainhand.speed
swingState.mainhand.swinging = true
@@ -204,16 +143,6 @@ pfUI:RegisterModule("swingtimer", "vanilla:tbc", function ()
local now = GetTime()
local anyActive = false
-- HS/Cleave colour coding (only recalculated when MH is active)
local mhR, mhG, mhB = 0.8, 0.3, 0.3
if sw_hs then
if IsCleaveQueued() then
mhR, mhG, mhB = 0.2, 0.9, 0.2
elseif IsHSQueued() then
mhR, mhG, mhB = 0.9, 0.9, 0.2
end
end
if swingState.mainhand.swinging then
local remaining = swingState.mainhand.nextSwing - now
if remaining <= 0 then
@@ -222,15 +151,12 @@ pfUI:RegisterModule("swingtimer", "vanilla:tbc", function ()
else
local progress = 1 - (remaining / swingState.mainhand.speed)
pfUI.swingtimer.mainhand:SetValue(progress)
pfUI.swingtimer.mainhand:SetStatusBarColor(mhR, mhG, mhB, 1)
if sw_text then
pfUI.swingtimer.mainhand.text:SetText(string.format("%.1f", remaining))
end
pfUI.swingtimer.mainhand.text:SetText(string.format("%.1f", remaining))
anyActive = true
end
end
if sw_oh and swingState.offhand.swinging then
if swingState.offhand.swinging then
local remaining = swingState.offhand.nextSwing - now
if remaining <= 0 then
swingState.offhand.swinging = false
@@ -238,13 +164,9 @@ pfUI:RegisterModule("swingtimer", "vanilla:tbc", function ()
else
local progress = 1 - (remaining / swingState.offhand.speed)
pfUI.swingtimer.offhand:SetValue(progress)
if sw_text then
pfUI.swingtimer.offhand.text:SetText(string.format("%.1f", remaining))
end
pfUI.swingtimer.offhand.text:SetText(string.format("%.1f", remaining))
anyActive = true
end
elseif not sw_oh then
pfUI.swingtimer.offhand:Hide()
end
if not anyActive then
@@ -259,8 +181,6 @@ pfUI:RegisterModule("swingtimer", "vanilla:tbc", function ()
events:RegisterEvent("PLAYER_REGEN_DISABLED")
events:RegisterEvent("PLAYER_REGEN_ENABLED")
events:RegisterEvent("PLAYER_TARGET_CHANGED")
events:RegisterEvent("UNIT_DIED")
events:RegisterEvent("ACTIONBAR_SLOT_CHANGED")
local function ResetSwingTimers()
swingState.mainhand.swinging = false
@@ -270,36 +190,24 @@ pfUI:RegisterModule("swingtimer", "vanilla:tbc", function ()
pfUI.swingtimer:Hide()
end
-- Cache player GUID for UNIT_DIED comparison
local playerGUID = nil
events:SetScript("OnEvent", function()
if event == "AUTO_ATTACK_SELF" then
-- arg4 = hitInfo (Nampower EVENTS.md)
local hitInfo = arg4 or 0
-- HITINFO_NOACTION (65536): server did not advance the swing clock, ignore
if bit.band(hitInfo, 65536) ~= 0 then return end
local isOffhand = bit.band(hitInfo, HITINFO_LEFTSWING) ~= 0
StartSwing(isOffhand)
elseif event == "PLAYER_ENTERING_WORLD" then
playerGUID = UnitExists and UnitGUID and UnitGUID("player") or nil
UpdateWeaponSpeeds()
UpdateHSCleaveSlots()
elseif event == "UNIT_INVENTORY_CHANGED" then
if arg1 and arg1 ~= "player" then return end
UpdateWeaponSpeeds()
UpdateHSCleaveSlots()
-- Hide OH bar immediately if player unequipped their OH weapon
if swingState.offhand.speed == 0 then
swingState.offhand.swinging = false
pfUI.swingtimer.offhand:Hide()
end
elseif event == "ACTIONBAR_SLOT_CHANGED" then
UpdateHSCleaveSlots()
elseif event == "PLAYER_REGEN_DISABLED" then
UpdateWeaponSpeeds()
@@ -310,18 +218,8 @@ pfUI:RegisterModule("swingtimer", "vanilla:tbc", function ()
if not UnitExists("target") or UnitIsDead("target") then
ResetSwingTimers()
end
elseif event == "UNIT_DIED" then
-- arg1 = guid of the unit that died (Nampower EVENTS.md)
local guid = arg1
if not guid then return end
local targetGUID = UnitExists("target") and UnitGUID and UnitGUID("target") or nil
if guid == targetGUID or guid == playerGUID then
ResetSwingTimers()
end
end
end)
UpdateWeaponSpeeds()
UpdateHSCleaveSlots()
end)
end)