diff ObjectiveWidgets.lua @ 21:d5ee940de273

use hardcoded aesthetic manipulations over loadstring cramming
author Nenue
date Fri, 08 Apr 2016 06:12:05 -0400
parents 605e8f0e46db
children 9b3fa734abff
line wrap: on
line diff
--- a/ObjectiveWidgets.lua	Wed Apr 06 07:54:19 2016 -0400
+++ b/ObjectiveWidgets.lua	Fri Apr 08 06:12:05 2016 -0400
@@ -67,6 +67,7 @@
   local r = Scroll:GetHeight() - Scroller:GetHeight()
   local s = B.Conf.ObjectiveScroll - delta * floor(r/5+.5)
   local from = self:GetVerticalScroll()
+  print('|cFF00FF00OnMouseWheel', 'scroll =', s)
   if s >= r then
     s = r
   elseif s < 1 then
@@ -268,7 +269,7 @@
 
 --- Get a usable widget for the given achievement criteria set.
 -- Returns a frame object with dimensioning parameters needed to size the receiving tracker block
-mod.SetWidget = function(line, info, objectiveType, objectiveKey)
+mod.SetWidget = function(line, data, objectiveType, objectiveKey)
   local print = B.print('ObjectiveWidgets')
   local widgetType = objectiveType
   local widget
@@ -287,7 +288,7 @@
 
   wr[widgetType].used[objectiveKey] = widget
   widget.line = line
-  widget.info = info
+  widget.objective = data
   widget.key = objectiveKey
   mod.InitializeWidget(widget)
   return widget
@@ -313,10 +314,6 @@
 
     frame:SetWidth(mod.Conf.Wrapper.Width - mod.Conf.Style.Format.status.Indent * 2)
     frame:SetScript('OnEvent', mod.UpdateWidget[frame.widgetType])
-    if frame.info.isCurrency then
-      frame:RegisterEvent('CHAT_MSG_CURRENCY')
-      frame:RegisterEvent('CURRENCY_LIST_UPDATE')
-    end
     frame:RegisterEvent('TRACKED_ACHIEVEMENT_UPDATE')
     frame:RegisterEvent('TRACKED_ACHIEVEMENT_LIST_CHANGED')
     frame:RegisterEvent('CRITERIA_UPDATE')
@@ -363,15 +360,15 @@
   for type, reg in pairs(mod.WidgetRegistry) do
     print('collecting', type)
     for key, frame in pairs(reg.used) do
-      if frame.info.cheevID then
-        local id = frame.info.cheevID
+      if frame.objective.cheevID then
+        local id = frame.objective.cheevID
 
         if id and not tContains(tracked, id) then
 
           print('  untracked achievement', id, 'associated with', key, frame:GetName())
           frame:Hide()
         end
-      elseif frame.info.questID then
+      elseif frame.objective.questID then
         -- do something for quest task
       end
     end
@@ -381,51 +378,54 @@
 
 
 mod.defaults.WidgetStyle = {
-  ProgressBar = {
-    Spacing = 4,
-    bg = {
-      Height = 20,
-    },
-    fg = {
-      Height = 16,
-    },
-    status = {
-      FontObject = _G.VeneerCriteriaFontNormal
-    }
-  }
+
 }
+
+local progressHeight = 16
+local progressBorder = 2
+local progressIndent = 3
+local progressFont = _G.VeneerCriteriaFontNormal
+
+
 mod.InitializeWidget.ProgressBar = function(self)
-  local c = mod.defaults.WidgetStyle.ProgressBar
-  self.height = c.bg.Height + c.Spacing
-  self:SetHeight(c.bg.Height)
-  self.bg:SetHeight(c.bg.Height)
+  local c = mod.Conf.Wrapper
+  self.height = progressHeight + c.TextSpacing
+  self.width = c.Width - c.TextSpacing
+  self.indent = progressIndent
+
+  self:SetHeight(progressHeight)
+  self.bg:SetHeight(progressHeight)
+  self.bg:SetWidth(self.width)
   self.fg:ClearAllPoints()
-  self.indent = (c.bg.Height - c.fg.Height) / 2
   self.fg:SetPoint('BOTTOMLEFT', self, 'BOTTOMLEFT', self.indent, self.indent)
-  self.fg:SetHeight(c.fg.Height)
-  self.status:SetFontObject(c.status.FontObject)
-  self.status:SetText(self.info.quantityString)
+  self.fg:SetHeight(progressHeight - progressIndent *  2)
+  self.status:SetFontObject(progressFont)
+  self.status:SetText(self.objective.quantityString)
 end
 
 mod.UpdateWidget.ProgressBar = function (self)
-  local quantity, requiredQuantity = self.line.value, self.line.maxValue
+  local quantity, requiredQuantity = self.objective.value, self.objective.maxValue
   print('update vals:')
   for k,v in pairs(self.line) do
     print(k, v)
   end
 
   if self.line.format then
-    self.status:SetFormattedText(self.line.format, self.line.value, self.line.maxValue)
+    self.status:SetFormattedText(self.line.format, quantity, requiredQuantity)
   end
 
-
-  if quantity == 0 then
+  local progress = (quantity / requiredQuantity)
+  if progress >= 1 then
+    self.fg:Show()
+    self.fg:SetWidth(self.width  - self.indent)
+  elseif progress > 0 then
+    self.fg:Show()
+    print('color:', 1-progress*2 , progress*2 - 1,0,1)
+    print('width:', (self.width  -self.indent) * progress)
+    self.fg:SetTexture(1-progress*2 , progress*2,0,1)
+    self.fg:SetWidth((self.width  -self.indent) * progress)
+  else
     self.fg:Hide()
-  elseif quantity >= requiredQuantity then
-    self.fg:SetWidth(self.bg:GetWidth() - self.indent)
-  else
-    self.fg:Show()
-    self.fg:SetWidth((self.bg:GetWidth() -self.indent) * (quantity / requiredQuantity))
   end
 end