Mercurial > wow > kbf
comparison KBF.lua @ 2:cf6e612a1c7e
finish mergeing the bars with the secure buttons. Almost done! Just minor housekeeping to take care of at this point
author | Chris Mellon <arkanes@gmai.com> |
---|---|
date | Tue, 12 Oct 2010 16:52:47 -0500 |
parents | 3d4128c79074 |
children | bb1143608eb4 |
comparison
equal
deleted
inserted
replaced
1:3d4128c79074 | 2:cf6e612a1c7e |
---|---|
9 self.options = { | 9 self.options = { |
10 barWidth = 200 + 16 + 8, | 10 barWidth = 200 + 16 + 8, |
11 barHeight = 16 + 8 | 11 barHeight = 16 + 8 |
12 } | 12 } |
13 self.anchor = self:CreateAnchorFrame() | 13 self.anchor = self:CreateAnchorFrame() |
14 self.buffFrames = {} | 14 self.buffBars = {} |
15 self.anchor:Show() | 15 self.anchor:Show() |
16 self:RegisterEvent("UNIT_AURA") | 16 self:RegisterEvent("UNIT_AURA") |
17 self.unit = "player" -- TODO: Vehicle support | |
18 end | 17 end |
19 -- naming convention | 18 -- naming convention |
20 -- "frame" is the secure aura button created by the group handler | 19 -- "frame" is the secure aura button created by the group handler |
21 -- "bar" is the set of icon + status bars that we create to show the buff time | 20 -- "bar" is the set of icon + status bars that we create to show the buff time |
22 | 21 |
23 function kbf:UNIT_AURA(event, unit) | 22 function kbf:UNIT_AURA(event, unit) |
24 if unit ~= self.unit then return end | 23 if unit ~= self.secureFrame:GetAttribute("unit") then return end |
25 for idx=1,9 do | 24 for idx=1,99 do |
26 local frame = self.secureFrame:GetAttribute("child"..idx) | 25 local frame = self.secureFrame:GetAttribute("child"..idx) |
27 if not frame then break end | 26 if not frame then break end |
28 local name, rank, icon, count, debuffType, duration, expirationTime, | 27 self:BindBarToBuff(idx, frame, unit, "HELPFUL") |
29 unitCaster, isStealable, shouldConsolidate, spellId = UnitAura(self.unit, idx, "HELPFUL") | |
30 frame:SetNormalTexture(icon) | |
31 self:BindFrameToBuff | |
32 end | 28 end |
33 end | 29 end |
34 | 30 |
35 function kbf:BindBarToBuff(idx, parentFrame) | 31 function kbf:BindBarToBuff(idx, parentFrame, unit, filter) |
36 local name, rank, icon, count, debuffType, duration, expirationTime, | 32 local name, rank, icon, count, debuffType, duration, expirationTime, |
37 unitCaster, isStealable, shouldConsolidate, spellId = UnitAura(self.unit, idx, "HELPFUL") | 33 unitCaster, isStealable, shouldConsolidate, spellId = UnitAura(unit, idx, "HELPFUL") |
38 if not name then | 34 -- This shouldn't be neccesary as the bar is parented to the frame, which is |
39 if self.buffFrames[idx] then | 35 -- hidden by the group handler |
40 self.buffFrames[idx]:Hide() | 36 if not parentFrame.icon then |
41 end | 37 self:ConstructBar(parentFrame) |
42 return nil | |
43 end | 38 end |
44 local frame = self.buffFrames[idx] or self:ConstructBuffFrame(idx) | 39 parentFrame.icon:SetNormalTexture(icon) |
45 frame.icon:SetNormalTexture(icon) | |
46 if stacks and stacks > 0 then | 40 if stacks and stacks > 0 then |
47 frame.text:SetText(string.format("%s(%d)", name, stacks)) | 41 parentFrame.text:SetText(string.format("%s(%d)", name, stacks)) |
48 else | 42 else |
49 frame.text:SetText(name) | 43 parentFrame.text:SetText(name) |
50 end | 44 end |
51 frame:Show() | |
52 return frame | |
53 end | 45 end |
54 | |
55 function kbf:ConstructBuffFrame(idx) | |
56 local frame = self:ConstructFrame() | |
57 frame:RegisterForClicks("RightButtonUp") | |
58 frame:SetAttribute("type*", "cancelaura" ) | |
59 frame:SetAttribute("unit", "player") | |
60 frame:SetAttribute("index", idx) | |
61 -- position | |
62 local parent = self.buffFrames[idx-1] or self.anchor | |
63 frame:SetPoint("TOP", parent, "BOTTOM", 0, 0) | |
64 self.buffFrames[idx] = frame | |
65 return frame | |
66 end | |
67 | |
68 | 46 |
69 -- creates a icon + statusbar bar | 47 -- creates a icon + statusbar bar |
70 function kbf:ConstructBar(frame) | 48 function kbf:ConstructBar(frame) |
71 local texture = "Interface\\TargetingFrame\\UI-StatusBar" | 49 local texture = "Interface\\TargetingFrame\\UI-StatusBar" |
72 -- Because of secureframe suckiness, these height & width numbers | 50 -- Because of secureframe suckiness, these height & width numbers |
92 bar.icon:ClearAllPoints() | 70 bar.icon:ClearAllPoints() |
93 bar.icon:SetPoint("LEFT", bar, "LEFT", 0, 0) | 71 bar.icon:SetPoint("LEFT", bar, "LEFT", 0, 0) |
94 -- icons are square | 72 -- icons are square |
95 bar.icon:SetWidth(height) | 73 bar.icon:SetWidth(height) |
96 bar.icon:SetHeight(height) | 74 bar.icon:SetHeight(height) |
97 bar.icon:EnableMouse(false) | 75 --bar.icon:EnableMouse(false) |
98 -- the status bar background & foreground | 76 -- the status bar background & foreground |
99 local function setupStatusBar(sb, color) | 77 local function setupStatusBar(sb, color) |
100 sb:ClearAllPoints() | 78 sb:ClearAllPoints() |
101 sb:SetHeight(height) | 79 sb:SetHeight(height) |
102 sb:SetWidth(width) | 80 sb:SetWidth(width) |
170 frame:SetAttribute("point", "CENTER") | 148 frame:SetAttribute("point", "CENTER") |
171 frame:SetAttribute("wrapAfter", 100) -- required due to bugs in secure header | 149 frame:SetAttribute("wrapAfter", 100) -- required due to bugs in secure header |
172 frame:SetAttribute("consolidateTo", nil) | 150 frame:SetAttribute("consolidateTo", nil) |
173 --frame:SetAttribute("wrapXOffset", 0) | 151 --frame:SetAttribute("wrapXOffset", 0) |
174 --frame:SetAttribute("wrapYOffset", -34) | 152 --frame:SetAttribute("wrapYOffset", -34) |
175 frame:SetAttribute("xOffset", 32) | 153 frame:SetAttribute("xOffset", 0) |
176 frame:SetAttribute("yOffset", 0) | 154 frame:SetAttribute("yOffset", 16) |
177 frame:SetAttribute("minWidth", 32) | 155 frame:SetAttribute("minWidth", 32) |
178 frame:SetAttribute("minHeight", 32) | 156 frame:SetAttribute("minHeight", 32) |
179 frame:SetAttribute("unit", "player") | 157 frame:SetAttribute("unit", "player") -- TODO: figure out the vehicle swapping stuff |
180 frame:SetPoint("BOTTOM", anchor, "TOP", 0, 0) | 158 frame:SetPoint("BOTTOM", anchor, "TOP", 0, 0) |
181 frame:SetBackdrop({bgFile = "Interface/Tooltips/UI-Tooltip-Background", | 159 frame:SetBackdrop({bgFile = "Interface/Tooltips/UI-Tooltip-Background", |
182 edgeFile = "Interface/Tooltips/UI-Tooltip-Border", | 160 edgeFile = "Interface/Tooltips/UI-Tooltip-Border", |
183 tile = true, tileSize = 16, edgeSize = 16, | 161 tile = true, tileSize = 16, edgeSize = 16, |
184 insets = { left = 4, right = 4, top = 4, bottom = 4 }, | 162 insets = { left = 4, right = 4, top = 4, bottom = 4 }, |