Files
ShaguTweaks-ClassicAPI/mods/unitframes-bighealth.lua
T
2026-08-12 16:03:50 +02:00

114 lines
3.9 KiB
Lua

local _G = ShaguTweaks.GetGlobalEnv()
local T = ShaguTweaks.T
local module = ShaguTweaks:register({
title = T["Unit Frame Big Health"],
description = T["Increases the healthbar of the player and target unitframe."],
expansions = { ["vanilla"] = true },
category = T["Unit Frames"],
enabled = nil,
})
local addonpath
local tocs = { "", "-master", "-tbc", "-wotlk" }
for _, name in pairs(tocs) do
local current = string.format("ShaguTweaks%s", name)
local _, title = GetAddOnInfo(current)
if title then
addonpath = "Interface\\AddOns\\" .. current
break
end
end
module.enable = function(self)
PlayerFrameTexture:SetTexture(addonpath .. "\\img\\UI-TargetingFrame")
PlayerFrameHealthBar:SetPoint("TOPLEFT", 106, -22)
PlayerFrameHealthBar:SetHeight(30)
PlayerStatusTexture:SetTexture(addonpath .. "\\img\\UI-Player-Status")
TargetFrameTexture:SetTexture(addonpath .. "\\img\\UI-TargetingFrame")
TargetFrameHealthBar:SetPoint("TOPRIGHT", -106, -22)
TargetFrameHealthBar:SetHeight(30)
local original = TargetFrame_CheckClassification
function TargetFrame_CheckClassification()
local classification = UnitClassification("target")
if ( classification == "worldboss" ) then
TargetFrameTexture:SetTexture(addonpath .. "\\img\\UI-TargetingFrame-Elite")
elseif ( classification == "rareelite" ) then
TargetFrameTexture:SetTexture(addonpath .. "\\img\\UI-TargetingFrame-Elite")
elseif ( classification == "elite" ) then
TargetFrameTexture:SetTexture(addonpath .. "\\img\\UI-TargetingFrame-Elite")
elseif ( classification == "rare" ) then
TargetFrameTexture:SetTexture(addonpath .. "\\img\\UI-TargetingFrame-Rare")
else
TargetFrameTexture:SetTexture(addonpath .. "\\img\\UI-TargetingFrame")
end
end
local wait = CreateFrame("Frame")
wait:RegisterEvent("PLAYER_ENTERING_WORLD")
wait:SetScript("OnEvent", function()
-- apply darkmode if required
ShaguTweaks.DarkenFrame(PlayerFrameTexture)
ShaguTweaks.DarkenFrame(TargetFrameTexture)
-- adjust healthbar colors to frame colors
local original = TargetFrame_CheckFaction
function TargetFrame_CheckFaction(self)
original(self)
if TargetFrameHealthBar._SetStatusBarColor then
local r, g, b, a = TargetFrameNameBackground:GetVertexColor()
TargetFrameHealthBar:_SetStatusBarColor(r, g, b, a)
end
end
end)
-- delay to first draw
wait:SetScript("OnUpdate", function()
-- move text strings a bit higher
if PlayerFrameHealthBar.TextString then
PlayerFrameHealthBar.TextString:SetPoint("TOP", PlayerFrameHealthBar, "BOTTOM", 0, 23)
end
if TargetFrameHealthBar.TextString then
TargetFrameHealthBar.TextString:SetPoint("TOP", TargetFrameHealthBar, "BOTTOM", -2, 23)
end
-- use class color for player (if enabled)
if PlayerFrameNameBackground then
-- disable vanilla ui color restore functions
PlayerFrameHealthBar._SetStatusBarColor = PlayerFrameHealthBar.SetStatusBarColor
PlayerFrameHealthBar.SetStatusBarColor = function() return end
-- set player healthbar to class color
local r, g, b, a = PlayerFrameNameBackground:GetVertexColor()
PlayerFrameHealthBar:_SetStatusBarColor(r, g, b, a)
-- hide status textures
PlayerFrameNameBackground:Hide()
PlayerFrameNameBackground.Show = function() return end
end
-- use frame color for target frame
if TargetFrameNameBackground then
-- disable vanilla ui color restore functions
TargetFrameHealthBar._SetStatusBarColor = TargetFrameHealthBar.SetStatusBarColor
TargetFrameHealthBar.SetStatusBarColor = function() return end
-- hide status textures
TargetFrameNameBackground.Show = function() return end
TargetFrameNameBackground:Hide()
end
TargetFrame_CheckFaction(PlayerFrame)
wait:UnregisterAllEvents()
wait:Hide()
end)
end