From 0e0d70ce8eefeed87f53d5a87aa0b4b92c18979b Mon Sep 17 00:00:00 2001 From: shagu Date: Tue, 24 Aug 2021 17:19:01 +0200 Subject: [PATCH] unitframes-classcolor: add classcolor to units --- mods/unitframes-classcolor.lua | 67 ++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 mods/unitframes-classcolor.lua diff --git a/mods/unitframes-classcolor.lua b/mods/unitframes-classcolor.lua new file mode 100644 index 0000000..1fe7377 --- /dev/null +++ b/mods/unitframes-classcolor.lua @@ -0,0 +1,67 @@ +local _G = _G or getfenv(0) +local GetExpansion = ShaguTweaks.GetExpansion + +local module = ShaguTweaks:register({ + title = "Class Color On Unit Frames", + description = "Adds class colors to the player and target unitframe", + enabled = nil, +}) + +local partycolors = function() + for id = 1, MAX_PARTY_MEMBERS do + local name = _G['PartyMemberFrame'..id..'Name'] + local _, class = UnitClass("party" .. id) + local class = RAID_CLASS_COLORS[class] or { r = .5, g = .5, b = .5, a = 1 } + name:SetTextColor(class.r, class.g, class.b, 1) + end +end + +module.enable = function(self) + -- enable class color backgrounds + local original = TargetFrame_CheckFaction + function TargetFrame_CheckFaction(self) + original(self) + + local reaction = UnitReaction("target", "player") + + if UnitPlayerControlled("target") then + local _, class = UnitClass("target") + local class = RAID_CLASS_COLORS[class] or { r = .5, g = .5, b = .5, a = 1 } + TargetFrameNameBackground:SetVertexColor(class.r, class.g, class.b, 1) + TargetFrameNameBackground:Show() + TargetFrameBackground:Hide() + elseif reaction and reaction > 4 then + TargetFrameNameBackground:Hide() + TargetFrameBackground:Show() + else + TargetFrameNameBackground:Show() + TargetFrameBackground:Hide() + end + end + + local _, class = UnitClass("player") + local class = RAID_CLASS_COLORS[class] or { r = .5, g = .5, b = .5, a = 1 } + + -- add name background to player frame + PlayerFrameNameBackground = PlayerFrame:CreateTexture(nil, "BACKGROUND") + PlayerFrameNameBackground:SetTexture("Interface\\TargetingFrame\\UI-TargetingFrame-LevelBackground") + PlayerFrameNameBackground:SetWidth(119) + PlayerFrameNameBackground:SetHeight(19) + PlayerFrameNameBackground:SetPoint("TOPLEFT", 106, -22) + PlayerFrameNameBackground:SetVertexColor(class.r, class.g, class.b, 1) + PlayerFrameBackground:Hide() + + -- add font outline + local font, size = PlayerFrame.name:GetFont() + PlayerFrame.name:SetFont(font, size, "NONE") + TargetFrame.name:SetFont(font, size, "NONE") + + -- add party frame class colors + local HookPartyMemberFrame_UpdateMember = PartyMemberFrame_UpdateMember + PartyMemberFrame_UpdateMember = function(self) + HookPartyMemberFrame_UpdateMember(self) + partycolors() + end + + partycolors() +end