comparison BuffFrame/BuffButton.lua @ 48:9837069e366a

move BuffFrame-specific things out of Veneer.lua straighten out table hierarchy for BuffFrame module
author Nenue
date Thu, 28 Apr 2016 06:58:13 -0400
parents 1a322b92dbfa
children d7655c4e6e06
comparison
equal deleted inserted replaced
47:1a322b92dbfa 48:9837069e366a
2 -- @file-author@ 2 -- @file-author@
3 -- @project-revision@ @project-hash@ 3 -- @project-revision@ @project-hash@
4 -- @file-revision@ @file-hash@ 4 -- @file-revision@ @file-hash@
5 -- Created: 3/12/2016 12:47 AM 5 -- Created: 3/12/2016 12:47 AM
6 local MODULE = 'BuffFrame' 6 local MODULE = 'BuffFrame'
7 local _, A = ... 7
8 local B, _G = A.frame, _G 8 local _
9 local B, _G = select(2,...).frame, _G
9 local type, unpack, select, pairs, ipairs = _G.type, _G.unpack, _G.select, _G.pairs, _G.ipairs 10 local type, unpack, select, pairs, ipairs = _G.type, _G.unpack, _G.select, _G.pairs, _G.ipairs
10 local min, ceil, mod, tonumber, tostring = _G.min, _G.ceil, _G.mod, _G.tonumber, _G.tostring 11 local min, ceil, mod, tonumber, tostring = _G.min, _G.ceil, _G.mod, _G.tonumber, _G.tostring
11 local floor, wipe, max = _G.math.floor, _G.table.wipe, _G.math.max 12 local floor, wipe, max = _G.math.floor, _G.table.wipe, _G.math.max
12 local CreateFrame, IsInGroup, GetCVarBool = _G.CreateFrame, _G.IsInGroup, _G.GetCVarBool 13 local CreateFrame, IsInGroup, GetCVarBool = _G.CreateFrame, _G.IsInGroup, _G.GetCVarBool
13 local BuffFrame, ConsolidatedBuffs = _G.BuffFrame, _G.ConsolidatedBuffs 14 local BuffFrame, ConsolidatedBuffs = _G.BuffFrame, _G.ConsolidatedBuffs
15 local UnitAura, UnitName, RegisterStateDriver = _G.UnitAura, _G.UnitName, _G.RegisterStateDriver
16
17 local M = B:RegisterModule(MODULE)
18 local displays = M.displays
14 local print, gprint, aprint, fprint = B.print('Buff'), B.print('SetGuides'), B.print('SetAnchors'), B.fprint 19 local print, gprint, aprint, fprint = B.print('Buff'), B.print('SetGuides'), B.print('SetAnchors'), B.fprint
15 local displays, anchors, guides, decors, positioned, drawn, zoom = B.displays, {}, {}, {}, {}, {}, {}
16 local UnitAura, UnitName, RegisterStateDriver = _G.UnitAura, _G.UnitName, _G.RegisterStateDriver
17
18 local M = B:RegisterModule(MODULE)
19 20
20 M.GetBuffZoom = function(buffName) 21 M.GetBuffZoom = function(buffName)
21 local zoom = tonumber(B.displays[buffName].conf['Zoom']) / 100 / 2 22 local zoom = tonumber(M.displays[buffName].conf['Zoom']) / 100 / 2
22 local zoomL, zoomU, zoomR, zoomD = zoom, zoom, 1-zoom, 1-zoom 23 local zoomL, zoomU, zoomR, zoomD = zoom, zoom, 1-zoom, 1-zoom
23 print(buffName, zoom) 24 print(buffName, zoom)
24 return function(self, ...) 25 return function(self, ...)
25 if select('#',...) == 4 then 26 if select('#',...) == 4 then
26 zoomL, zoomR, zoomU, zoomD = ... 27 zoomL, zoomR, zoomU, zoomD = ...
48 --- Called infrequently to align stencil frames 49 --- Called infrequently to align stencil frames
49 local refreshCount = 0 50 local refreshCount = 0
50 M.UpdateGuideFrames = function(buffName) 51 M.UpdateGuideFrames = function(buffName)
51 refreshCount = refreshCount + 1 52 refreshCount = refreshCount + 1
52 local print = fprint() 53 local print = fprint()
53 54 print(buffName)
55 local displays, anchors = M.displays, M.anchors
56 local guides, decors = M.guides, M.decors
54 57
55 local anchor = anchors[buffName] 58 local anchor = anchors[buffName]
56 local c, g, d = displays[buffName].conf, guides[buffName], decors[buffName] 59 local c, g, d = displays[buffName].conf, guides[buffName], decors[buffName]
57 local perRow = c['PerRow'] 60 local perRow = c['PerRow']
58 local buffSpacing, buffSize, buffBorder, buffDurationSize, buffCountSize, relativeX, relativeY = c['Spacing'], c['Size'], c['Border'], c['DurationSize'], c['CountSize'], c['RelativeX'], c['RelativeY'] 61 local buffSpacing, buffSize, buffBorder, buffDurationSize, buffCountSize, relativeX, relativeY = c['Spacing'], c['Size'], c['Border'], c['DurationSize'], c['CountSize'], c['RelativeX'], c['RelativeY']
196 local print = fprint() 199 local print = fprint()
197 local c = auraType.conf 200 local c = auraType.conf
198 local numBuffs = 0 201 local numBuffs = 0
199 local actualIcons = auraType.actualIcons() 202 local actualIcons = auraType.actualIcons()
200 local maxIcons = auraType.maxIcons 203 local maxIcons = auraType.maxIcons
204 local guides, decors, anchors, drawn = M.guides, M.decors, M.anchors, M.drawn
205
201 local anchor = anchors[buffName] 206 local anchor = anchors[buffName]
202 local buffMax = c['Max'] 207 local buffMax = c['Max']
203 local consolidated = (anchor.contains and IsInGroup()) 208 local consolidated = (anchor.contains and IsInGroup())
204 local consolidatedPosition = (consolidated and anchor.containPosition or 0) 209 local consolidatedPosition = (consolidated and anchor.containPosition or 0)
205 210
369 374
370 end 375 end
371 376
372 M.PostBuffAnchors = function() 377 M.PostBuffAnchors = function()
373 local print = fprint() 378 local print = fprint()
379 local anchors = M.anchors
374 if M.ShowConsolidatedBuffs then 380 if M.ShowConsolidatedBuffs then
375 M.UpdateRaidBuffs() 381 M.UpdateRaidBuffs()
376 end 382 end
377 for buttonName, auraType in pairs(displays) do 383 for buttonName, auraType in pairs(displays) do
378 print('sending', buttonName, auraType) 384 print('sending', buttonName, auraType)
389 M.UpdateButtonPositions(buttonName, auraType) 395 M.UpdateButtonPositions(buttonName, auraType)
390 end 396 end
391 end 397 end
392 398
393 M.UpdateBuffs = function(buttonName, forced) 399 M.UpdateBuffs = function(buttonName, forced)
400 local displays, drawn = M.displays, M.drawn
394 local print = B.fprint(buttonName) 401 local print = B.fprint(buttonName)
395 local c = displays[buttonName].conf 402 local c = displays[buttonName].conf
396 if drawn[buttonName] then 403 if drawn[buttonName] then
397 wipe(drawn[buttonName]) 404 wipe(drawn[buttonName])
398 else 405 else
404 M.UpdateButtonPositions(buttonName, displays[buttonName]) 411 M.UpdateButtonPositions(buttonName, displays[buttonName])
405 end 412 end
406 413
407 --- should only be called from user input 414 --- should only be called from user input
408 print('init def') 415 print('init def')
409 function M:OnInitialize ()
410 drawn = B.Abstract(B.displays, 'drawn')
411 -- Lesser extent of guide frames that have been positioned
412 positioned = B.Abstract(B.displays, 'positioned', positioned)
413 -- Backdrop style frame
414 decors = B.Abstract(B.displays, 'decorator', decors)
415 -- Static positioning frames
416 guides = B.Abstract(B.displays, 'guides', guides)
417 -- Anchor points for guides
418 anchors = B.Abstract(B.displays, 'anchor')
419 -- Stored functions for doing icon texture adjustments
420 zoom = B.Abstract(B.displays, 'zoom', zoom)
421
422 B:RegisterUnitEvent("UNIT_AURA", "player", "vehicle")
423 B:RegisterEvent("GROUP_ROSTER_UPDATE")
424 B:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED")
425 hooksecurefunc("BuffFrame_UpdateAllBuffAnchors", M.PostBuffAnchors)
426 hooksecurefunc("RaidBuffTray_Update", M.UpdateRaidBuffs)
427 end
428 print('update def')
429 function M:OnUpdate ()
430 M.ShowConsolidated = (IsInGroup() and GetCVarBool("consolidateBuffs"))
431 M.ShowMissingBuffs = (IsInGroup() and B.Conf.RaidShowMissing)
432
433 for name, auraType in pairs(displays) do
434 print(name, auraType)
435 M.UpdateBuffs(auraType.buffName, true)
436 end
437
438 M.UpdateAnchorAnchors()
439 M.UpdateRaidBuffs()
440 M.UpdateBuffsTodo()
441 end