Mercurial > wow > buffalo2
comparison BuffFrame/BuffAnchors.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 | 16465f3fd919 |
comparison
equal
deleted
inserted
replaced
| 47:1a322b92dbfa | 48:9837069e366a |
|---|---|
| 14 local print = B.print('Anchor') | 14 local print = B.print('Anchor') |
| 15 local fprint = B.fprint | 15 local fprint = B.fprint |
| 16 local bprint = B.print('AnchorFrame') | 16 local bprint = B.print('AnchorFrame') |
| 17 | 17 |
| 18 local GetAnchorFrame = function(name) | 18 local GetAnchorFrame = function(name) |
| 19 local c = B.displays[name].conf | 19 local c = buffFrame.displays[name].conf |
| 20 local anchors = buffFrame.anchors | |
| 20 local anchorFrom, anchorParent, anchorTo, offsetX, offsetY = unpack(c.Anchor) | 21 local anchorFrom, anchorParent, anchorTo, offsetX, offsetY = unpack(c.Anchor) |
| 21 local print = bprint | 22 local print = bprint |
| 22 if B.anchor[name] then | 23 if anchors[name] and anchors[name].GetName then |
| 23 print('get', B.anchor[name]:GetName()) | 24 print('get', buffFrame.anchors[name]:GetName()) |
| 24 return B.anchor[name], anchorFrom, anchorParent, anchorTo, offsetX, offsetY | 25 return buffFrame.anchors[name], anchorFrom, anchorParent, anchorTo, offsetX, offsetY |
| 25 end | 26 end |
| 26 print('new frame', name) | 27 print('new frame', name) |
| 27 local frame = CreateFrame('Frame', name..'Anchor', UIParent, B.displays[name].anchorTemplate) | 28 local frame = CreateFrame('Frame', name..'Anchor', UIParent, buffFrame.displays[name].anchorTemplate) |
| 28 frame.conf = c | 29 frame.conf = c |
| 29 | 30 |
| 30 local x, dx, y, dy | 31 local x, dx, y, dy |
| 31 local Anchor_OnMouseDown = function() | 32 local Anchor_OnMouseDown = function() |
| 32 if c['Parent'] then | 33 if c['Parent'] then |
| 49 dy = frame:GetTop() - y | 50 dy = frame:GetTop() - y |
| 50 -- update config | 51 -- update config |
| 51 print('|cFFFFFF00**changing', name, 'anchor by', dx, dy) | 52 print('|cFFFFFF00**changing', name, 'anchor by', dx, dy) |
| 52 offsetX = offsetX + dx | 53 offsetX = offsetX + dx |
| 53 offsetY = offsetY + dy | 54 offsetY = offsetY + dy |
| 54 B.Conf[name .. 'Anchor'] = {anchorFrom, anchorParent, anchorTo, offsetX, offsetY } | 55 buffFrame.Conf[name .. 'Anchor'] = {anchorFrom, anchorParent, anchorTo, offsetX, offsetY } |
| 55 frame:SetPoint(anchorFrom, _G[anchorParent], anchorTo, offsetX, offsetY) | 56 frame:SetPoint(anchorFrom, _G[anchorParent], anchorTo, offsetX, offsetY) |
| 56 frame.isMoving = nil | 57 frame.isMoving = nil |
| 57 end | 58 end |
| 58 | 59 |
| 59 local AnchorButton_OnClick = function(self, anchor) | 60 local AnchorButton_OnClick = function(self, anchor) |
| 60 local point, parent, relative = anchor:GetPoint(1) | 61 local point, parent, relative = anchor:GetPoint(1) |
| 61 print('resetting anchors', point, parent:GetName(), relative) | 62 print('resetting anchors', point, parent:GetName(), relative) |
| 62 B.Conf[name..'Point'] = {point, relative} | 63 buffFrame.Conf[name..'Point'] = {point, relative} |
| 63 B.Conf[name..'RelativeX'] = (point:match('RIGHT')) and -1 or 1 | 64 buffFrame.Conf[name..'RelativeX'] = (point:match('RIGHT')) and -1 or 1 |
| 64 B.Conf[name..'RelativeY'] = (point:match('TOP')) and -1 or 1 | 65 buffFrame.Conf[name..'RelativeY'] = (point:match('TOP')) and -1 or 1 |
| 65 wipe(B.drawn[name]) | 66 wipe(buffFrame.drawn[name]) |
| 66 B.UpdateBuffs(name) | 67 buffFrame.UpdateBuffs(name) |
| 67 end | 68 end |
| 68 | 69 |
| 69 frame.OnUpdate = function(self, elapsed) | 70 frame.OnUpdate = function(self, elapsed) |
| 70 print(self:GetName(), elapsed) | 71 print(self:GetName(), elapsed) |
| 71 if self:IsMouseOver() then | 72 if self:IsMouseOver() then |
| 85 -- table addition | 86 -- table addition |
| 86 for i, anchorButton in ipairs(frame.anchorButton) do | 87 for i, anchorButton in ipairs(frame.anchorButton) do |
| 87 anchorButton:SetScript('OnClick', AnchorButton_OnClick) | 88 anchorButton:SetScript('OnClick', AnchorButton_OnClick) |
| 88 end | 89 end |
| 89 | 90 |
| 90 B.displays[name].anchor = frame | 91 buffFrame.displays[name].anchor = frame |
| 91 print(B.displays[name].anchor:GetName()) | 92 print('displays[name].anchor', buffFrame.displays[name].anchor:GetName()) |
| 92 print(B.anchor[name]:GetName()) | 93 print('anchors[name]', buffFrame.anchors[name]:GetName()) |
| 93 return frame, anchorFrom, anchorParent, anchorTo, offsetX, offsetY | 94 return frame, anchorFrom, anchorParent, anchorTo, offsetX, offsetY |
| 94 end | 95 end |
| 95 | 96 |
| 96 --- Handles the preliminary positioning calculation for buff guide anchors | 97 --- Handles the preliminary positioning calculation for buff guide anchors |
| 97 buffFrame.UpdateAnchorFrames = function(name) | 98 buffFrame.UpdateAnchorFrames = function(name) |
| 98 local print = fprint(name) | 99 local print = fprint(name) |
| 99 local c = B.displays[name].conf | 100 local c = buffFrame.displays[name].conf |
| 100 local frame, anchorFrom, anchorParent, anchorTo, offsetX, offsetY = GetAnchorFrame(name) | 101 local frame, anchorFrom, anchorParent, anchorTo, offsetX, offsetY = GetAnchorFrame(name) |
| 101 print('got', frame:GetName()) | 102 print('got', frame:GetName()) |
| 102 frame.buffs = B.guides[name] | 103 frame.buffs = buffFrame.guides[name] |
| 103 frame.heading:SetText(name) | 104 frame.heading:SetText(name) |
| 104 B.SetConfigLayers(frame) | 105 B.SetConfigLayers(frame) |
| 105 | 106 |
| 106 local buffMax = c['Max'] or 3 | 107 local buffMax = c['Max'] or 3 |
| 107 local perRow = c['PerRow'] or 2 | 108 local perRow = c['PerRow'] or 2 |
| 132 print(frame:GetPoint(1)) | 133 print(frame:GetPoint(1)) |
| 133 end | 134 end |
| 134 | 135 |
| 135 --- Handles placement of anchors embedded within anchors (consolidated buffs, maybe temp enchant) | 136 --- Handles placement of anchors embedded within anchors (consolidated buffs, maybe temp enchant) |
| 136 buffFrame.UpdateAnchorAnchors = function() | 137 buffFrame.UpdateAnchorAnchors = function() |
| 138 local displays = buffFrame.displays | |
| 139 local c = buffFrame.Conf | |
| 140 local guides = buffFrame.guides | |
| 137 local print = fprint() | 141 local print = fprint() |
| 138 for buttonName, d in pairs(B.displays) do | 142 for buttonName, d in pairs(displays) do |
| 139 local c = B.displays[buttonName].conf | 143 local c = displays[buttonName].conf |
| 140 local frame = B.anchor[buttonName] | 144 local frame = buffFrame.anchors[buttonName] |
| 141 local parent, child = c.Parent, c.Position | 145 local parent, child = c.Parent, c.Position |
| 142 | 146 |
| 143 frame.parent = nil | 147 frame.parent = nil |
| 144 if B.Conf[buttonName .. 'Parent'] and _G[B.Conf[buttonName .. 'Parent']..'Anchor'] then | 148 if c[buttonName .. 'Parent'] and _G[c[buttonName .. 'Parent']..'Anchor'] then |
| 145 | 149 |
| 146 local anchorAnchor = _G[B.Conf[buttonName .. 'Parent']..'Anchor'] | 150 local anchorAnchor = _G[c[buttonName .. 'Parent']..'Anchor'] |
| 147 local anchorTarget = B.guides[parent][child] | 151 local anchorTarget = guides[parent][child] |
| 148 if anchorTarget then | 152 if anchorTarget then |
| 149 print('link', buttonName, 'to', parent, child) | 153 print('link', buttonName, 'to', parent, child) |
| 150 print(parent, child, B.displays[parent].guides[child]) | 154 print(parent, child, displays[parent].guides[child]) |
| 151 local ac = B.displays[parent].conf | 155 local ac = displays[parent].conf |
| 152 local anchorFrom, anchorTo = unpack(ac.Point) | 156 local anchorFrom, anchorTo = unpack(ac.Point) |
| 153 frame:ClearAllPoints() | 157 frame:ClearAllPoints() |
| 154 frame:SetPoint(anchorFrom, anchorTarget, anchorTo) | 158 frame:SetPoint(anchorFrom, anchorTarget, anchorTo) |
| 155 frame.parent = anchorTarget | 159 frame.parent = anchorTarget |
| 156 anchorTarget.contains = frame | 160 anchorTarget.contains = frame |
