From 4732a6f41cb43c04abdaff9a78d0bfd8cd86945e Mon Sep 17 00:00:00 2001 From: KlazHTT Date: Thu, 7 Mar 2024 21:38:29 -0500 Subject: [PATCH] Init --- KlazBars.toc | 11 +++++++ Media/KlazAddOnIcon.blp | Bin 0 -> 23060 bytes Modules/ButtonIndicators.lua | 32 ++++++++++++++++++++ Modules/HotKeys.lua | 57 +++++++++++++++++++++++++++++++++++ Modules/MacroNames.lua | 19 ++++++++++++ Modules/Style.lua | 37 +++++++++++++++++++++++ README.md | 21 +++++++++++++ 7 files changed, 177 insertions(+) create mode 100644 KlazBars.toc create mode 100644 Media/KlazAddOnIcon.blp create mode 100644 Modules/ButtonIndicators.lua create mode 100644 Modules/HotKeys.lua create mode 100644 Modules/MacroNames.lua create mode 100644 Modules/Style.lua create mode 100644 README.md diff --git a/KlazBars.toc b/KlazBars.toc new file mode 100644 index 0000000..f7364c7 --- /dev/null +++ b/KlazBars.toc @@ -0,0 +1,11 @@ +## Interface: 100205 +## Title: Klaz|cff1994ffBars|r +## Author: Klaz +## Notes: Styles default action bars +## OptionalDeps: LibStub, LibSharedMedia-3.0, Masque +## IconTexture: Interface\AddOns\KlazBars\Media\KlazAddOnIcon.blp + +Modules\ButtonIndicators.lua +Modules\HotKeys.lua +Modules\MacroNames.lua +Modules\Style.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/ButtonIndicators.lua b/Modules/ButtonIndicators.lua new file mode 100644 index 0000000..5f94856 --- /dev/null +++ b/Modules/ButtonIndicators.lua @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- +-- # MODULES > BUTTON INDICATORS +-------------------------------------------------------------------------------- + +local f = CreateFrame('Frame') +f:RegisterEvent('PLAYER_ENTERING_WORLD') +f:SetScript('OnEvent', function(self, event) + hooksecurefunc('ActionButton_UpdateRangeIndicator', function(self, checksRange, inRange) + local icon = self.icon + + if self.action then + local normalTexture = self.NormalTexture + if not normalTexture then return end + + local isUsable, notEnoughMana = IsUsableAction(self.action) + if isUsable then + icon:SetVertexColor(1, 1, 1) + normalTexture:SetVertexColor(1, 1, 1) + elseif notEnoughMana then + icon:SetVertexColor(0.2, 0.2, 1) + normalTexture:SetVertexColor(0.2, 0.2, 1) + else + icon:SetVertexColor(0.5, 0.5, 0.5) + normalTexture:SetVertexColor(0.5, 0.5, 0.5) + end + + if checksRange and not inRange then + icon:SetVertexColor(1, 0, 0) + end + end + end) +end) diff --git a/Modules/HotKeys.lua b/Modules/HotKeys.lua new file mode 100644 index 0000000..07b36a1 --- /dev/null +++ b/Modules/HotKeys.lua @@ -0,0 +1,57 @@ +-------------------------------------------------------------------------------- +-- # MODULES > HOT KEYS +-------------------------------------------------------------------------------- + +local f = CreateFrame('Frame') +f:RegisterEvent('PLAYER_ENTERING_WORLD') +f:RegisterEvent('UPDATE_BINDINGS') +f:SetScript('OnEvent', function(self, event) + local gsub = string.gsub + local function UpdateHotkey(self) + local alpha = 0.75 + local hotkey = _G[self:GetName()..'HotKey'] + local text = hotkey:GetText() + if not text then return end + + text = gsub(text, '(s%-)', 'S') + text = gsub(text, '(a%-)', 'A') + text = gsub(text, '(а%-)', 'A') + text = gsub(text, '(c%-)', 'C') + text = gsub(text, '(Mouse Button )', 'M') + text = gsub(text, '(Кнопка мыши )', 'M') + text = gsub(text, KEY_BUTTON3, 'M3') + text = gsub(text, KEY_PAGEUP, 'PU') + text = gsub(text, KEY_PAGEDOWN, 'PD') + text = gsub(text, KEY_SPACE, 'SpB') + text = gsub(text, KEY_INSERT, 'Ins') + text = gsub(text, KEY_HOME, 'Hm') + text = gsub(text, KEY_DELETE, 'Del') + text = gsub(text, KEY_NUMPADDECIMAL, 'Nu.') + text = gsub(text, KEY_NUMPADDIVIDE, 'Nu/') + text = gsub(text, KEY_NUMPADMINUS, 'Nu-') + text = gsub(text, KEY_NUMPADMULTIPLY, 'Nu*') + text = gsub(text, KEY_NUMPADPLUS, 'Nu+') + text = gsub(text, KEY_NUMLOCK, 'NuL') + text = gsub(text, KEY_MOUSEWHEELDOWN, 'MWD') + text = gsub(text, KEY_MOUSEWHEELUP, 'MWU') + + hotkey:SetText(text) + hotkey:SetAlpha(alpha) + end + + for i = 1, 12 do + UpdateHotkey(_G['ActionButton'..i]) -- main bar + UpdateHotkey(_G['MultiBarBottomLeftButton'..i]) -- bottom right bar + UpdateHotkey(_G['MultiBarBottomRightButton'..i]) -- bottom left bar + UpdateHotkey(_G['MultiBarLeftButton'..i]) -- right bar + UpdateHotkey(_G['MultiBarRightButton'..i]) -- left bar + UpdateHotkey(_G['MultiBar5Button'..i]) -- multi bar 5 (added in Dragonflight) + UpdateHotkey(_G['MultiBar6Button'..i]) -- multi bar 6 (added in Dragonflight) + UpdateHotkey(_G['MultiBar7Button'..i]) -- multi bar 7 (added in Dragonflight) + end + for i = 1, 10 do + UpdateHotkey(_G['StanceButton'..i]) + UpdateHotkey(_G['PetActionButton'..i]) + end + UpdateHotkey(ExtraActionButton1) +end) diff --git a/Modules/MacroNames.lua b/Modules/MacroNames.lua new file mode 100644 index 0000000..504a2d9 --- /dev/null +++ b/Modules/MacroNames.lua @@ -0,0 +1,19 @@ +-------------------------------------------------------------------------------- +-- # MODULES > MACRO NAMES +-------------------------------------------------------------------------------- + +local f = CreateFrame('Frame') +f:RegisterEvent('PLAYER_ENTERING_WORLD') +f:SetScript('OnEvent', function(self, event) + local macroNamesAlpha = 0 + for i = 1, 12 do + _G['ActionButton'..i..'Name']:SetAlpha(macroNamesAlpha) -- main bar + _G['MultiBarBottomRightButton'..i..'Name']:SetAlpha(macroNamesAlpha) -- bottom right bar + _G['MultiBarBottomLeftButton'..i..'Name']:SetAlpha(macroNamesAlpha) -- bottom left bar + _G['MultiBarRightButton'..i..'Name']:SetAlpha(macroNamesAlpha) -- right bar + _G['MultiBarLeftButton'..i..'Name']:SetAlpha(macroNamesAlpha) -- left bar + _G['MultiBar5Button'..i..'Name']:SetAlpha(macroNamesAlpha) -- multi bar 5 (added in Dragonflight) + _G['MultiBar6Button'..i..'Name']:SetAlpha(macroNamesAlpha) -- multi bar 6 (added in Dragonflight) + _G['MultiBar7Button'..i..'Name']:SetAlpha(macroNamesAlpha) -- multi bar 7 (added in Dragonflight) + end +end) diff --git a/Modules/Style.lua b/Modules/Style.lua new file mode 100644 index 0000000..27c2cfd --- /dev/null +++ b/Modules/Style.lua @@ -0,0 +1,37 @@ +if IsAddOnLoaded("Masque") ~= true then return end + +-------------------------------------------------------------------------------- +-- # MODULES > STYLE +-------------------------------------------------------------------------------- + +local Masque = LibStub('Masque', true) +assert(Masque, 'Masque not found') + +local group = Masque:Group('KlazBars') + +local function AddActionBarButtons() + for _, name in pairs({ + 'PetActionButton', + 'PossessButton', + 'StanceButton', + 'ActionButton', + 'MultiBarBottomLeftButton', + 'MultiBarBottomRightButton', + 'MultiBarLeftButton', + 'MultiBarRightButton', + 'MultiBar5Button', + 'MultiBar6Button', + 'MultiBar7Button', + }) do + for i = 1, 12 do + local button = _G[name..i] + if button then group:AddButton(button) end + end + end +end + +local f = CreateFrame('Frame') +f:RegisterEvent('PLAYER_ENTERING_WORLD') +f:SetScript('OnEvent', function(self, event) + AddActionBarButtons() +end) diff --git a/README.md b/README.md new file mode 100644 index 0000000..5446ca8 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# KlazBars + +A World of Warcraft add-on that styles default action bars. + +There are no in-game options. All settings are hard-coded. + +## Features + +- Enable styling action buttons with [Masque](https://www.curseforge.com/wow/addons/masque) +- Reduce transparency/alpha for hotkey bindings text +- Reduce transparency/alpha for macro names text +- Add action button indicators + - Red = Out of range + - Blue = Out of resources + +## Installation + +1. Backup `World of Warcraft\_retail_\Interface` and `World of Warcraft\_retail_\WTF` folders. Just in case. +2. Download and extract folder. +3. Place extracted folder in `World of Warcraft\_retail_\Interface\AddOns\` directory. +4. Restart World of Warcraft client.