57a5cdabdf
Imported from /srv/add01/wow-ascension/Interface/AddOns/Bartender4 — the build Ascension's WotLK 3.3.5 client ships. Single vendored drop: Ascension's build process bundles their custom patches with the standard CurseForge packager output (embedded libs), and the individual patches aren't published separately. Net delta vs Nevcairiel 4.4.2, excluding bundled libs and CRLF normalization: 21 files, 2213+/52- — the Ascension-specific adaptations for WotLK 3.3.5 hero classes / custom action systems. License: All rights reserved (per .toc).
111 lines
3.3 KiB
Lua
111 lines
3.3 KiB
Lua
--[[
|
|
Copyright (c) 2009, Hendrik "Nevcairiel" Leppkes < h.leppkes at gmail dot com >
|
|
All rights reserved.
|
|
]]
|
|
local L = LibStub("AceLocale-3.0"):GetLocale("Bartender4")
|
|
-- register module
|
|
local PetBarMod = Bartender4:NewModule("PetBar", "AceEvent-3.0")
|
|
|
|
-- fetch upvalues
|
|
local ActionBars = Bartender4:GetModule("ActionBars")
|
|
local ButtonBar = Bartender4.ButtonBar.prototype
|
|
|
|
-- create prototype information
|
|
local PetBar = setmetatable({}, {__index = ButtonBar})
|
|
|
|
local defaults = { profile = Bartender4:Merge({
|
|
enabled = true,
|
|
hidehotkey = true,
|
|
visibility = {
|
|
nopet = true,
|
|
vehicle = true,
|
|
},
|
|
}, Bartender4.ButtonBar.defaults) }
|
|
|
|
function PetBarMod:OnInitialize()
|
|
self.db = Bartender4.db:RegisterNamespace("PetBar", defaults)
|
|
self:SetEnabledState(self.db.profile.enabled)
|
|
end
|
|
|
|
function PetBarMod:OnEnable()
|
|
if not self.bar then
|
|
self.bar = setmetatable(Bartender4.ButtonBar:Create("PetBar", self.db.profile, L["Pet Bar"]), {__index = PetBar})
|
|
|
|
local buttons = {}
|
|
for i=1,10 do
|
|
buttons[i] = Bartender4.PetButton:Create(i, self.bar)
|
|
end
|
|
self.bar.buttons = buttons
|
|
|
|
self.bar:SetScript("OnEvent", PetBar.OnEvent)
|
|
end
|
|
self.bar:Enable()
|
|
|
|
self.bar:RegisterEvent("PLAYER_CONTROL_LOST")
|
|
self.bar:RegisterEvent("PLAYER_CONTROL_GAINED")
|
|
self.bar:RegisterEvent("PLAYER_FARSIGHT_FOCUS_CHANGED")
|
|
self.bar:RegisterEvent("UNIT_PET")
|
|
self.bar:RegisterEvent("UNIT_FLAGS")
|
|
self.bar:RegisterEvent("UNIT_AURA")
|
|
self.bar:RegisterEvent("PET_BAR_UPDATE")
|
|
self.bar:RegisterEvent("PET_BAR_UPDATE_COOLDOWN")
|
|
self.bar:RegisterEvent("PET_BAR_SHOWGRID")
|
|
self.bar:RegisterEvent("PET_BAR_HIDEGRID")
|
|
|
|
self:ApplyConfig()
|
|
self:ToggleOptions()
|
|
|
|
self:RegisterEvent("UPDATE_BINDINGS", "ReassignBindings")
|
|
self:ReassignBindings()
|
|
end
|
|
|
|
function PetBarMod:ReassignBindings()
|
|
if InCombatLockdown() then return end
|
|
if not self.bar or not self.bar.buttons then return end
|
|
ClearOverrideBindings(self.bar)
|
|
for i = 1, 10 do
|
|
local button, real_button = ("BONUSACTIONBUTTON%d"):format(i), ("BT4PetButton%d"):format(i)
|
|
for k=1, select('#', GetBindingKey(button)) do
|
|
local key = select(k, GetBindingKey(button))
|
|
SetOverrideBindingClick(self.bar, false, key, real_button)
|
|
end
|
|
end
|
|
end
|
|
|
|
function PetBarMod:ApplyConfig()
|
|
if not self:IsEnabled() then return end
|
|
self.bar:ApplyConfig(self.db.profile)
|
|
self:ReassignBindings()
|
|
end
|
|
|
|
PetBar.button_width = 30
|
|
PetBar.button_height = 30
|
|
function PetBar:OnEvent(event, arg1)
|
|
if event == "PET_BAR_UPDATE" or
|
|
(event == "UNIT_PET" and arg1 == "player") or
|
|
((event == "UNIT_FLAGS" or event == "UNIT_AURA") and arg1 == "pet") or
|
|
event == "PLAYER_CONTROL_LOST" or event == "PLAYER_CONTROL_GAINED" or event == "PLAYER_FARSIGHT_FOCUS_CHANGED"
|
|
then
|
|
self:ForAll("Update")
|
|
elseif event == "PET_BAR_UPDATE_COOLDOWN" then
|
|
self:ForAll("UpdateCooldown")
|
|
elseif event == "PET_BAR_SHOWGRID" then
|
|
self:ForAll("ShowGrid")
|
|
elseif event == "PET_BAR_HIDEGRID" then
|
|
self:ForAll("HideGrid")
|
|
end
|
|
end
|
|
|
|
function PetBar:ApplyConfig(config)
|
|
ButtonBar.ApplyConfig(self, config)
|
|
|
|
if not self.config.position.x then
|
|
self:ClearSetPoint("CENTER", 0, 70)
|
|
self:SavePosition()
|
|
end
|
|
|
|
self:UpdateButtonLayout()
|
|
self:ForAll("Update")
|
|
self:ForAll("ApplyStyle", self.config.style)
|
|
end
|