comparison modules/ReAction_PossessBar/ReAction_PossessBar.lua @ 57:b85118b61564

Added possess bar control buttons (no configurability yet)
author Flick <flickerstreak@gmail.com>
date Fri, 25 Apr 2008 23:42:33 +0000
parents 8b81d4b3e73d
children 7430a8dd4e90
comparison
equal deleted inserted replaced
56:88283658fec4 57:b85118b61564
54 54
55 function module:ApplyToBar(bar) 55 function module:ApplyToBar(bar)
56 if bar.config.type == moduleID then 56 if bar.config.type == moduleID then
57 bar:GetFrame():SetParent(PossessBarFrame) 57 bar:GetFrame():SetParent(PossessBarFrame)
58 bar.config.parent = "PossessBarFrame" 58 bar.config.parent = "PossessBarFrame"
59 self:CreatePossessControlButtons(bar)
59 end 60 end
60 self:RefreshBar(bar) 61 self:RefreshBar(bar)
61 end 62 end
62 63
63 function module:RefreshBar(bar) 64 function module:RefreshBar(bar)
178 button.actionIDLabel:Hide() 179 button.actionIDLabel:Hide()
179 end 180 end
180 end 181 end
181 182
182 183
184 -- possess-bar control buttons (shows buff, cancel buff)
185 function module:CreatePossessControlButton(bar,id,name)
186 -- guard against taint by reusing global variable frames
187 -- instead of nilling them out (e.g. create bar, delete bar, create bar with same name)
188 name = name or ("ReAction_%s_PossessCtrlButton%d"):format(bar:GetName(),id)
189 local b = name and _G[name]
190 if b then
191 b:SetParent(bar:GetFrame())
192 else
193 b = CreateFrame("CheckButton", name, bar:GetFrame(), "PossessButtonTemplate")
194 end
195 b:SetID(id)
196
197 b:RegisterEvent("PLAYER_AURAS_CHANGED");
198
199 local icon = _G[("%sIcon"):format(name)]
200 local cooldown = _G[("%sCooldown"):format(name)]
201 local nTex = _G[("%sNormalTexture"):format(name)]
202 nTex:SetWidth(54)
203 nTex:SetHeight(54)
204
205 local function update()
206 local texture = GetPossessInfo(id);
207 icon:SetTexture(texture);
208 icon:Show()
209 cooldown:Hide();
210 b:SetChecked(0);
211 icon:SetVertexColor(1.0, 1.0, 1.0);
212 end
213 update()
214
215 b:HookScript("OnClick", function() b:SetChecked(0) end)
216 b:SetScript("OnEvent", update)
217 b:SetScript("OnShow", update)
218
219 return b
220 end
221
222 function module:CreatePossessControlButtons(bar)
223 if not bar.possessButtons then
224 bar.possessButtons = { }
225 bar.config.possessFrameNames = bar.config.possessFrameNames or { }
226 local previous
227 local n = NUM_POSSESS_SLOTS
228 for i = 1, n do
229 local name = bar.config.possessFrameNames[i]
230 local f = self:CreatePossessControlButton(bar,i,name)
231 bar.possessButtons[i] = f
232 bar.config.possessFrameNames[i] = f:GetName()
233
234 local r, c, s = bar:GetButtonGrid()
235 local w, h = bar:GetButtonSize()
236
237 local scale = ((h - (n-1)*s)/n)/30
238 f:SetScale(scale)
239
240 if previous then
241 f:SetPoint("TOP", previous, "BOTTOM", 0, -s/scale)
242 else
243 f:SetPoint("TOPRIGHT", bar:GetFrame(), "TOPLEFT", -s/scale, 0)
244 end
245 f:Show()
246 previous = f
247 end
248 end
249 end
250
251
183 252
184 -- use-count of action IDs 253 -- use-count of action IDs
185 local minActionID = 121 254 local minActionID = 121
186 local maxActionID = 132 255 local maxActionID = 132
187 local ActionIDList = setmetatable( {}, { 256 local ActionIDList = setmetatable( {}, {
222 local function Constructor( self, bar, idx, config ) 291 local function Constructor( self, bar, idx, config )
223 self.bar, self.idx, self.config = bar, idx, config 292 self.bar, self.idx, self.config = bar, idx, config
224 293
225 local barFrame = bar:GetFrame() 294 local barFrame = bar:GetFrame()
226 295
227 config.name = config.name or "ReAction_"..bar:GetName().."_Possess_"..idx 296 config.name = config.name or ("ReAction_%s_Possess_%d"):format(bar:GetName(),idx)
228 self.name = config.name 297 self.name = config.name
229 config.actionID = ActionIDList[config.actionID] -- gets a free one if none configured 298 config.actionID = ActionIDList[config.actionID] -- gets a free one if none configured
230 299
231 local f = CreateFrame("CheckButton", self.name, barFrame, "BonusActionButtonTemplate") 300 local f = CreateFrame("CheckButton", self.name, barFrame, "BonusActionButtonTemplate")
232 301