diff --git a/ShaguTweaks-tbc.toc b/ShaguTweaks-tbc.toc index 2612ff7..9cfa30b 100644 --- a/ShaguTweaks-tbc.toc +++ b/ShaguTweaks-tbc.toc @@ -60,3 +60,4 @@ mods\hide-errors.lua mods\chat-tweaks.lua mods\hide-gryphons.lua mods\worldmap-colors.lua +mods\unitframes-bighealth.lua diff --git a/ShaguTweaks.toc b/ShaguTweaks.toc index 93711b2..d1e83c2 100644 --- a/ShaguTweaks.toc +++ b/ShaguTweaks.toc @@ -60,3 +60,4 @@ mods\hide-errors.lua mods\chat-tweaks.lua mods\hide-gryphons.lua mods\worldmap-colors.lua +mods\unitframes-bighealth.lua diff --git a/img/UI-Player-Status.tga b/img/UI-Player-Status.tga new file mode 100644 index 0000000..ceed1e5 Binary files /dev/null and b/img/UI-Player-Status.tga differ diff --git a/img/UI-TargetingFrame-Elite.tga b/img/UI-TargetingFrame-Elite.tga new file mode 100644 index 0000000..aa81cde Binary files /dev/null and b/img/UI-TargetingFrame-Elite.tga differ diff --git a/img/UI-TargetingFrame-Rare.tga b/img/UI-TargetingFrame-Rare.tga new file mode 100644 index 0000000..befa262 Binary files /dev/null and b/img/UI-TargetingFrame-Rare.tga differ diff --git a/img/UI-TargetingFrame.tga b/img/UI-TargetingFrame.tga new file mode 100644 index 0000000..c3c56c2 Binary files /dev/null and b/img/UI-TargetingFrame.tga differ diff --git a/mods/unitframes-bighealth.lua b/mods/unitframes-bighealth.lua new file mode 100644 index 0000000..f85f6f6 --- /dev/null +++ b/mods/unitframes-bighealth.lua @@ -0,0 +1,113 @@ +local _G = _G or getfenv(0) + +local module = ShaguTweaks:register({ + title = "Unit Frame Big Health", + description = "Increases the healthbar of the player and target unitframe.", + expansions = { ["vanilla"] = true, ["tbc"] = true }, + category = "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() + if ShaguTweaks.DarkMode then + PlayerFrameTexture:SetVertexColor(.3,.3,.3,.9) + TargetFrameTexture:SetVertexColor(.3,.3,.3,.9) + end + + -- 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