Mercurial > wow > buffalo2
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