mirror of
https://github.com/brues-code/pfUI.git
synced 2026-10-01 11:20:01 +00:00
compat\vanilla.lua named the handful of things that differed between clients back when pfUI targeted several. Only one client remains, so every constant had exactly one value. Inline each at its use site and delete the file, init\compat.xml, and both TOC entries. COOLDOWN_FRAME_TYPE -> "Model" LOOT_BUTTON_FRAME_TYPE -> "LootButton" MINIMAP_TRACKING_FRAME -> _G.MiniMapTrackingFrame FRIENDS_NAME_LOCATION -> "ButtonTextNameLocation" EVENTS_MINIMAP_ZONE_UPDATE -> the event list, in panel.lua MICRO_BUTTONS -> a local in panel.lua NAMEPLATE_OBJECTORDER -> a local in nameplates.lua ACTIONBAR_SECURE_TEMPLATE_BAR/_BUTTON -> nil, so the argument goes away NAMEPLATE_FRAMETYPE and PLAYER_BUFF_START_ID had no readers left. RunMacroText moves to pfUI.lua. compat\vanilla.lua was setfenv'd into the pfUI environment, so the function only ever existed on pfUI.env; at file scope it lands on _G as a real export instead. Nothing in pfUI calls it, and ClassicAPI neither defines nor looks for a RunMacroText global -- it does the same throwaway edit box natively in src/macro/Execute.cpp and only defers to a global RunMacro.
143 lines
4.7 KiB
Lua
143 lines
4.7 KiB
Lua
pfUI:RegisterModule("totems", function ()
|
|
local slotColors = {
|
|
[FIRE_TOTEM_SLOT] = CreateColor(.5, .2, .1),
|
|
[EARTH_TOTEM_SLOT] = CreateColor(.2, .4, .1),
|
|
[WATER_TOTEM_SLOT] = CreateColor(.1, .4, .6),
|
|
[AIR_TOTEM_SLOT] = CreateColor(.4, .1, .7),
|
|
}
|
|
|
|
local totems = CreateFrame("Frame", "pfTotems", UIParent)
|
|
totems:RegisterEvent("PLAYER_TOTEM_UPDATE")
|
|
totems:RegisterEvent("PLAYER_ENTERING_WORLD")
|
|
totems:SetScript("OnEvent", function()
|
|
this:RefreshList()
|
|
end)
|
|
|
|
totems.OnEnter = function(self)
|
|
local id = this:GetID()
|
|
local spellID = select(7, GetTotemInfo(id))
|
|
if not spellID or spellID == 0 then return end
|
|
GameTooltip:SetOwner(this, "ANCHOR_LEFT")
|
|
GameTooltip:SetSpellByID(spellID)
|
|
GameTooltip:AddDoubleLine(T["Left Click"], T["Recast Totem"], nil, nil, nil, WHITE_FONT_COLOR:GetRGB())
|
|
GameTooltip:AddDoubleLine(T["Right Click"], T["Target Totem"], nil, nil, nil, WHITE_FONT_COLOR:GetRGB())
|
|
GameTooltip:Show()
|
|
end
|
|
|
|
totems.OnLeave = GameTooltip_Hide
|
|
|
|
totems.OnClick = function(self)
|
|
local id = this:GetID()
|
|
if arg1 == "LeftButton" then
|
|
local spellID = select(7, GetTotemInfo(id))
|
|
if spellID and spellID > 0 then CastSpell(FindSpellBookSlotByID(spellID)) end
|
|
elseif arg1 == "RightButton" then
|
|
TargetTotem(id)
|
|
end
|
|
end
|
|
|
|
totems.RefreshList = function(self)
|
|
local count = 0
|
|
for i = 1, MAX_TOTEMS do
|
|
local _, _, start, duration, icon = GetTotemInfo(i)
|
|
|
|
if start and start > 0 and icon and icon ~= "" then
|
|
count = count + 1
|
|
|
|
self.bar[count]:Show()
|
|
self.bar[count]:SetBackdropBorderColor(slotColors[i]:GetRGB())
|
|
self.bar[count].icon:SetTexture(icon)
|
|
self.bar[count]:SetID(i)
|
|
|
|
CooldownFrame_SetTimer(self.bar[count].cd, start, duration, 1)
|
|
end
|
|
end
|
|
|
|
self:UpdateSize(count)
|
|
end
|
|
|
|
totems.UpdateSize = function(self, count)
|
|
if not count or count == 0 then
|
|
-- hide entire panel
|
|
self:Hide()
|
|
else
|
|
-- hide remaining totems and show panel
|
|
for i = count + 1, MAX_TOTEMS do self.bar[i]:Hide() end
|
|
self:Show()
|
|
end
|
|
|
|
count = count and count > 0 and count or MAX_TOTEMS
|
|
|
|
local thickness = self.iconsize + self.spacing*2
|
|
local length = thickness * count
|
|
if pfUI_config.totems.direction == "HORIZONTAL" then
|
|
self:SetSize(length, thickness)
|
|
else
|
|
self:SetSize(thickness, length)
|
|
end
|
|
end
|
|
|
|
totems.UpdateConfig = function(self)
|
|
local rawborder, border = GetBorderSize()
|
|
self.iconsize = pfUI_config.totems.iconsize
|
|
self.direction = pfUI_config.totems.direction
|
|
self.spacing = tonumber(pfUI_config.totems.spacing) * GetPerfectPixel()
|
|
self.showbg = pfUI_config.totems.showbg == "1" and true or nil
|
|
|
|
for i = 1, MAX_TOTEMS do
|
|
self.bar = self.bar or {}
|
|
self.bar[i] = self.bar[i] or CreateFrame("Button", "pfTotemsBar"..i, totems)
|
|
self.bar[i]:ClearAllPoints()
|
|
|
|
if pfUI_config.totems.direction == "HORIZONTAL" then
|
|
if self.bar[i-1] then
|
|
self.bar[i]:SetPoint("LEFT", self.bar[i-1], "RIGHT", self.spacing*2, 0)
|
|
else
|
|
self.bar[i]:SetPoint("TOPLEFT", self, "TOPLEFT", self.spacing, -self.spacing)
|
|
end
|
|
else
|
|
if self.bar[i-1] then
|
|
self.bar[i]:SetPoint("TOP", self.bar[i-1], "BOTTOM", 0, -self.spacing*2)
|
|
else
|
|
self.bar[i]:SetPoint("TOPLEFT", self, "TOPLEFT", self.spacing, -self.spacing)
|
|
end
|
|
end
|
|
|
|
self.bar[i]:SetSize(self.iconsize, self.iconsize)
|
|
CreateBackdrop(self.bar[i], nil, true)
|
|
|
|
self.bar[i].icon = self.bar[i].icon or self.bar[i]:CreateTexture(nil, "ARTWORK")
|
|
self.bar[i].icon:SetTexCoord(.08, .92, .08, .92)
|
|
SetAllPointsOffset(self.bar[i].icon, self.bar[i], 2,-2)
|
|
|
|
self.bar[i].cdbg = self.bar[i].cdbg or CreateFrame("Frame", nil, self.bar[i])
|
|
self.bar[i].cdbg:SetSize(self.iconsize - 3, self.iconsize - 3)
|
|
self.bar[i].cdbg:SetPoint("CENTER", self.bar[i], "CENTER", 0, 0)
|
|
self.bar[i].cd = self.bar[i].cd or CreateFrame("Model", "pfTotemsBar"..i.."Cooldown", self.bar[i].cdbg, "CooldownFrameTemplate")
|
|
self.bar[i].cd.pfCooldownStyleAnimation = 1
|
|
self.bar[i].cd.pfCooldownType = "ALL"
|
|
|
|
self.bar[i]:RegisterForClicks("LeftButtonUp", "RightButtonUp")
|
|
self.bar[i]:SetScript("OnClick", self.OnClick)
|
|
self.bar[i]:SetScript("OnEnter", self.OnEnter)
|
|
self.bar[i]:SetScript("OnLeave", self.OnLeave)
|
|
end
|
|
|
|
self:RefreshList()
|
|
self:ClearAllPoints()
|
|
self:SetPoint("BOTTOM", 0, 75)
|
|
UpdateMovable(self, true)
|
|
|
|
if self.showbg then
|
|
CreateBackdrop(self)
|
|
self.backdrop:Show()
|
|
elseif self.backdrop then
|
|
self.backdrop:Hide()
|
|
end
|
|
end
|
|
|
|
-- add totems to the pfUI global space
|
|
pfUI.totems = totems
|
|
pfUI.totems:UpdateConfig()
|
|
end)
|