Files
coa-elvui/ElvUI/Libraries/oUF/blizzard.lua
T
Andrew 8edf2d7f8a Nameplate Overhaul (#38)
* ElvUI/NamePlates: initial nameplate conversions

* More nameplate work

* Modules/Cooldowns: various CD fixes, nameplates cant show 'swipe' texture

* ElvUI/NamePlates: final nameplate polish

* Modules/Misc: add space before interrupted announcement
2023-05-22 19:18:59 -07:00

144 lines
3.7 KiB
Lua

local parent, ns = ...
local oUF = ns.oUF
-- sourced from Blizzard_ArenaUI/Blizzard_ArenaUI.lua
local MAX_ARENA_ENEMIES = MAX_ARENA_ENEMIES or 5
-- sourced from FrameXML/TargetFrame.lua
local MAX_BOSS_FRAMES = MAX_BOSS_FRAMES or 4
-- sourced from FrameXML/PartyMemberFrame.lua
local MAX_PARTY_MEMBERS = MAX_PARTY_MEMBERS or 4
local hiddenParent = CreateFrame('Frame', nil, UIParent)
hiddenParent:SetAllPoints()
hiddenParent:Hide()
local offScreenParent = CreateFrame('Frame', nil, UIParent)
offScreenParent:SetPoint("TOPLEFT", UIParent, "BOTTOMLEFT", 0, -128)
offScreenParent:SetFrameLevel(0)
local function handleFrame(baseName)
local frame
if(type(baseName) == 'string') then
frame = _G[baseName]
else
frame = baseName
end
if(frame) then
frame:UnregisterAllEvents()
frame:Hide()
-- Keep frame hidden without causing taint
frame:SetParent(hiddenParent)
local health = frame.healthBar or frame.healthbar
if(health) then
health:UnregisterAllEvents()
end
local power = frame.manabar
if(power) then
power:UnregisterAllEvents()
end
local spell = frame.castBar or frame.spellbar
if(spell) then
spell:UnregisterAllEvents()
end
local buffFrame = frame.BuffFrame
if(buffFrame) then
buffFrame:UnregisterAllEvents()
end
end
end
function oUF:DisableBlizzardNamePlate(nameplate)
-- we have to preserve the base frame since the unit frame will attach to it
local blizzElements = {nameplate:GetRegions()}
local healthBar, castBar = nameplate:GetChildren()
tinsert(blizzElements, healthBar)
nameplate.blizzHighlight = blizzElements[6]
nameplate.HealthBar = healthBar
nameplate.CastBar = castBar
for _, child in ipairs(blizzElements) do
child:SetParent(hiddenParent)
child:SetAlpha(0)
child:Hide()
if child.SetTexture then
child:SetTexture()
elseif child.SetStatusBarTexture then
child:SetStatusBarTexture(nil) -- this needs nil
end
end
-- cast bar has to be special because we need onhide / onshow to fire still
castBar:SetParent(offScreenParent)
castBar:SetStatusBarTexture(nil)
castBar:SetAlpha(0)
castBar:Hide()
end
function oUF:DisableBlizzard(unit)
if(not unit) then return end
if(unit == 'player') then
handleFrame(PlayerFrame)
-- For the damn vehicle support:
PlayerFrame:RegisterEvent('PLAYER_ENTERING_WORLD')
PlayerFrame:RegisterEvent('UNIT_ENTERING_VEHICLE')
PlayerFrame:RegisterEvent('UNIT_ENTERED_VEHICLE')
PlayerFrame:RegisterEvent('UNIT_EXITING_VEHICLE')
PlayerFrame:RegisterEvent('UNIT_EXITED_VEHICLE')
-- User placed frames don't animate
PlayerFrame:SetUserPlaced(true)
PlayerFrame:SetDontSavePosition(true)
elseif(unit == 'pet') then
handleFrame(PetFrame)
elseif(unit == 'target') then
handleFrame(TargetFrame)
handleFrame(ComboFrame)
elseif(unit == 'focus') then
handleFrame(FocusFrame)
handleFrame(TargetofFocusFrame)
elseif(unit == 'targettarget') then
handleFrame(TargetFrameToT)
elseif(unit:match('boss%d?$')) then
local id = unit:match('boss(%d)')
if(id) then
handleFrame('Boss' .. id .. 'TargetFrame')
else
for i = 1, MAX_BOSS_FRAMES do
handleFrame(string.format('Boss%dTargetFrame', i))
end
end
elseif(unit:match('party%d?$')) then
local id = unit:match('party(%d)')
if(id) then
handleFrame('PartyMemberFrame' .. id)
else
for i = 1, MAX_PARTY_MEMBERS do
handleFrame(string.format('PartyMemberFrame%d', i))
end
end
elseif(unit:match('arena%d?$')) then
local id = unit:match('arena(%d)')
if(id) then
handleFrame('ArenaEnemyFrame' .. id)
else
for i = 1, MAX_ARENA_ENEMIES do
handleFrame(string.format('ArenaEnemyFrame%d', i))
end
end
-- Blizzard_ArenaUI should not be loaded
Arena_LoadUI = function() end
SetCVar('showArenaEnemyFrames', '0', 'SHOW_ARENA_ENEMY_FRAMES_TEXT')
end
end