From 8673094b447dc34607ed15d263c531faceb3bead Mon Sep 17 00:00:00 2001 From: KlazHTT Date: Sat, 2 Mar 2024 21:17:02 -0500 Subject: [PATCH] Init --- KlazUnitFrames.toc | 10 ++++++++ Media/KlazAddOnIcon.blp | Bin 0 -> 23060 bytes Modules/CastBarTimers.lua | 49 +++++++++++++++++++++++++++++++++++++ Modules/DarkerTextures.lua | 15 ++++++++++++ Modules/Hide.lua | 8 ++++++ Modules/StatusBars.lua | 23 +++++++++++++++++ 6 files changed, 105 insertions(+) create mode 100644 KlazUnitFrames.toc create mode 100644 Media/KlazAddOnIcon.blp create mode 100644 Modules/CastBarTimers.lua create mode 100644 Modules/DarkerTextures.lua create mode 100644 Modules/Hide.lua create mode 100644 Modules/StatusBars.lua diff --git a/KlazUnitFrames.toc b/KlazUnitFrames.toc new file mode 100644 index 0000000..ceb8bff --- /dev/null +++ b/KlazUnitFrames.toc @@ -0,0 +1,10 @@ +## Interface: 100205 +## Title: Klaz|cff1994ffUnitFrames|r +## Author: Klaz +## Notes: Styles default unit frames. +## IconTexture: Interface\AddOns\KlazUnitFrames\Media\KlazAddOnIcon.blp + +Modules\CastBarTimers.lua +Modules\DarkerTextures.lua +Modules\Hide.lua +Modules\StatusBars.lua diff --git a/Media/KlazAddOnIcon.blp b/Media/KlazAddOnIcon.blp new file mode 100644 index 0000000000000000000000000000000000000000..f65d21177bc7150f1f5ba477a7fb09df9de8192a GIT binary patch literal 23060 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 XtEvs`{CNi;k;pdK9uBW({Wtty!p1#{ literal 0 HcmV?d00001 diff --git a/Modules/CastBarTimers.lua b/Modules/CastBarTimers.lua new file mode 100644 index 0000000..05d5895 --- /dev/null +++ b/Modules/CastBarTimers.lua @@ -0,0 +1,49 @@ +-------------------------------------------------------------------------------- +-- # MODULES > CAST BAR TIMERS +-------------------------------------------------------------------------------- + +local f = CreateFrame('Frame') +f:RegisterEvent('PLAYER_ENTERING_WORLD') +f:SetScript('OnEvent', function(self, event) + -- player cast bar timer + PlayerCastingBarFrame.timer = PlayerCastingBarFrame:CreateFontString(nil, nil, 'GameFontHighlightSmall') + PlayerCastingBarFrame.timer:SetPoint('BOTTOMRIGHT', PlayerCastingBarFrame, 'BOTTOMRIGHT', -4, -11) + PlayerCastingBarFrame.update = .1 + PlayerCastingBarFrame:HookScript('OnUpdate', function(self, elapsed) + if not self.timer then return end + + if self.update and self.update < elapsed then + if self.casting then + self.timer:SetText(format('%2.1f/%1.1f', max(self.maxValue - self.value, 0), self.maxValue)) + elseif self.channeling then + self.timer:SetText(format('%.1f', max(self.value, 0))) + else + self.timer:SetText('') + end + self.update = .1 + else + self.update = self.update - elapsed + end + end) + + -- target cast bar timer + TargetFrameSpellBar.timer = TargetFrameSpellBar:CreateFontString(nil, nil, 'GameFontHighlightSmall') + TargetFrameSpellBar.timer:SetPoint('BOTTOMRIGHT', TargetFrameSpellBar, 'BOTTOMRIGHT', -4, -11) + TargetFrameSpellBar.update = .1 + TargetFrameSpellBar:HookScript('OnUpdate', function(self, elapsed) + if not self.timer then return end + + if self.update and self.update < elapsed then + if self.casting then + self.timer:SetText(format('%2.1f/%1.1f', max(self.maxValue - self.value, 0), self.maxValue)) + elseif self.channeling then + self.timer:SetText(format('%.1f', max(self.value, 0))) + else + self.timer:SetText('') + end + self.update = .1 + else + self.update = self.update - elapsed + end + end) +end) diff --git a/Modules/DarkerTextures.lua b/Modules/DarkerTextures.lua new file mode 100644 index 0000000..9cc0de4 --- /dev/null +++ b/Modules/DarkerTextures.lua @@ -0,0 +1,15 @@ +-------------------------------------------------------------------------------- +-- # MODULES > DARKER TEXTURES +-------------------------------------------------------------------------------- + +local f = CreateFrame('Frame') +f:RegisterEvent('PLAYER_ENTERING_WORLD') +f:SetScript('OnEvent', function(self, event) + for i, v in pairs ({ + -- paladin holy power + PaladinPowerBarFrame.Background, -- no holy power + PaladinPowerBarFrame.ActiveTexture, -- with holy power + }) do + v:SetVertexColor(0.4, 0.4, 0.4) + end +end) diff --git a/Modules/Hide.lua b/Modules/Hide.lua new file mode 100644 index 0000000..dda276a --- /dev/null +++ b/Modules/Hide.lua @@ -0,0 +1,8 @@ +-------------------------------------------------------------------------------- +-- # MODULES > HIDE TEXT +-------------------------------------------------------------------------------- + +PlayerFrame:HookScript("OnEvent", function() + -- hide player leader icon + PlayerFrame.PlayerFrameContent.PlayerFrameContentMain.HitIndicator.HitText:Hide() +end) diff --git a/Modules/StatusBars.lua b/Modules/StatusBars.lua new file mode 100644 index 0000000..0bcd921 --- /dev/null +++ b/Modules/StatusBars.lua @@ -0,0 +1,23 @@ +-------------------------------------------------------------------------------- +-- # MODULES > STATUS BARS +-------------------------------------------------------------------------------- +-- Changes health bars to class and target reaction colours + +hooksecurefunc('UnitFrameHealthBar_Update', function(self) + local r, g, b + + if UnitIsPlayer(self.unit) then + local _, englishClass = UnitClass(self.unit) + r, g, b = GetClassColor(englishClass) + else + local reaction = UnitReaction(self.unit, 'player') + if reaction then + r, g, b = FACTION_BAR_COLORS[reaction].r, FACTION_BAR_COLORS[reaction].g, FACTION_BAR_COLORS[reaction].b + else + r, g, b = 1, 1, 1 + end + end + + self:SetStatusBarDesaturated(true) + self:SetStatusBarColor(r, g, b) +end)