comparison BuffFrame/RaidBuffTray.lua @ 49:16465f3fd919

- remove UpdateAnchorAnchors and use hardlink for the one frame that this applied to
author Nenue
date Fri, 29 Apr 2016 10:50:27 -0400
parents 9837069e366a
children 5db587de8feb
comparison
equal deleted inserted replaced
48:9837069e366a 49:16465f3fd919
3 -- @project-revision@ @project-hash@ 3 -- @project-revision@ @project-hash@
4 -- @file-revision@ @file-hash@ 4 -- @file-revision@ @file-hash@
5 -- Created: 3/20/2016 10:00 PM 5 -- Created: 3/20/2016 10:00 PM
6 6
7 local _, A = ... 7 local _, A = ...
8 local B = A.frame 8 local vn = A.frame
9 local MODULE = 'BuffFrame' 9 local MODULE = 'BuffFrame'
10 local M = B:RegisterModule(MODULE) 10 local Aura = vn:RegisterModule(MODULE)
11 local displays = B.displays
12
13 local parentAnchor, parentFrame, raidbuffsFrame 11 local parentAnchor, parentFrame, raidbuffsFrame
14 local band, lshift, CreateFrame = bit.band, bit.lshift, CreateFrame 12 local unpack, band, lshift, CreateFrame = unpack,bit.band, bit.lshift, CreateFrame
15 local raidBuffs = {} 13 local raidBuffs = {}
16 local raidBuffSymbols = {'St', 'HP', 'AP', 'Ha', 'SP', 'Cr', 'Ma', 'MS', 'V' } 14 local raidBuffSymbols = {'St', 'HP', 'AP', 'Ha', 'SP', 'Cr', 'Ma', 'MS', 'V' }
17 local missingBuffs = {} 15 local missingBuffs = {}
18 local playerBuffing, playerCurrentBuff 16 local playerBuffing, playerCurrentBuff
19 local playerBuffs = {} 17 local playerBuffs = {}
20 local c, ac, frameSize, frameSpacing, framePosition 18 local c, ac, frameSize, frameSpacing, framePosition
21 local fprint = B.fprint 19 local fprint = vn.fprint
20 local xprint = vn.print('XML')
22 local NUM_LE_MISSING_RAID_BUFFS = 0 21 local NUM_LE_MISSING_RAID_BUFFS = 0
23 local missingBuffsAnchor 22 local missingBuffsAnchor
24 23
25 24
26 --- Takes a given icon texture and calls the pre-defined function set 25 --- Takes a given icon texture and calls the pre-defined function set
27 M.UpdateBuffStyle = function(buff, style, path) 26 Aura.UpdateBuffStyle = function(buff, style, path)
28 local print = fprint() 27 local print = fprint()
29 local icon = buff.icon 28 local icon = buff.icon
30 local symbol = buff.symbol 29 local symbol = buff.symbol
31 path = path or icon.iconPath 30 path = path or icon.iconPath
32 --print(style, icon.iconStyle) 31 --print(style, icon.iconStyle)
37 icon.iconPath = path 36 icon.iconPath = path
38 else 37 else
39 --print('|cFF00FF88UpdateBuffStyle(|r', icon:GetName(), style, path, ') same values, ignore') 38 --print('|cFF00FF88UpdateBuffStyle(|r', icon:GetName(), style, path, ') same values, ignore')
40 return 39 return
41 end 40 end
42 local styleset = B.BuffStyles[style] 41 local styleset = Aura.BuffStyles[style]
43 if not path or path == '' then 42 if not path or path == '' then
44 print('path is nil/empty') 43 print('path is nil/empty')
45 icon:SetTexture(1, 1, 1, 1) 44 icon:SetTexture(1, 1, 1, 1)
46 icon:SetVertexColor(unpack(styleset.Color)) 45 icon:SetVertexColor(unpack(styleset.Color))
47 else 46 else
61 --- Populates a list of targets needing a buff, fired by a handler 60 --- Populates a list of targets needing a buff, fired by a handler
62 local PlayerBuffTodo ={} 61 local PlayerBuffTodo ={}
63 local PlayerBuffStatus = {} 62 local PlayerBuffStatus = {}
64 local UnitClass, IsInGroup, GetNumGroupMembers, UnitAura = UnitClass, IsInGroup, GetNumGroupMembers, UnitAura 63 local UnitClass, IsInGroup, GetNumGroupMembers, UnitAura = UnitClass, IsInGroup, GetNumGroupMembers, UnitAura
65 local GetTalentInfoByID, GetActiveSpecGroup, GetStablePetInfo, GetSpecialization = GetTalentInfoByID, GetActiveSpecGroup, GetStablePetInfo, GetSpecialization 64 local GetTalentInfoByID, GetActiveSpecGroup, GetStablePetInfo, GetSpecialization = GetTalentInfoByID, GetActiveSpecGroup, GetStablePetInfo, GetSpecialization
66 M.UpdateBuffStatus = function(aura, filters) 65 Aura.UpdateBuffStatus = function(aura, filters)
66 local print = xprint
67 if not PlayerBuffStatus[aura] then 67 if not PlayerBuffStatus[aura] then
68 PlayerBuffStatus[aura] = {} 68 PlayerBuffStatus[aura] = {}
69 end 69 end
70
71
72 print(UnitClass('player')) 70 print(UnitClass('player'))
73 if IsInGroup() then 71 if IsInGroup() then
74 local numBuffed = 0 72 local numBuffed = 0
75 local partySize = GetNumGroupMembers() 73 local partySize = GetNumGroupMembers()
76 local missing = {} 74 local missing = {}
97 if test == true then 95 if test == true then
98 -- it's a passive effect that is always on 96 -- it's a passive effect that is always on
99 return true, true 97 return true, true
100 else 98 else
101 if c.spec then 99 if c.spec then
102 if not (result and c.spec == B.PlayerSpec) then 100 if not (result and c.spec == vn.PlayerSpec) then
103 return false 101 return false
104 end 102 end
105 end 103 end
106 104
107 if c.talent then 105 if c.talent then
129 end 127 end
130 return true, false 128 return true, false
131 end 129 end
132 130
133 --- events: PLAYER_SPECIALIZATION_CHANGED 131 --- events: PLAYER_SPECIALIZATION_CHANGED
134 function M:UpdateBuffsTodo (unit) 132 function Aura:UpdateBuffsTodo (unit)
135 -- buffs vs. auras 133 -- buffs vs. auras
136 if unit ~= 'player' then 134 if unit ~= 'player' then
137 -- look for changes in the GIST manifest and sort them out 135 -- look for changes in the GIST manifest and sort them out
138 return 136 return
139 end 137 end
141 local class = UnitClass('player') 139 local class = UnitClass('player')
142 local spec = GetSpecialization() 140 local spec = GetSpecialization()
143 if not class or 141 if not class or
144 not spec or 142 not spec or
145 not IsInGroup() or 143 not IsInGroup() or
146 not B.PlayerBuffStatus[class] then 144 not Aura.PlayerBuffStatus[class] then
147 -- if just logging in, info won't be available for several seconds 145 -- if just logging in, info won't be available for several seconds
148 -- if not grouped, don't calc 146 -- if not grouped, don't calc
149 -- hide frame 147 -- hide frame
150 B.PlayerBuffsActive = function() return false end 148 Aura.PlayerBuffsActive = function() return false end
151 return 149 return
152 end 150 end
153 151
154 -- verify change 152 -- verify change
155 if B.PlayerCurrentSpec == spec or B.PlayerClass == class then 153 if vn.PlayerCurrentSpec == spec or vn.PlayerClass == class then
156 return 154 return
157 end 155 end
158 B.PlayerCurrentSpec = spec 156 vn.PlayerCurrentSpec = spec
159 B.PlayerClass = class 157 vn.PlayerClass = class
160 158
161 local test = B.ClassRaidBuffs 159 local test = vn.ClassRaidBuffs
162 local buffTypes = {} 160 local buffTypes = {}
163 local auraTypes = {} 161 local auraTypes = {}
164 for i = 1, NUM_LE_RAID_BUFF_TYPES do 162 for i = 1, NUM_LE_RAID_BUFF_TYPES do
165 local name, filters 163 local name, filters
166 if test[i] and test[i][class] then 164 if test[i] and test[i][class] then
168 else 166 else
169 playerBuffs[i] = nil 167 playerBuffs[i] = nil
170 end 168 end
171 169
172 if name then 170 if name then
173 B.UpdateBuffStatus(name, filters) 171 vn.UpdateBuffStatus(name, filters)
174 end 172 end
175 end 173 end
176 end 174 end
177 175
178 -- Called once to setup the ConsolidatedBuffs stencil 176 -- Called once to setup the ConsolidatedBuffs stencil
179 local consolidatedBuffsLoaded 177 local consolidatedBuffsLoaded, displays
180 M.SetConsolidatedBuffs = function() 178 Aura.SetConsolidatedBuffs = function()
181 local displays = M.displays
182 local print = fprint() 179 local print = fprint()
180 displays = Aura.displays
183 c = displays.ConsolidatedBuff.conf 181 c = displays.ConsolidatedBuff.conf
184 parentFrame = M.guides[c.Parent][c.Position] 182 parentFrame = Aura.guides[c.Parent][c.Position]
185 raidbuffsFrame = M.anchors.ConsolidatedBuff 183 raidbuffsFrame = Aura.anchors.ConsolidatedBuff
186 184
187 B.SetConfigLayers(raidbuffsFrame) 185 vn.SetConfigLayers(raidbuffsFrame)
188 consolidatedBuffsLoaded = true 186 consolidatedBuffsLoaded = true
189 ConsolidatedBuffs:ClearAllPoints() 187 ConsolidatedBuffs:ClearAllPoints()
190 ConsolidatedBuffs:SetAllPoints(parentFrame.icon) 188 ConsolidatedBuffs:SetAllPoints(parentFrame.icon)
191 if c.Icon then 189 if c.Icon then
192 ConsolidatedBuffsIcon:SetAllPoints(parentFrame.icon) 190 ConsolidatedBuffsIcon:SetAllPoints(parentFrame.icon)
196 end 194 end
197 195
198 ConsolidatedBuffsCount:Hide() 196 ConsolidatedBuffsCount:Hide()
199 end 197 end
200 198
199 local CanShowConsolidated = function()
200 return IsInGroup() and GetCVarBool("consolidateBuffs")
201 end
202
201 local missingTypes = {} 203 local missingTypes = {}
202 local raidBuffsInitialized 204 local raidBuffsInitialized
203 M.UpdateRaidBuffs = function() 205 Aura.UpdateRaidBuffs = function()
204 local print = fprint() 206 local print = xprint
205 if not consolidatedBuffsLoaded then 207 if not consolidatedBuffsLoaded then
206 M.SetConsolidatedBuffs() 208 Aura.SetConsolidatedBuffs()
207 end 209 end
208 210
209 if not M.ShowConsolidated or not parentFrame.contains then 211 if not CanShowConsolidated() then
210 print(' hiding raid buffs square') 212
211 if raidBuffsInitialized then 213 if parentFrame.contains then
212 for i = 1, 9 do 214 print((CanShowConsolidated() and '|cFF88FF88' or '|cFF444444')..'showConsolidated|r', (parentFrame.contains and '|cFF88FF88' or '|cFF444444') .. 'parent.contains|r')
213 if raidBuffs[i] then 215 if raidBuffsInitialized then
214 raidBuffs[i]:Hide() 216 for i = 1, 9 do
217 if raidBuffs[i] then
218 raidBuffs[i]:Hide()
219 end
215 end 220 end
216 end 221 raidBuffsInitialized = nil
217 raidBuffsInitialized = nil 222 end
218 end 223 if parentFrame then
219 if parentFrame then 224 print(c.Parent, c.Position)
220 print(c.Parent, c.Position) 225 print('de-flagging parent')
221 print('de-flagging parent') 226 parentFrame.contains = nil
222 parentFrame.contains = nil 227 end
223 end 228 raidbuffsFrame:Hide()
224 raidbuffsFrame:Hide() 229 end
225 return 230
226 end 231 return
227 232 --- ENDS HERE IF NOT SHOWING CONSOLIDATED FRAME
228 local c = B.displays.ConsolidatedBuff.conf 233 end
229 if parentFrame and not parentFrame.contains then 234
235 local c = Aura.displays.ConsolidatedBuff.conf
236 if CanShowConsolidated() and not parentFrame.contains then
230 raidBuffsInitialized = true 237 raidBuffsInitialized = true
231 print('re-flagging parent', parentFrame:GetName()) 238 print('re-flagging parent', parentFrame:GetName())
232 parentFrame.contains = parentFrame 239 parentFrame.contains = parentFrame
233 B.decors[c.Parent][c.Position]:Hide() 240 Aura.decors[c.Parent][c.Position]:Hide()
241 raidbuffsFrame:SetPoint('TOPRIGHT', parentFrame, 'TOPRIGHT')
234 raidbuffsFrame:Show() 242 raidbuffsFrame:Show()
235 243
236 -- make sure parent icon is updated 244 -- make sure parent icon is updated
237 local w = c.Size*c.PerRow+c.Spacing*(c.PerRow-1)+c.Border*2 245 local w = c.Size*c.PerRow+c.Spacing*(c.PerRow-1)+c.Border*2
238 parentFrame:SetSize(w, w) 246 parentFrame:SetSize(w, w)
239 parentFrame.icon:SetSize(w - c.Border*2, w - c.Border*2) 247 parentFrame.icon:SetSize(w - c.Border*2, w - c.Border*2)
240 parentFrame.contains = raidbuffsFrame 248 parentFrame.contains = raidbuffsFrame
241 249
242 M.UpdateBuffs(c.Parent) 250 Aura.UpdateBuffs(c.Parent)
243 end 251 end
244 252
245 -- have to loop again due to tainting restrictions 253 -- have to loop again due to tainting restrictions
246 -- could compare the tooltip font object pointers, but that may change 254 -- could compare the tooltip font object pointers, but that may change
247 local buffStack = GetRaidBuffInfo() 255 local buffStack = GetRaidBuffInfo()
248 print(GetRaidBuffInfo()) 256 print(GetRaidBuffInfo())
249 local guides = B.guides.ConsolidatedBuff 257 local guides = vn.guides.ConsolidatedBuff
250 local numBuffs = 0 258 local numBuffs = 0
251 local numAvailable = 0 259 local numAvailable = 0
252 local mask = 1 260 local mask = 1
253 if buffStack == nil then 261 if buffStack == nil then
254 return -- discard 262 return -- discard
294 icon = '' 302 icon = ''
295 end 303 end
296 end 304 end
297 mask = lshift(mask, 1) 305 mask = lshift(mask, 1)
298 306
299 M.UpdateBuffStyle(buff, buffStyle, icon) 307 Aura.UpdateBuffStyle(buff, buffStyle, icon)
300 end 308 end
301 309
302 -- todo: filter by castable and suppress for non-overlapping auras 310 -- todo: filter by castable and suppress for non-overlapping auras
303 311
304 raidbuffsFrame.label:SetText(numBuffs..'/'..numAvailable) 312 raidbuffsFrame.label:SetText(numBuffs..'/'..numAvailable)
305 print(parentFrame:GetName(), parentFrame:GetSize()) 313 print(parentFrame:GetName(), parentFrame:GetSize())
306 314
307 if B.ShowMissingBuffs then 315 if vn.ShowMissingBuffs then
308 B.UpdateMissingBuffs() 316 vn.UpdateMissingBuffs()
309 elseif missingBuffsAnchor and missingBuffsAnchor:IsVisible() then 317 elseif missingBuffsAnchor and missingBuffsAnchor:IsVisible() then
310 for i = 1, NUM_LE_MISSING_RAID_BUFFS do 318 for i = 1, NUM_LE_MISSING_RAID_BUFFS do
311 missingBuffs[i]:Hide() 319 missingBuffs[i]:Hide()
312 end 320 end
313 end 321 end
314 end 322 end
315 323
316 B.UpdateMissingBuffs = function() 324 vn.UpdateMissingBuffs = function()
317 local print = B.fprint() 325 local print = vn.fprint()
318 local numMissing = 0 326 local numMissing = 0
319 327
320 local firstMissing, lastMissing 328 local firstMissing, lastMissing
321 for i = 1, NUM_LE_RAID_BUFF_TYPES do 329 for i = 1, NUM_LE_RAID_BUFF_TYPES do
322 local name, _, icon, start, duration, spellID, slot = GetRaidBuffTrayAuraInfo(i) 330 local name, _, icon, start, duration, spellID, slot = GetRaidBuffTrayAuraInfo(i)
323 331
324 if not name then 332 if not name then
325 numMissing = numMissing + 1 333 numMissing = numMissing + 1
326 334
327 print('missing buff', i, numMissing) 335 print('missing buff', i, numMissing)
328 B.UpdateBuffStyle(raidBuffs[i].icon, 'missing', "") 336 vn.UpdateBuffStyle(raidBuffs[i].icon, 'missing', "")
329 337
330 missingBuffs[numMissing] = missingBuffs[numMissing] or CreateFrame('Button', 'VeneerMissingBuff' .. numMissing, raidbuffsFrame, 'VeneerMissingBuffTemplate') 338 missingBuffs[numMissing] = missingBuffs[numMissing] or CreateFrame('Button', 'VeneerMissingBuff' .. numMissing, raidbuffsFrame, 'VeneerMissingBuffTemplate')
331 339
332 local missing = missingBuffs[numMissing] 340 local missing = missingBuffs[numMissing]
333 341