mirror of
https://github.com/brues-code/pfUI.git
synced 2026-10-23 20:40:50 +00:00
Compare commits
15
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
10b028b0c2 | ||
|
|
7ccc56c241 | ||
|
|
c64a501e6f | ||
|
|
82c74c2db5 | ||
|
|
a3cfd711fe | ||
|
|
a7ad1f073f | ||
|
|
fe5b3b135b | ||
|
|
9c29f0c7d4 | ||
|
|
685ecb4a3e | ||
|
|
8cdaf1fc00 | ||
|
|
bb39c9d94e | ||
|
|
18059ffbb7 | ||
|
|
d75e280238 | ||
|
|
9eb34b8f0a | ||
|
|
f8dde49f09 |
+10
@@ -204,6 +204,12 @@ function pfUI.api.UnitHasBuff(unit, name)
|
|||||||
return C_UnitAuras.GetAuraDataBySpellName(unit, name, "HELPFUL") ~= nil or nil
|
return C_UnitAuras.GetAuraDataBySpellName(unit, name, "HELPFUL") ~= nil or nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- [ IsPlayerGuid ]
|
||||||
|
-- Returns whether a GUID or unit token refers to the local player.
|
||||||
|
-- guid [string] A unit GUID (or unitID) to test.
|
||||||
|
-- return: [bool] true if it is the player otherwise "false"
|
||||||
|
pfUI.api.IsPlayerGuid = _G.IsPlayerGuid
|
||||||
|
|
||||||
-- [ GetUnbuffedRoster ]
|
-- [ GetUnbuffedRoster ]
|
||||||
-- Returns a comma-joined, colored list of group members missing the named aura.
|
-- Returns a comma-joined, colored list of group members missing the named aura.
|
||||||
-- name [string] the localized aura name to check for
|
-- name [string] the localized aura name to check for
|
||||||
@@ -665,6 +671,10 @@ end
|
|||||||
function pfUI.api.CreateGoldString(money)
|
function pfUI.api.CreateGoldString(money)
|
||||||
if type(money) ~= "number" then return "-" end
|
if type(money) ~= "number" then return "-" end
|
||||||
|
|
||||||
|
if _G.GetCoinTextureString then
|
||||||
|
return "|cffffffff" .. _G.GetCoinTextureString(money) .. "|r"
|
||||||
|
end
|
||||||
|
|
||||||
local gold = floor(money/ 100 / 100)
|
local gold = floor(money/ 100 / 100)
|
||||||
local silver = floor(mod((money/100),100))
|
local silver = floor(mod((money/100),100))
|
||||||
local copper = floor(mod(money,100))
|
local copper = floor(mod(money,100))
|
||||||
|
|||||||
+1
-1
@@ -223,7 +223,7 @@ function pfUI:LoadConfig()
|
|||||||
pfUI:UpdateConfig("unitframes", nil, "always2dportrait", "0")
|
pfUI:UpdateConfig("unitframes", nil, "always2dportrait", "0")
|
||||||
pfUI:UpdateConfig("unitframes", nil, "portraittexture", "1")
|
pfUI:UpdateConfig("unitframes", nil, "portraittexture", "1")
|
||||||
pfUI:UpdateConfig("unitframes", nil, "layout", "default")
|
pfUI:UpdateConfig("unitframes", nil, "layout", "default")
|
||||||
pfUI:UpdateConfig("unitframes", nil, "rangecheck", "1")
|
pfUI:UpdateConfig("unitframes", nil, "rangecheck", "0")
|
||||||
pfUI:UpdateConfig("unitframes", nil, "rangecheck_mode", "vanilla")
|
pfUI:UpdateConfig("unitframes", nil, "rangecheck_mode", "vanilla")
|
||||||
pfUI:UpdateConfig("unitframes", nil, "rangecheck_distance", "40")
|
pfUI:UpdateConfig("unitframes", nil, "rangecheck_distance", "40")
|
||||||
pfUI:UpdateConfig("unitframes", nil, "buffdetect", "0")
|
pfUI:UpdateConfig("unitframes", nil, "buffdetect", "0")
|
||||||
|
|||||||
+31
-5
@@ -205,8 +205,13 @@ function pfUI.uf:UpdateVisibility()
|
|||||||
|
|
||||||
-- cache result of strsub to avoid repeating calls
|
-- cache result of strsub to avoid repeating calls
|
||||||
if not self.cache_raid then
|
if not self.cache_raid then
|
||||||
if strsub(self:GetName(),0,6) == "pfRaid" then
|
local name = self:GetName()
|
||||||
self.cache_raid = tonumber(strsub(self:GetName(),7,8)) or 0
|
if strsub(name,0,9) == "pfRaidPet" then
|
||||||
|
-- pet grid slot (pfRaidPet1..40); used to mirror party pets below
|
||||||
|
self.cache_raid = 0
|
||||||
|
self.cache_raidpet = tonumber(strsub(name,10)) or 0
|
||||||
|
elseif strsub(name,0,6) == "pfRaid" then
|
||||||
|
self.cache_raid = tonumber(strsub(name,7,8)) or 0
|
||||||
else
|
else
|
||||||
self.cache_raid = 0
|
self.cache_raid = 0
|
||||||
end
|
end
|
||||||
@@ -238,6 +243,26 @@ function pfUI.uf:UpdateVisibility()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- show raidpet frames as party pets when a party is shown as a raid grid
|
||||||
|
if self.cache_raidpet then
|
||||||
|
if not IsInRaid() and IsInGroup() and C.unitframes.raidforgroup == "1" then
|
||||||
|
local id = self.cache_raidpet
|
||||||
|
if id == 1 then
|
||||||
|
-- grid slot 1 mirrors the player, so its pet is the player's pet
|
||||||
|
self.id = ""
|
||||||
|
self.label = "pet"
|
||||||
|
elseif id <= 5 then
|
||||||
|
self.id = id - 1
|
||||||
|
self.label = "partypet"
|
||||||
|
end
|
||||||
|
|
||||||
|
-- reset to regular raidpet unitstrings after leaving party mode
|
||||||
|
elseif self.label == "pet" or self.label == "partypet" then
|
||||||
|
self.id = self.cache_raidpet
|
||||||
|
self.label = "raidpet"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- display every unit as player while pfUI.uf.showall is set
|
-- display every unit as player while pfUI.uf.showall is set
|
||||||
if pfUI.uf.showall then
|
if pfUI.uf.showall then
|
||||||
self._label = self._label or self.label
|
self._label = self._label or self.label
|
||||||
@@ -266,9 +291,10 @@ function pfUI.uf:UpdateVisibility()
|
|||||||
-- frame shall not be visible
|
-- frame shall not be visible
|
||||||
visibility = "hide"
|
visibility = "hide"
|
||||||
self.visible = nil
|
self.visible = nil
|
||||||
elseif hide_group and self.cache_raid == 0 and self.label and strsub(self.label,0,5) == "party" then
|
elseif hide_group and self.cache_raid == 0 and not self.cache_raidpet and self.label and strsub(self.label,0,5) == "party" then
|
||||||
-- hide group while shown as a raid grid and option is set (raid frames
|
-- hide group while shown as a raid grid and option is set (raid player
|
||||||
-- carry label "party" under raidforgroup, so exclude them by cache_raid)
|
-- frames carry label "party" and raid pet frames carry label "partypet"
|
||||||
|
-- under raidforgroup, so exclude them by cache_raid / cache_raidpet)
|
||||||
visibility = "hide"
|
visibility = "hide"
|
||||||
self.visible = nil
|
self.visible = nil
|
||||||
elseif ( self.fname == "Group0" or self.fname == "PartyPet0" or self.fname == "Party0Target" )
|
elseif ( self.fname == "Group0" or self.fname == "PartyPet0" or self.fname == "Party0Target" )
|
||||||
|
|||||||
Vendored
+6
@@ -63,6 +63,12 @@ for i=1,40 do
|
|||||||
pfValidUnits["nameplate" .. i .. "target"] = true
|
pfValidUnits["nameplate" .. i .. "target"] = true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
if TURTLE_WOW_VERSION then -- We already know this table is going to be replaced by turtle-wow.lua, so there's no point in declaring it.
|
||||||
|
pfSellData = {} -- create empty just incase user has turtle-wow module disabled.
|
||||||
|
return
|
||||||
|
end
|
||||||
|
-- This table makes me sick.
|
||||||
-- itemid = buyPrice (copper). Sell price comes from C_Item.GetItemSellPriceByID;
|
-- itemid = buyPrice (copper). Sell price comes from C_Item.GetItemSellPriceByID;
|
||||||
-- this table only carries the curated vendor-buy price (which isn't a static
|
-- this table only carries the curated vendor-buy price (which isn't a static
|
||||||
-- engine field — it's collected from real vendor encounters).
|
-- engine field — it's collected from real vendor encounters).
|
||||||
|
|||||||
+1
-1
@@ -45,7 +45,7 @@ pfUI:RegisterModule("castbar", function ()
|
|||||||
if not cb.tradeskillTotal or not cb.activeName or not cb.showname then return end
|
if not cb.tradeskillTotal or not cb.activeName or not cb.showname then return end
|
||||||
local remaining = cb.tradeskillTotal - (cb.tradeskillCompleted or 0)
|
local remaining = cb.tradeskillTotal - (cb.tradeskillCompleted or 0)
|
||||||
if remaining > 1 then
|
if remaining > 1 then
|
||||||
cb.bar.left:SetText(string.format("%s (%d)", cb.activeName, remaining))
|
cb.bar.left:SetFormattedText("%s (%d)", cb.activeName, remaining)
|
||||||
else
|
else
|
||||||
cb.bar.left:SetText(cb.activeName)
|
cb.bar.left:SetText(cb.activeName)
|
||||||
end
|
end
|
||||||
|
|||||||
+6
-11
@@ -127,7 +127,7 @@ pfUI:RegisterModule("firstrun", function ()
|
|||||||
-- welcome dialog
|
-- welcome dialog
|
||||||
pfUI.firstrun:AddStep("init", function()
|
pfUI.firstrun:AddStep("init", function()
|
||||||
local f = CreateFirstRunPage()
|
local f = CreateFirstRunPage()
|
||||||
f.text:SetText(string.format(T["Welcome to |cff33ffccpf|cffffffffUI|r!\n\nI'm the first run wizard that will guide you through some basic configuration. If you're lazy, feel free to hit the \"Defaults\" button. If you wish to run this dialog again, go to the settings and hit the \"Reset Firstrun\" button.\n\nVisit |cff33ffcc%s|r to check for the latest version."], GetAddOnMetadata(pfUI.name, "X-Website")))
|
f.text:SetFormattedText(T["Welcome to |cff33ffccpf|cffffffffUI|r!\n\nI'm the first run wizard that will guide you through some basic configuration. If you're lazy, feel free to hit the \"Defaults\" button. If you wish to run this dialog again, go to the settings and hit the \"Reset Firstrun\" button.\n\nVisit |cff33ffcc%s|r to check for the latest version."], GetAddOnMetadata(pfUI.name, "X-Website"))
|
||||||
return f
|
return f
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@@ -137,8 +137,7 @@ pfUI:RegisterModule("firstrun", function ()
|
|||||||
f.text:SetText(T["A new installation of |cff33ffccpf|rUI ships with 4 prebuilt design profiles. Click below if you wish to load one of these profiles."])
|
f.text:SetText(T["A new installation of |cff33ffccpf|rUI ships with 4 prebuilt design profiles. Click below if you wish to load one of these profiles."])
|
||||||
|
|
||||||
f.Modern = CreateFrame("Button", nil, f, "UIPanelButtonTemplate")
|
f.Modern = CreateFrame("Button", nil, f, "UIPanelButtonTemplate")
|
||||||
f.Modern:SetWidth(120)
|
f.Modern:SetSize(120, 20)
|
||||||
f.Modern:SetHeight(20)
|
|
||||||
f.Modern:SetPoint("BOTTOM", -65, 100)
|
f.Modern:SetPoint("BOTTOM", -65, 100)
|
||||||
f.Modern:SetTextColor(1,1,1)
|
f.Modern:SetTextColor(1,1,1)
|
||||||
f.Modern:SetText("Modern")
|
f.Modern:SetText("Modern")
|
||||||
@@ -151,8 +150,7 @@ pfUI:RegisterModule("firstrun", function ()
|
|||||||
SkinButton(f.Modern)
|
SkinButton(f.Modern)
|
||||||
|
|
||||||
f.Nostalgia = CreateFrame("Button", nil, f, "UIPanelButtonTemplate")
|
f.Nostalgia = CreateFrame("Button", nil, f, "UIPanelButtonTemplate")
|
||||||
f.Nostalgia:SetWidth(120)
|
f.Nostalgia:SetSize(120, 20)
|
||||||
f.Nostalgia:SetHeight(20)
|
|
||||||
f.Nostalgia:SetPoint("BOTTOM", 65, 100)
|
f.Nostalgia:SetPoint("BOTTOM", 65, 100)
|
||||||
f.Nostalgia:SetTextColor(1,1,1)
|
f.Nostalgia:SetTextColor(1,1,1)
|
||||||
f.Nostalgia:SetText("Nostalgia")
|
f.Nostalgia:SetText("Nostalgia")
|
||||||
@@ -165,8 +163,7 @@ pfUI:RegisterModule("firstrun", function ()
|
|||||||
SkinButton(f.Nostalgia)
|
SkinButton(f.Nostalgia)
|
||||||
|
|
||||||
f.Legacy = CreateFrame("Button", nil, f, "UIPanelButtonTemplate")
|
f.Legacy = CreateFrame("Button", nil, f, "UIPanelButtonTemplate")
|
||||||
f.Legacy:SetWidth(120)
|
f.Legacy:SetSize(120, 20)
|
||||||
f.Legacy:SetHeight(20)
|
|
||||||
f.Legacy:SetPoint("BOTTOM", 65, 75)
|
f.Legacy:SetPoint("BOTTOM", 65, 75)
|
||||||
f.Legacy:SetTextColor(1,1,1)
|
f.Legacy:SetTextColor(1,1,1)
|
||||||
f.Legacy:SetText("Legacy")
|
f.Legacy:SetText("Legacy")
|
||||||
@@ -179,8 +176,7 @@ pfUI:RegisterModule("firstrun", function ()
|
|||||||
SkinButton(f.Legacy)
|
SkinButton(f.Legacy)
|
||||||
|
|
||||||
f.Slim = CreateFrame("Button", nil, f, "UIPanelButtonTemplate")
|
f.Slim = CreateFrame("Button", nil, f, "UIPanelButtonTemplate")
|
||||||
f.Slim:SetWidth(120)
|
f.Slim:SetSize(120, 20)
|
||||||
f.Slim:SetHeight(20)
|
|
||||||
f.Slim:SetPoint("BOTTOM", -65, 75)
|
f.Slim:SetPoint("BOTTOM", -65, 75)
|
||||||
f.Slim:SetTextColor(1,1,1)
|
f.Slim:SetTextColor(1,1,1)
|
||||||
f.Slim:SetText("Slim")
|
f.Slim:SetText("Slim")
|
||||||
@@ -197,8 +193,7 @@ pfUI:RegisterModule("firstrun", function ()
|
|||||||
f.Slider.text:SetPoint("TOP", f.Slider, "BOTTOM", 0, 2)
|
f.Slider.text:SetPoint("TOP", f.Slider, "BOTTOM", 0, 2)
|
||||||
f.Slider.text:SetText(T["Scale"])
|
f.Slider.text:SetText(T["Scale"])
|
||||||
|
|
||||||
f.Slider:SetWidth(240)
|
f.Slider:SetSize(240, 20)
|
||||||
f.Slider:SetHeight(20)
|
|
||||||
f.Slider:SetPoint("BOTTOM", 0, 50)
|
f.Slider:SetPoint("BOTTOM", 0, 50)
|
||||||
f.Slider:SetOrientation('HORIZONTAL')
|
f.Slider:SetOrientation('HORIZONTAL')
|
||||||
f.Slider:SetMinMaxValues(0.5, 2.0)
|
f.Slider:SetMinMaxValues(0.5, 2.0)
|
||||||
|
|||||||
+1
-1
@@ -181,7 +181,7 @@ pfUI:RegisterModule("map", function ()
|
|||||||
end
|
end
|
||||||
|
|
||||||
if mx and my and MouseIsOver(WorldMapButton) then
|
if mx and my and MouseIsOver(WorldMapButton) then
|
||||||
WorldMapButton.coords.text:SetText(string.format('%.1f / %.1f', mx, my))
|
WorldMapButton.coords.text:SetFormattedText('%.1f / %.1f', mx, my)
|
||||||
else
|
else
|
||||||
WorldMapButton.coords.text:SetText("")
|
WorldMapButton.coords.text:SetText("")
|
||||||
end
|
end
|
||||||
|
|||||||
+1
-1
@@ -138,7 +138,7 @@ pfUI:RegisterModule("minimap", function ()
|
|||||||
local coord = pfUI.minimapCoordinates
|
local coord = pfUI.minimapCoordinates
|
||||||
coord.posX, coord.posY = GetPlayerMapPosition("player")
|
coord.posX, coord.posY = GetPlayerMapPosition("player")
|
||||||
if coord.posX ~= 0 and coord.posY ~= 0 then
|
if coord.posX ~= 0 and coord.posY ~= 0 then
|
||||||
coord.text:SetText(string.format("%.1f, %.1f", round(coord.posX * 100, 1), round(coord.posY * 100, 1)))
|
coord.text:SetFormattedText("%.1f, %.1f", round(coord.posX * 100, 1), round(coord.posY * 100, 1))
|
||||||
else
|
else
|
||||||
coord.text:SetText("|cffffaaaaN/A")
|
coord.text:SetText("|cffffaaaaN/A")
|
||||||
end
|
end
|
||||||
|
|||||||
+76
-36
@@ -1151,15 +1151,24 @@ nameplates:RegisterEvent("PLAYER_GUILD_UPDATE")
|
|||||||
if plate.cache.level ~= level or plate.cache.elite ~= elite then
|
if plate.cache.level ~= level or plate.cache.elite ~= elite then
|
||||||
plate.cache.level = level
|
plate.cache.level = level
|
||||||
plate.cache.elite = elite
|
plate.cache.elite = elite
|
||||||
plate.level:SetText(string.format("%s%s", level, (elitestrings[elite] or "")))
|
plate.level:SetFormattedText("%s%s", level, (elitestrings[elite] or ""))
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Set level color from GetDifficultyColor when using DB level
|
-- Set level color from GetDifficultyColor when using DB level.
|
||||||
|
-- No brightening here: adding a flat offset to all three channels
|
||||||
|
-- desaturates every tier toward white and collapses the boundaries
|
||||||
|
-- (orange reads as yellow, red reads as orange). Use Blizzard's values.
|
||||||
|
-- Clearing cache.levelcolor forces the sync block in OnUpdate to
|
||||||
|
-- re-colour once the ?? resolves and it takes ownership again.
|
||||||
if levelFromDB and type(level) == "number" then
|
if levelFromDB and type(level) == "number" then
|
||||||
local color = GetDifficultyColor(level)
|
local color = GetDifficultyColor(level)
|
||||||
plate.level:SetTextColor(color.r + 0.3, color.g + 0.3, color.b + 0.3, 1)
|
plate.level:SetTextColor(color.r, color.g, color.b, 1)
|
||||||
|
plate.cache.levelcolor = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- remember who owns the level colour so the two writers cannot fight
|
||||||
|
plate.cache.levelfromdb = levelFromDB or nil
|
||||||
|
|
||||||
if guild and C.nameplates.showguildname == "1" then
|
if guild and C.nameplates.showguildname == "1" then
|
||||||
plate.guild:SetText(guild)
|
plate.guild:SetText(guild)
|
||||||
if guild == myGuild then
|
if guild == myGuild then
|
||||||
@@ -1203,21 +1212,21 @@ nameplates:RegisterEvent("PLAYER_GUILD_UPDATE")
|
|||||||
local hasdata = ( rhp and rhpmax ) or estimated or hpmax > 100 or (round(hpmax/100*hp) ~= hp)
|
local hasdata = ( rhp and rhpmax ) or estimated or hpmax > 100 or (round(hpmax/100*hp) ~= hp)
|
||||||
|
|
||||||
if setting == "curperc" and hasdata and rhp then
|
if setting == "curperc" and hasdata and rhp then
|
||||||
plate.health.text:SetText(string.format("%s | %s%%", Abbreviate(rhp), ceil(hp/hpmax*100)))
|
plate.health.text:SetFormattedText("%s | %s%%", Abbreviate(rhp), ceil(hp/hpmax*100))
|
||||||
elseif setting == "cur" and hasdata and rhp then
|
elseif setting == "cur" and hasdata and rhp then
|
||||||
plate.health.text:SetText(string.format("%s", Abbreviate(rhp)))
|
plate.health.text:SetFormattedText("%s", Abbreviate(rhp))
|
||||||
elseif setting == "curmax" and hasdata and rhp then
|
elseif setting == "curmax" and hasdata and rhp then
|
||||||
plate.health.text:SetText(string.format("%s - %s", Abbreviate(rhp), Abbreviate(rhpmax)))
|
plate.health.text:SetFormattedText("%s - %s", Abbreviate(rhp), Abbreviate(rhpmax))
|
||||||
elseif setting == "curmaxs" and hasdata and rhp then
|
elseif setting == "curmaxs" and hasdata and rhp then
|
||||||
plate.health.text:SetText(string.format("%s / %s", Abbreviate(rhp), Abbreviate(rhpmax)))
|
plate.health.text:SetFormattedText("%s / %s", Abbreviate(rhp), Abbreviate(rhpmax))
|
||||||
elseif setting == "curmaxperc" and hasdata and rhp then
|
elseif setting == "curmaxperc" and hasdata and rhp then
|
||||||
plate.health.text:SetText(string.format("%s - %s | %s%%", Abbreviate(rhp), Abbreviate(rhpmax), ceil(hp/hpmax*100)))
|
plate.health.text:SetFormattedText("%s - %s | %s%%", Abbreviate(rhp), Abbreviate(rhpmax), ceil(hp/hpmax*100))
|
||||||
elseif setting == "curmaxpercs" and hasdata and rhp then
|
elseif setting == "curmaxpercs" and hasdata and rhp then
|
||||||
plate.health.text:SetText(string.format("%s / %s | %s%%", Abbreviate(rhp), Abbreviate(rhpmax), ceil(hp/hpmax*100)))
|
plate.health.text:SetFormattedText("%s / %s | %s%%", Abbreviate(rhp), Abbreviate(rhpmax), ceil(hp/hpmax*100))
|
||||||
elseif setting == "deficit" and rhp then
|
elseif setting == "deficit" and rhp then
|
||||||
plate.health.text:SetText(string.format("-%s" .. (hasdata and "" or "%%"), Abbreviate(rhpmax - rhp)))
|
plate.health.text:SetFormattedText("-%s" .. (hasdata and "" or "%%"), Abbreviate(rhpmax - rhp))
|
||||||
else -- "percent" as fallback
|
else -- "percent" as fallback
|
||||||
plate.health.text:SetText(string.format("%s%%", ceil(hp/hpmax*100)))
|
plate.health.text:SetFormattedText("%s%%", ceil(hp/hpmax*100))
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
plate.health.text:SetText()
|
plate.health.text:SetText()
|
||||||
@@ -1251,9 +1260,32 @@ nameplates:RegisterEvent("PLAYER_GUILD_UPDATE")
|
|||||||
plate.cache.r, plate.cache.g, plate.cache.b = r, g, b
|
plate.cache.r, plate.cache.g, plate.cache.b = r, g, b
|
||||||
end
|
end
|
||||||
|
|
||||||
if r + g + b ~= plate.cache.namecolor and unittype == "FRIENDLY_PLAYER" and C.nameplates["friendclassnamec"] == "1" and class and PFUI_CLASS_COLORS[class] then
|
-- Friendly player names take this colour when friendclassnamec is on.
|
||||||
plate.name:SetTextColor(r, g, b, a)
|
-- Ownership is recorded so the OnUpdate sync below stands down rather than
|
||||||
plate.cache.namecolor = r + g + b
|
-- racing us: both writers used to share cache.namecolor despite storing
|
||||||
|
-- unrelated quantities (this colour vs Blizzard's name FontString), so
|
||||||
|
-- either could suppress the other -- and since nameplate.cache survives
|
||||||
|
-- pool reuse, a recycled plate could keep the previous unit's name colour.
|
||||||
|
local ownname = unittype == "FRIENDLY_PLAYER" and C.nameplates["friendclassnamec"] == "1"
|
||||||
|
and class and true or nil
|
||||||
|
|
||||||
|
if plate.cache.ownname ~= ownname then
|
||||||
|
plate.cache.ownname = ownname
|
||||||
|
-- ownership flipped: whichever writer is now in charge must re-assert
|
||||||
|
plate.cache.namecolor = nil
|
||||||
|
plate.cache.ownnamecolor = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
-- read the class colour directly rather than reusing the bar's r,g,b: the
|
||||||
|
-- bar only carries a class colour when friendclassc happens to be on, and
|
||||||
|
-- it also picks up the tapped-grey and barcombatstate overrides, neither of
|
||||||
|
-- which belongs on the name.
|
||||||
|
if ownname then
|
||||||
|
local cr, cg, cb, ca = PFUI_CLASS_COLORS[class]:GetRGBA()
|
||||||
|
if cr + cg + cb ~= plate.cache.ownnamecolor then
|
||||||
|
plate.cache.ownnamecolor = cr + cg + cb
|
||||||
|
plate.name:SetTextColor(cr, cg, cb, ca)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if target and C.nameplates.cpdisplay == "1" then
|
if target and C.nameplates.cpdisplay == "1" then
|
||||||
@@ -1521,33 +1553,41 @@ nameplates:RegisterEvent("PLAYER_GUILD_UPDATE")
|
|||||||
update = true
|
update = true
|
||||||
end
|
end
|
||||||
|
|
||||||
-- trigger update when name color changed (includes combat state check)
|
-- trigger update when name color changed (includes combat state check).
|
||||||
local r, g, b = original.name:GetTextColor()
|
-- Skipped once OnDataChanged owns the name colour (class-coloured friendly
|
||||||
local inCombatWithPlayer = cfg.namefightcolor and UnitAffectingCombat(nameplate.unit) and UnitAffectingCombat("player")
|
-- players), so the two writers cannot overwrite each other.
|
||||||
|
if not nameplate.cache.ownname then
|
||||||
if r + g + b ~= nameplate.cache.namecolor or (cfg.namefightcolor and nameplate.cache.inCombat ~= inCombatWithPlayer) then
|
local r, g, b = original.name:GetTextColor()
|
||||||
nameplate.cache.namecolor = r + g + b
|
local inCombatWithPlayer = cfg.namefightcolor and UnitAffectingCombat(nameplate.unit) and UnitAffectingCombat("player")
|
||||||
nameplate.cache.inCombat = inCombatWithPlayer
|
|
||||||
|
|
||||||
if cfg.namefightcolor then
|
if r + g + b ~= nameplate.cache.namecolor or (cfg.namefightcolor and nameplate.cache.inCombat ~= inCombatWithPlayer) then
|
||||||
if (r > .9 and g < .2 and b < .2) or inCombatWithPlayer then
|
nameplate.cache.namecolor = r + g + b
|
||||||
nameplate.name:SetTextColor(1,0.4,0.2,1)
|
nameplate.cache.inCombat = inCombatWithPlayer
|
||||||
|
|
||||||
|
if cfg.namefightcolor then
|
||||||
|
if (r > .9 and g < .2 and b < .2) or inCombatWithPlayer then
|
||||||
|
nameplate.name:SetTextColor(1,0.4,0.2,1)
|
||||||
|
else
|
||||||
|
nameplate.name:SetTextColor(r,g,b,1)
|
||||||
|
end
|
||||||
else
|
else
|
||||||
nameplate.name:SetTextColor(r,g,b,1)
|
nameplate.name:SetTextColor(1,1,1,1)
|
||||||
end
|
end
|
||||||
else
|
update = true
|
||||||
nameplate.name:SetTextColor(1,1,1,1)
|
|
||||||
end
|
end
|
||||||
update = true
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- trigger update when level color changed
|
-- trigger update when level color changed. Skipped while the level came
|
||||||
local r, g, b = original.level:GetTextColor()
|
-- from the database (?? plates), where OnDataChanged owns the colour --
|
||||||
r, g, b = r + .3, g + .3, b + .3
|
-- otherwise both writers race and cache.levelcolor goes stale, which
|
||||||
if r + g + b ~= nameplate.cache.levelcolor then
|
-- leaves a recycled plate wearing the previous unit's colour.
|
||||||
nameplate.cache.levelcolor = r + g + b
|
if not nameplate.cache.levelfromdb then
|
||||||
nameplate.level:SetTextColor(r,g,b,1)
|
local r, g, b = original.level:GetTextColor()
|
||||||
update = true
|
if r + g + b ~= nameplate.cache.levelcolor then
|
||||||
|
nameplate.cache.levelcolor = r + g + b
|
||||||
|
nameplate.level:SetTextColor(r,g,b,1)
|
||||||
|
update = true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- use timer based updates
|
-- use timer based updates
|
||||||
@@ -1657,7 +1697,7 @@ nameplates:RegisterEvent("PLAYER_GUILD_UPDATE")
|
|||||||
rounded = floor(remaining * 100)
|
rounded = floor(remaining * 100)
|
||||||
if castbar.lastTextTick ~= rounded then
|
if castbar.lastTextTick ~= rounded then
|
||||||
castbar.lastTextTick = rounded
|
castbar.lastTextTick = rounded
|
||||||
castbar.text:SetText(string.format("%.2f", remaining))
|
castbar.text:SetFormattedText("%.2f", remaining)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+7
-3
@@ -418,8 +418,13 @@ pfUI:RegisterModule("panel", function()
|
|||||||
local repPercent = floor(cur / max * 100)
|
local repPercent = floor(cur / max * 100)
|
||||||
if repPercent < 100 then
|
if repPercent < 100 then
|
||||||
local _, _, _, hex = GetColorGradient(repPercent/100)
|
local _, _, _, hex = GetColorGradient(repPercent/100)
|
||||||
|
local link = GetInventoryItemLink("player", id)
|
||||||
|
local texture = GetInventoryItemTexture("player", id)
|
||||||
|
if texture then
|
||||||
|
link = CreateSimpleTextureMarkup(texture, 24) .. " " .. link
|
||||||
|
end
|
||||||
itemLines[table.getn(itemLines)+1] = {
|
itemLines[table.getn(itemLines)+1] = {
|
||||||
GetInventoryItemLink("player", id),
|
link,
|
||||||
string.format("%s%s%%|r", hex, repPercent)
|
string.format("%s%s%%|r", hex, repPercent)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
@@ -428,8 +433,7 @@ pfUI:RegisterModule("panel", function()
|
|||||||
if totalRep > 0 then
|
if totalRep > 0 then
|
||||||
GameTooltip:ClearLines()
|
GameTooltip:ClearLines()
|
||||||
GameTooltip_SetDefaultAnchor(GameTooltip, this)
|
GameTooltip_SetDefaultAnchor(GameTooltip, this)
|
||||||
GameTooltip:SetText("|cff555555"..(string.gsub(REPAIR_COST,":","")).."|r")
|
GameTooltip:AddLine(REPAIR_COST.." " .. CreateGoldString(totalRep), 0.3333, 0.3333, 0.3333)
|
||||||
SetTooltipMoney(GameTooltip, totalRep)
|
|
||||||
for _,line in ipairs(itemLines) do
|
for _,line in ipairs(itemLines) do
|
||||||
GameTooltip:AddDoubleLine(line[1],line[2])
|
GameTooltip:AddDoubleLine(line[1],line[2])
|
||||||
end
|
end
|
||||||
|
|||||||
+24
-2
@@ -125,6 +125,7 @@ pfUI:RegisterModule("raid", function ()
|
|||||||
local grid = self.petgrid
|
local grid = self.petgrid
|
||||||
|
|
||||||
local function place(pet, cell, id)
|
local function place(pet, cell, id)
|
||||||
|
pet.label = "raidpet"
|
||||||
pet.id = id
|
pet.id = id
|
||||||
local r, g = SlotToCoord(cell, grid.fill, grid.x, grid.y)
|
local r, g = SlotToCoord(cell, grid.fill, grid.x, grid.y)
|
||||||
pet:ClearAllPoints()
|
pet:ClearAllPoints()
|
||||||
@@ -140,6 +141,22 @@ pfUI:RegisterModule("raid", function ()
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Party shown as a raid grid: mirror slots 1..5 (player + party members)
|
||||||
|
-- into fixed cells. UpdateVisibility maps each slot to pet / partypet<N>.
|
||||||
|
if not IsInRaid() and IsInGroup() and C.unitframes.raidforgroup == "1" then
|
||||||
|
for id = 1, maxraid do
|
||||||
|
if self.pets[id] then
|
||||||
|
if id <= 5 then
|
||||||
|
place(self.pets[id], id, id)
|
||||||
|
else
|
||||||
|
self.pets[id].id = 0
|
||||||
|
self.pets[id]:Hide()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
if C.unitframes.raidpet.collapse == "1" then
|
if C.unitframes.raidpet.collapse == "1" then
|
||||||
-- Pack the pets that exist into the leading cells, no gaps.
|
-- Pack the pets that exist into the leading cells, no gaps.
|
||||||
local k = 0
|
local k = 0
|
||||||
@@ -213,8 +230,13 @@ pfUI:RegisterModule("raid", function ()
|
|||||||
this.tick = GetTime() + 1.0
|
this.tick = GetTime() + 1.0
|
||||||
this.pendingUpdate = nil
|
this.pendingUpdate = nil
|
||||||
|
|
||||||
-- don't proceed without raid
|
-- Without a raid there is nothing to sort, but a party shown as a raid
|
||||||
if not IsInRaid() then return end
|
-- grid still needs its pet frames placed and mapped to the party pets.
|
||||||
|
if not IsInRaid() then
|
||||||
|
this:LayoutPets()
|
||||||
|
this:Hide()
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
-- clear all existing frames
|
-- clear all existing frames
|
||||||
for i=1, maxraid do SetRaidIndex(pfUI.uf.raid[i], 0) end
|
for i=1, maxraid do SetRaidIndex(pfUI.uf.raid[i], 0) end
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ pfUI:RegisterModule("screenshot", function ()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function pfUI.screenshot:CHAT_MSG_SYSTEM()
|
function pfUI.screenshot:CHAT_MSG_SYSTEM()
|
||||||
local _,_, standing, rep = string.find(arg1, FACTION_STANDING_CHANGEDregex)
|
local standing, rep = string.match(arg1, FACTION_STANDING_CHANGEDregex)
|
||||||
if standing and rep then
|
if standing and rep then
|
||||||
local dt = date("%a, %b %d, %Y %X")
|
local dt = date("%a, %b %d, %Y %X")
|
||||||
local loc = string.format("%s - %s",GetRealZoneText(),GetSubZoneText())
|
local loc = string.format("%s - %s",GetRealZoneText(),GetSubZoneText())
|
||||||
@@ -150,13 +150,13 @@ pfUI:RegisterModule("screenshot", function ()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function pfUI.screenshot:CHAT_MSG_LOOT()
|
function pfUI.screenshot:CHAT_MSG_LOOT()
|
||||||
local _,_, item, amount = string.find(arg1, LOOT_ITEM_SELF_MULTIPLEregex)
|
local item, amount = string.match(arg1, LOOT_ITEM_SELF_MULTIPLEregex)
|
||||||
if amount then -- ignore stacks
|
if amount then -- ignore stacks
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
_,_, item = string.find(arg1, LOOT_ITEM_SELFregex)
|
item = string.match(arg1, LOOT_ITEM_SELFregex)
|
||||||
if item then
|
if item then
|
||||||
local _, _, itemColor, itemString, itemName = string.find(item, "^(|c%x+)|H(.+)|h(%[.+%])")
|
local itemColor, itemString, itemName = string.match(item, "^(|c%x+)|H(.+)|h(%[.+%])")
|
||||||
local quality = color2quality[itemColor]
|
local quality = color2quality[itemColor]
|
||||||
if quality and quality >= tonumber(C.screenshot.loot) then
|
if quality and quality >= tonumber(C.screenshot.loot) then
|
||||||
local dt = date("%a, %b %d, %Y %X")
|
local dt = date("%a, %b %d, %Y %X")
|
||||||
|
|||||||
@@ -97,20 +97,20 @@ pfUI:RegisterModule("socialmod", function ()
|
|||||||
|
|
||||||
if friendName then
|
if friendName then
|
||||||
friendName:SetText(cname)
|
friendName:SetText(cname)
|
||||||
friendLoc:SetText(format(TEXT(FRIENDS_LIST_TEMPLATE), zone, status))
|
friendLoc:SetFormattedText(TEXT(FRIENDS_LIST_TEMPLATE), zone, status)
|
||||||
else
|
else
|
||||||
friendLoc:SetText(format(TEXT(FRIENDS_LIST_TEMPLATE), cname, zone, status))
|
friendLoc:SetFormattedText(TEXT(FRIENDS_LIST_TEMPLATE), cname, zone, status)
|
||||||
end
|
end
|
||||||
|
|
||||||
friendInfo:SetText(format(TEXT(FRIENDS_LEVEL_TEMPLATE), info.level, info.className))
|
friendInfo:SetFormattedText(TEXT(FRIENDS_LEVEL_TEMPLATE), info.level, info.className)
|
||||||
caption:SetVertexColor(1,1,1,.9)
|
caption:SetVertexColor(1,1,1,.9)
|
||||||
friendInfo:SetVertexColor(1,1,1,.9)
|
friendInfo:SetVertexColor(1,1,1,.9)
|
||||||
else
|
else
|
||||||
if playerdb[name] and playerdb[name].cname and playerdb[name].level and playerdb[name].lastseen then
|
if playerdb[name] and playerdb[name].cname and playerdb[name].level and playerdb[name].lastseen then
|
||||||
caption:SetText(format(TEXT(FRIENDS_LIST_OFFLINE_TEMPLATE), playerdb[name].cname))
|
caption:SetFormattedText(TEXT(FRIENDS_LIST_OFFLINE_TEMPLATE), playerdb[name].cname)
|
||||||
friendInfo:SetText(format(TEXT(FRIENDS_LEVEL_TEMPLATE), playerdb[name].level, playerdb[name].lastseen))
|
friendInfo:SetFormattedText(TEXT(FRIENDS_LEVEL_TEMPLATE), playerdb[name].level, playerdb[name].lastseen)
|
||||||
else
|
else
|
||||||
caption:SetText(format(TEXT(FRIENDS_LIST_OFFLINE_TEMPLATE), name.."|r"))
|
caption:SetFormattedText(TEXT(FRIENDS_LIST_OFFLINE_TEMPLATE), name.."|r")
|
||||||
friendInfo:SetText(TEXT(UNKNOWN))
|
friendInfo:SetText(TEXT(UNKNOWN))
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -131,9 +131,9 @@ pfUI:RegisterModule("socialmod", function ()
|
|||||||
local playerguild = GetGuildInfo("player")
|
local playerguild = GetGuildInfo("player")
|
||||||
|
|
||||||
if num + 1 >= MAX_WHOS_FROM_SERVER then
|
if num + 1 >= MAX_WHOS_FROM_SERVER then
|
||||||
WhoFrameTotals:SetText("|cffffffff" .. format(GetText("WHO_FRAME_TOTAL_TEMPLATE", nil, num), max).." |cffaaaaaa"..format(WHO_FRAME_SHOWN_TEMPLATE, MAX_WHOS_FROM_SERVER))
|
WhoFrameTotals:SetFormattedText("|cffffffff" .. GetText("WHO_FRAME_TOTAL_TEMPLATE", nil, num) .. " |cffaaaaaa" .. WHO_FRAME_SHOWN_TEMPLATE, max, MAX_WHOS_FROM_SERVER)
|
||||||
else
|
else
|
||||||
WhoFrameTotals:SetText("|cffffffff" .. format(GetText("WHO_FRAME_TOTAL_TEMPLATE", nil, num), num).." |cffaaaaaa"..format(WHO_FRAME_SHOWN_TEMPLATE, num))
|
WhoFrameTotals:SetFormattedText("|cffffffff" .. GetText("WHO_FRAME_TOTAL_TEMPLATE", nil, num) .. " |cffaaaaaa" .. WHO_FRAME_SHOWN_TEMPLATE, num, num)
|
||||||
end
|
end
|
||||||
|
|
||||||
for i=1, WHOS_TO_DISPLAY do
|
for i=1, WHOS_TO_DISPLAY do
|
||||||
|
|||||||
@@ -592,10 +592,10 @@ pfUI:RegisterModule("swingtimer", function ()
|
|||||||
end
|
end
|
||||||
pfUI.swingtimer.mainhand:SetStatusBarColor(curR, curG, curB, mhA)
|
pfUI.swingtimer.mainhand:SetStatusBarColor(curR, curG, curB, mhA)
|
||||||
if sw_showtext then
|
if sw_showtext then
|
||||||
pfUI.swingtimer.mainhand.text:SetText(string.format("%.1f", math.floor(S.mhTimer * 10) / 10))
|
pfUI.swingtimer.mainhand.text:SetFormattedText("%.1f", math.floor(S.mhTimer * 10) / 10)
|
||||||
end
|
end
|
||||||
if sw_showspeed and S.mhSpeed > 0 then
|
if sw_showspeed and S.mhSpeed > 0 then
|
||||||
pfUI.swingtimer.mainhand.speed:SetText(string.format("%.2f", S.mhSpeed))
|
pfUI.swingtimer.mainhand.speed:SetFormattedText("%.2f", S.mhSpeed)
|
||||||
end
|
end
|
||||||
anyActive = true
|
anyActive = true
|
||||||
end
|
end
|
||||||
@@ -626,10 +626,10 @@ pfUI:RegisterModule("swingtimer", function ()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
if sw_showtext then
|
if sw_showtext then
|
||||||
pfUI.swingtimer.offhand.text:SetText(string.format("%.1f", math.floor(S.ohTimer * 10) / 10))
|
pfUI.swingtimer.offhand.text:SetFormattedText("%.1f", math.floor(S.ohTimer * 10) / 10)
|
||||||
end
|
end
|
||||||
if sw_showspeed and S.ohSpeed > 0 then
|
if sw_showspeed and S.ohSpeed > 0 then
|
||||||
pfUI.swingtimer.offhand.speed:SetText(string.format("%.2f", S.ohSpeed))
|
pfUI.swingtimer.offhand.speed:SetFormattedText("%.2f", S.ohSpeed)
|
||||||
end
|
end
|
||||||
anyActive = true
|
anyActive = true
|
||||||
elseif not sw_showoh then
|
elseif not sw_showoh then
|
||||||
@@ -668,9 +668,9 @@ pfUI:RegisterModule("swingtimer", function ()
|
|||||||
end
|
end
|
||||||
if sw_showtext then
|
if sw_showtext then
|
||||||
if remaining <= 0.5 then
|
if remaining <= 0.5 then
|
||||||
pfUI.swingtimer.ranged.text:SetText(string.format("%.1f", math.floor(remaining * 10) / 10))
|
pfUI.swingtimer.ranged.text:SetFormattedText("%.1f", math.floor(remaining * 10) / 10)
|
||||||
else
|
else
|
||||||
pfUI.swingtimer.ranged.text:SetText(string.format("%.1f", math.floor((remaining - 0.5) * 10) / 10))
|
pfUI.swingtimer.ranged.text:SetFormattedText("%.1f", math.floor((remaining - 0.5) * 10) / 10)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@@ -683,11 +683,11 @@ pfUI:RegisterModule("swingtimer", function ()
|
|||||||
pfUI.swingtimer.ranged.right:Hide()
|
pfUI.swingtimer.ranged.right:Hide()
|
||||||
pfUI.swingtimer.ranged.warn:Hide()
|
pfUI.swingtimer.ranged.warn:Hide()
|
||||||
if sw_showtext then
|
if sw_showtext then
|
||||||
pfUI.swingtimer.ranged.text:SetText(string.format("%.1f", math.floor(remaining * 10) / 10))
|
pfUI.swingtimer.ranged.text:SetFormattedText("%.1f", math.floor(remaining * 10) / 10)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if sw_showspeed and S.raSpeed > 0 then
|
if sw_showspeed and S.raSpeed > 0 then
|
||||||
pfUI.swingtimer.ranged.speed:SetText(string.format("%.2f", S.raSpeed))
|
pfUI.swingtimer.ranged.speed:SetFormattedText("%.2f", S.raSpeed)
|
||||||
end
|
end
|
||||||
local raProgress = 1 - (S.raTimer / S.raTimerMax)
|
local raProgress = 1 - (S.raTimer / S.raTimerMax)
|
||||||
local raMarkerX = raProgress * sw_width
|
local raMarkerX = raProgress * sw_width
|
||||||
|
|||||||
+11
-2
@@ -166,9 +166,9 @@ pfUI:RegisterModule("tooltip", function ()
|
|||||||
end
|
end
|
||||||
|
|
||||||
if C.tooltip.alwaysperc == "0" and ( estimated or hpmax > 100 or round(hpmax/100*hp) ~= hp ) then
|
if C.tooltip.alwaysperc == "0" and ( estimated or hpmax > 100 or round(hpmax/100*hp) ~= hp ) then
|
||||||
pfUI.tooltipStatusBar.HP:SetText(string.format("%s / %s", Abbreviate(rhp), Abbreviate(rhpmax)))
|
pfUI.tooltipStatusBar.HP:SetFormattedText("%s / %s", Abbreviate(rhp), Abbreviate(rhpmax))
|
||||||
elseif hpmax > 0 then
|
elseif hpmax > 0 then
|
||||||
pfUI.tooltipStatusBar.HP:SetText(string.format("%s%%", ceil(hp/hpmax*100)))
|
pfUI.tooltipStatusBar.HP:SetFormattedText("%s%%", ceil(hp/hpmax*100))
|
||||||
else
|
else
|
||||||
pfUI.tooltipStatusBar.HP:SetText("")
|
pfUI.tooltipStatusBar.HP:SetText("")
|
||||||
end
|
end
|
||||||
@@ -372,6 +372,15 @@ pfUI:RegisterModule("tooltip", function ()
|
|||||||
caster = UnitNameFromGUID(aura.sourceGUID)
|
caster = UnitNameFromGUID(aura.sourceGUID)
|
||||||
end
|
end
|
||||||
if caster and caster ~= "" then
|
if caster and caster ~= "" then
|
||||||
|
local classToken
|
||||||
|
if aura.sourceUnit and UnitIsPlayer(aura.sourceUnit) then
|
||||||
|
classToken = UnitClassBase(aura.sourceUnit)
|
||||||
|
elseif aura.sourceGUID then
|
||||||
|
classToken = select(2, GetPlayerInfoByGUID(aura.sourceGUID))
|
||||||
|
end
|
||||||
|
if classToken then
|
||||||
|
caster = PFUI_CLASS_COLORS[classToken]:WrapTextInColorCode(caster)
|
||||||
|
end
|
||||||
self:AddLine(T["Cast by"] .. ": " .. caster, .25,.5,1)
|
self:AddLine(T["Cast by"] .. ": " .. caster, .25,.5,1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+2
-2
@@ -134,7 +134,7 @@ pfUI:RegisterModule("unitxp", function ()
|
|||||||
end
|
end
|
||||||
|
|
||||||
this.text:SetTextColor(r, g, b, 1)
|
this.text:SetTextColor(r, g, b, 1)
|
||||||
this.text:SetText(string.format("%.1f%s", distance, suffix))
|
this.text:SetFormattedText("%.1f%s", distance, suffix)
|
||||||
this.text:Show()
|
this.text:Show()
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@@ -206,7 +206,7 @@ pfUI:RegisterModule("unitxp", function ()
|
|||||||
end
|
end
|
||||||
|
|
||||||
f.text:SetTextColor(r, g, b, 1)
|
f.text:SetTextColor(r, g, b, 1)
|
||||||
f.text:SetText(string.format("%.1f%s", distance, suffix))
|
f.text:SetFormattedText("%.1f%s", distance, suffix)
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
pfUI.uf.target.distanceIndicator = pfRangeDisplay
|
pfUI.uf.target.distanceIndicator = pfRangeDisplay
|
||||||
|
|||||||
+3
-3
@@ -236,7 +236,7 @@ end
|
|||||||
local xpperc = round(xp / xpmax * 100)
|
local xpperc = round(xp / xpmax * 100)
|
||||||
local experc = ex and round(ex / xpmax * 100) or 0
|
local experc = ex and round(ex / xpmax * 100) or 0
|
||||||
if ex then text = "%s: %s%% (%s%% %s)" end
|
if ex then text = "%s: %s%% (%s%% %s)" end
|
||||||
self.bar.text:SetText(string.format(text, T["Experience"], xpperc, experc, T["Rested"]))
|
self.bar.text:SetFormattedText(text, T["Experience"], xpperc, experc, T["Rested"])
|
||||||
|
|
||||||
self.tick = GetTime() + self.timeout
|
self.tick = GetTime() + self.timeout
|
||||||
if event == "UPDATE_EXHAUSTION" and GameTooltip:IsOwned(self) then
|
if event == "UPDATE_EXHAUSTION" and GameTooltip:IsOwned(self) then
|
||||||
@@ -254,7 +254,7 @@ end
|
|||||||
|
|
||||||
local text = "%s: %s%%"
|
local text = "%s: %s%%"
|
||||||
local xpperc = nextXP and nextXP ~= 0 and round(currXP / nextXP * 100) or 0
|
local xpperc = nextXP and nextXP ~= 0 and round(currXP / nextXP * 100) or 0
|
||||||
self.bar.text:SetText(string.format(text, T["Pet Experience"], xpperc))
|
self.bar.text:SetFormattedText(text, T["Pet Experience"], xpperc)
|
||||||
|
|
||||||
self.tick = GetTime() + self.timeout
|
self.tick = GetTime() + self.timeout
|
||||||
return
|
return
|
||||||
@@ -282,7 +282,7 @@ end
|
|||||||
local text = "%s: %s%% (%s)"
|
local text = "%s: %s%% (%s)"
|
||||||
local perc = round(barValue / barMax * 100)
|
local perc = round(barValue / barMax * 100)
|
||||||
local standing = GetText("FACTION_STANDING_LABEL"..standingID, gender)
|
local standing = GetText("FACTION_STANDING_LABEL"..standingID, gender)
|
||||||
self.bar.text:SetText(string.format(text, name, perc, standing))
|
self.bar.text:SetFormattedText(text, name, perc, standing)
|
||||||
|
|
||||||
self.tick = GetTime() + self.timeout
|
self.tick = GetTime() + self.timeout
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ do
|
|||||||
-- ClassicAPI dependency check.
|
-- ClassicAPI dependency check.
|
||||||
-- pfUI relies pervasively on the modern C_* / SuperWoW / nameplate / focus
|
-- pfUI relies pervasively on the modern C_* / SuperWoW / nameplate / focus
|
||||||
-- API surface that ClassicAPI polyfills, so presence is required.
|
-- API surface that ClassicAPI polyfills, so presence is required.
|
||||||
local PFUI_CLASSIC_API_MIN = 10906 -- (X*10000 + Y*100 + Z)
|
local PFUI_CLASSIC_API_MIN = 11100 -- (X*10000 + Y*100 + Z)
|
||||||
local PFUI_CLASSIC_API_LATEST = PFUI_CLASSIC_API_MIN
|
local PFUI_CLASSIC_API_LATEST = PFUI_CLASSIC_API_MIN
|
||||||
local PFUI_CLASSIC_API_WEBSITE = "https://github.com/brues-code/ClassicAPI"
|
local PFUI_CLASSIC_API_WEBSITE = "https://github.com/brues-code/ClassicAPI"
|
||||||
local PFUI_CLASSIC_API_LATEST_URL = PFUI_CLASSIC_API_WEBSITE .. "/releases/latest"
|
local PFUI_CLASSIC_API_LATEST_URL = PFUI_CLASSIC_API_WEBSITE .. "/releases/latest"
|
||||||
@@ -110,6 +110,14 @@ pfUI.movables = {}
|
|||||||
pfUI.version = {}
|
pfUI.version = {}
|
||||||
pfUI.env = {}
|
pfUI.env = {}
|
||||||
|
|
||||||
|
-- Capability flag: this fork's pfActionBar buttons correctly handle the modern
|
||||||
|
-- HookScript widget method, so ClassicAPI's AddOnCompat shim must NOT shadow
|
||||||
|
-- HookScript during actionbar load (older forks branch on `if button.HookScript`
|
||||||
|
-- and take a modern path they were never written for). This describes behavior,
|
||||||
|
-- not identity: a fork that keeps the HookScript-correct actionbar code keeps
|
||||||
|
-- the flag; one that lacks it should drop the flag and get the safe fallback.
|
||||||
|
pfUI.handlesHookScript = true
|
||||||
|
|
||||||
if not pfUI.disabled then
|
if not pfUI.disabled then
|
||||||
pfUI.events = Mixin({}, CallbackRegistryMixin)
|
pfUI.events = Mixin({}, CallbackRegistryMixin)
|
||||||
pfUI.events:OnLoad()
|
pfUI.events:OnLoad()
|
||||||
@@ -293,6 +301,20 @@ function pfUI:GetEnvironment()
|
|||||||
pfUI.env.pfUI_throttle = _G.pfUI_throttle
|
pfUI.env.pfUI_throttle = _G.pfUI_throttle
|
||||||
pfUI.env.L = (pfUI_locale[GetLocale()] or pfUI_locale["enUS"])
|
pfUI.env.L = (pfUI_locale[GetLocale()] or pfUI_locale["enUS"])
|
||||||
pfUI.env.L["class"] = pfUI.env.L["class"] or tInvert(LOCALIZED_CLASS_NAMES_MALE)
|
pfUI.env.L["class"] = pfUI.env.L["class"] or tInvert(LOCALIZED_CLASS_NAMES_MALE)
|
||||||
|
if not pfUI.env.L["race"] then
|
||||||
|
pfUI.env.L["race"] = {}
|
||||||
|
local i = 1
|
||||||
|
local raceInfo = C_CreatureInfo.GetRaceInfo(i)
|
||||||
|
while raceInfo ~= nil do
|
||||||
|
pfUI.env.L["race"][raceInfo.clientFileString] = {
|
||||||
|
raceName = raceInfo.raceName,
|
||||||
|
raceID = raceInfo.raceID,
|
||||||
|
faction = C_CreatureInfo.GetFactionInfo(i).groupTag,
|
||||||
|
}
|
||||||
|
i = i + 1
|
||||||
|
raceInfo = C_CreatureInfo.GetRaceInfo(i)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return pfUI.env
|
return pfUI.env
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
## Version: @project-version@
|
## Version: @project-version@
|
||||||
## SavedVariables: pfUI_profiles, pfUI_addon_profiles, pfUI_cache, pfUI_throttle
|
## SavedVariables: pfUI_profiles, pfUI_addon_profiles, pfUI_cache, pfUI_throttle
|
||||||
## SavedVariablesPerCharacter: pfUI_config, pfUI_init, pfUI_playerDB
|
## SavedVariablesPerCharacter: pfUI_config, pfUI_init, pfUI_playerDB
|
||||||
## Dependencies: !!!ClassicAPI
|
|
||||||
## X-Website: https://github.com/brues-code/pfUI
|
## X-Website: https://github.com/brues-code/pfUI
|
||||||
|
|
||||||
pfUI.lua
|
pfUI.lua
|
||||||
|
|||||||
@@ -295,9 +295,8 @@ pfUI:RegisterSkin("Character", function ()
|
|||||||
if faction and faction.reaction and faction.reaction < 8 then
|
if faction and faction.reaction and faction.reaction < 8 then
|
||||||
local repLeft = faction.nextReactionThreshold - faction.currentStanding
|
local repLeft = faction.nextReactionThreshold - faction.currentStanding
|
||||||
if repLeft > 1 then
|
if repLeft > 1 then
|
||||||
local text = standing:GetText() .. string.format(" (%d)", repLeft)
|
standing:SetFormattedText("%s (%d)", standing:GetText(), repLeft)
|
||||||
standing:SetText(text)
|
standing:GetParent().standingText = standing:GetText()
|
||||||
standing:GetParent().standingText = text
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ pfUI:RegisterSkin("Inspect", function ()
|
|||||||
local guild, title = GetGuildInfo(InspectFrame.unit)
|
local guild, title = GetGuildInfo(InspectFrame.unit)
|
||||||
if guild then
|
if guild then
|
||||||
InspectGuildText:SetPoint("TOP", InspectLevelText, "BOTTOM", 0, -1)
|
InspectGuildText:SetPoint("TOP", InspectLevelText, "BOTTOM", 0, -1)
|
||||||
InspectGuildText:SetText(format(TEXT(GUILD_TITLE_TEMPLATE), title, guild))
|
InspectGuildText:SetFormattedText(TEXT(GUILD_TITLE_TEMPLATE), title, guild)
|
||||||
InspectGuildText:Show()
|
InspectGuildText:Show()
|
||||||
else
|
else
|
||||||
InspectGuildText:SetText("")
|
InspectGuildText:SetText("")
|
||||||
|
|||||||
Reference in New Issue
Block a user