diff Modules/BuffFrame.lua @ 121:1f68c46bc4de

BuffFrame: - Added interface framework for selectively hiding certain buff's auxiliary values.
author Nenue
date Mon, 17 Jul 2017 11:51:31 -0400
parents 8c94bee4fdfc
children ea2c616a3b4f
line wrap: on
line diff
--- a/Modules/BuffFrame.lua	Sun Jun 04 18:20:40 2017 -0400
+++ b/Modules/BuffFrame.lua	Mon Jul 17 11:51:31 2017 -0400
@@ -47,7 +47,8 @@
 
   Buttons = {},
   DetectedFrames = {},
-  AuraCache = {}
+  AuraCache = {},
+  ValueMasks = {}
 }
 VeneerBuffFrameButtonMixin = {}
 local Facade = VeneerBuffFrameButtonMixin
@@ -70,6 +71,7 @@
 local expirationCache = {}
 local visibility = {}
 local isHooked = {}
+local valueMasks
 
 plugin.options = {
   nameString = 'Buff Frames',
@@ -303,13 +305,32 @@
     self:SetupButton('TempEnchant'..i)
     _G['TempEnchant'..i..'Border']:SetVertexColor(0.5,0,1,1)
   end
+
+  VeneerData.BuffFrame = VeneerData.BuffFrame or {}
+  VeneerData.BuffFrame.ValueMasks = VeneerData.BuffFrame.ValueMasks or {}
+  valueMasks = VeneerData.BuffFrame.ValueMasks
 end
 
 function plugin:SetHidden(region)
   if not self.hiddenRegions[region] then
     self.hiddenRegions[region] = true
     region:SetShown(false)
-    hooksecurefunc(region)
+
+  end
+end
+
+local lastAuditName = ''
+local lastAuditIndex = ''
+local Audit_OnClick = function(self)
+
+  local facade = self:GetParent()
+  local index = self.index
+  local name = facade.buffName
+  if name then
+    DEFAULT_CHAT_FRAME:AddMessage('|cFF00FFFFVeneer|r: Hiding |cFF00FF88'..name..' value'..index..'|r, type /vn buffs reset to undo.')
+    valueMasks[name] = valueMasks[name] or {}
+    valueMasks[name][index] = false
+    print('AuditClick', name, index, false)
   end
 end
 
@@ -366,6 +387,16 @@
     facade:SetShown(isShown)
   end)
 
+  facade.Audit = facade.Audit or {}
+  for i = 1, 3 do
+    local button = CreateFrame('Button', nil, facade, 'VeneerBuffAuditTemplate')
+    button.index = i
+    button:RegisterForClicks('AnyUp')
+    button:SetScript('OnClick', Audit_OnClick)
+    button:SetPoint('TOPLEFT', 0, (i-1) * 16 * -1)
+    facade.Audit[i] = button
+  end
+
   facade.IsAcquired = true
   facade:SetParent(UIParent)
   facade:SetAllPoints(frame)
@@ -374,6 +405,7 @@
 
 
 --- Set widgets to reflect the passed parameters
+local values = {}
 function plugin:UpdateButton (name, duration, expires)
   local frame = _G[name]
   local facade = self:Acquire(name)
@@ -382,7 +414,6 @@
     print('|cFFFF4400detected', name)
     self:SetupButton(name)
   end
-  print(facade:GetParent():GetName(), facade:GetPoint(1))
   --[[
   if frame.count then
     frame.count:SetText('test')
@@ -391,8 +422,11 @@
     --]]
 
   local name, rank, icon, count, dispelType, duration, expires, caster, isStealable, nameplateShowPersonal, spellID, canApplyAura, isBossDebuff, _, nameplateShowAll, timeMod, value1, value2, value3 = UnitAura(frame.unit, frame:GetID(), frame.filter)
+  values[1] = value1
+  values[2] = value2
+  values[3] = value3
 
-
+  facade.buffName = name
 
   if expires and duration then
     if duration ~= 0 then
@@ -425,13 +459,13 @@
 
       end)
 
-      facade.cooldown:Show()
-      facade.cooldown:SetCooldown(startTime, duration)
+      --facade.cooldown:Show()
+      --facade.cooldown:SetCooldown(startTime, duration)
     else
       print('|cFF00FF88'..frame:GetName()..'|r', 'duration zero')
       facade.progress:SetScript('OnUpdate', nil)
       facade.progress:Hide()
-      facade.cooldown:Hide()
+      --facade.cooldown:Hide()
     end
 
     if count and count > 1 then
@@ -442,15 +476,22 @@
       facade.count:Hide()
     end
 
+    for i, button in ipairs(facade.Audit) do
+      local isShown = (values[i] and true)
+      if valueMasks[name] and valueMasks[name][i] ~= nil then
+        print(':: use value mask', name, i)
+        isShown = (values[i] == 1) and true or false
+      end
 
-    facade.overlay.Value1:SetText(value1)
-    facade.overlay.Value2:SetText(value2)
-    facade.overlay.Value3:SetText(value3)
+      facade.Audit[i]:SetShown(isShown)
+      facade.Audit[i].Value:SetText(values[i])
+    end
+
 
   else
     facade.progress:Hide()
-    facade.cooldown:SetCooldown(0,0)
-    facade.cooldown:Hide()
+    --facade.cooldown:SetCooldown(0,0)
+    --facade.cooldown:Hide()
     print('|cFF88FF00'..frame:GetName()..'|r', 'nil duration')
   end
   facade:Show()