1- -- locals and speed
21local AddonName , Addon = ...
3-
42local _G = _G
53
64---- ----------------------------------------------------------------------------
6866 end
6967 end
7068end
69+
70+ local setAlphaDelta
71+ if is_wotlk or is_cata or is_mop then
72+ setAlphaDelta = function (alpha )
73+ alpha :SetChange (1 )
74+ end
75+ else
76+ setAlphaDelta = function (alpha )
77+ alpha :SetFromAlpha (0 )
78+ alpha :SetToAlpha (1 )
79+ end
80+ end
81+
7182---- ----------------------------------------------------------------------------
7283
73- local TEXTURE_OFFSET = 3
84+ local BARTENDER4_NAME = " Bartender4"
85+ local BARTENDER4_BUTTONS_MAX = 120
86+ local BARTENDER4_BUTTONS_PET_MAX = 10
7487
7588-- main
7689function Addon :Load ()
@@ -96,19 +109,14 @@ function Addon:OnEvent(event, ...)
96109end
97110
98111function Addon :PLAYER_LOGIN ()
112+ -- Blizzard buttons
99113 self :SetupButtonFlash ()
100114 self :HookActionEvents ()
101- end
102-
103- local setAlphaDelta
104- if is_wotlk or is_cata or is_mop then
105- setAlphaDelta = function (alpha )
106- alpha :SetChange (1 )
107- end
108- else
109- setAlphaDelta = function (alpha )
110- alpha :SetFromAlpha (0 )
111- alpha :SetToAlpha (1 )
115+
116+ -- Addon "Bartender4" buttons
117+ local bt4 = IsAddOnLoaded (BARTENDER4_NAME )
118+ if bt4 then
119+ self :HookBartender4Buttons ()
112120 end
113121end
114122
@@ -150,6 +158,7 @@ function Addon:SetupButtonFlash()
150158end
151159
152160-- hooks
161+ -- - Blizzard buttons
153162do
154163 local function Button_ActionButtonDown (id )
155164 Addon :ActionButtonDown (id )
165174 end
166175end
167176
177+ -- - Bartender4 support
178+ do
179+ local function Button_OnMouseDown (self , _ )
180+ Addon :AnimateButton (self )
181+ end
182+
183+ -- Note. using RegisterForClicks and OnClick can result in extra effects
184+ -- such as sounds for each part of the click. So, use OnMouseDown instead
185+ function Addon :HookBartender4Buttons ()
186+ -- Player action buttons
187+ for i = 1 , BARTENDER4_BUTTONS_MAX do
188+ local button = _G [" BT4Button" .. i ]
189+ if button then
190+ button :HookScript (" OnMouseDown" , Button_OnMouseDown )
191+ end
192+ end
193+
194+ -- Pet action buttons
195+ for i = 1 , BARTENDER4_BUTTONS_PET_MAX do
196+ local button = _G [" BT4PetButton" .. i ]
197+ if button then
198+ button :HookScript (" OnMouseDown" , Button_OnMouseDown )
199+ end
200+ end
201+ end
202+ end
203+
168204function Addon :ActionButtonDown (id )
169205 if not id then return end
170206
@@ -183,17 +219,21 @@ function Addon:MultiActionButtonDown(bar, id)
183219 end
184220end
185221
186- function Addon :AnimateButton (button )
187- if not button :IsVisible () then return end
222+ do
223+ local TEXTURE_OFFSET = 3
224+
225+ function Addon :AnimateButton (button )
226+ if not button :IsVisible () then return end
188227
189- self .frame :SetPoint (' TOPLEFT' , button , ' TOPLEFT' , - TEXTURE_OFFSET ,
190- TEXTURE_OFFSET )
191- self .frame :SetPoint (' BOTTOMRIGHT' , button , ' BOTTOMRIGHT' , TEXTURE_OFFSET ,
192- - TEXTURE_OFFSET )
228+ self .frame :SetPoint (' TOPLEFT' , button , ' TOPLEFT' , - TEXTURE_OFFSET ,
229+ TEXTURE_OFFSET )
230+ self .frame :SetPoint (' BOTTOMRIGHT' , button , ' BOTTOMRIGHT' , TEXTURE_OFFSET ,
231+ - TEXTURE_OFFSET )
193232
194- self .animationGroup :Stop ()
195- self .animationGroup :Play ()
233+ self .animationGroup :Stop ()
234+ self .animationGroup :Play ()
235+ end
196236end
197237
198- -- call
238+ -- begin
199239Addon :Load ()
0 commit comments