Mercurial > wow > buffalo2
comparison 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 |
comparison
equal
deleted
inserted
replaced
20:6bd2102d340b | 21:d5ee940de273 |
---|---|
65 | 65 |
66 local Scroller_OnMouseWheel = function(self, delta) | 66 local Scroller_OnMouseWheel = function(self, delta) |
67 local r = Scroll:GetHeight() - Scroller:GetHeight() | 67 local r = Scroll:GetHeight() - Scroller:GetHeight() |
68 local s = B.Conf.ObjectiveScroll - delta * floor(r/5+.5) | 68 local s = B.Conf.ObjectiveScroll - delta * floor(r/5+.5) |
69 local from = self:GetVerticalScroll() | 69 local from = self:GetVerticalScroll() |
70 print('|cFF00FF00OnMouseWheel', 'scroll =', s) | |
70 if s >= r then | 71 if s >= r then |
71 s = r | 72 s = r |
72 elseif s < 1 then | 73 elseif s < 1 then |
73 s = 0 | 74 s = 0 |
74 end | 75 end |
266 mod.WidgetRegistry = {} | 267 mod.WidgetRegistry = {} |
267 local wr = mod.WidgetRegistry | 268 local wr = mod.WidgetRegistry |
268 | 269 |
269 --- Get a usable widget for the given achievement criteria set. | 270 --- Get a usable widget for the given achievement criteria set. |
270 -- Returns a frame object with dimensioning parameters needed to size the receiving tracker block | 271 -- Returns a frame object with dimensioning parameters needed to size the receiving tracker block |
271 mod.SetWidget = function(line, info, objectiveType, objectiveKey) | 272 mod.SetWidget = function(line, data, objectiveType, objectiveKey) |
272 local print = B.print('ObjectiveWidgets') | 273 local print = B.print('ObjectiveWidgets') |
273 local widgetType = objectiveType | 274 local widgetType = objectiveType |
274 local widget | 275 local widget |
275 if wr[widgetType] and wr[widgetType].used[objectiveKey] then | 276 if wr[widgetType] and wr[widgetType].used[objectiveKey] then |
276 widget = wr[widgetType].used[objectiveKey] | 277 widget = wr[widgetType].used[objectiveKey] |
285 end | 286 end |
286 | 287 |
287 | 288 |
288 wr[widgetType].used[objectiveKey] = widget | 289 wr[widgetType].used[objectiveKey] = widget |
289 widget.line = line | 290 widget.line = line |
290 widget.info = info | 291 widget.objective = data |
291 widget.key = objectiveKey | 292 widget.key = objectiveKey |
292 mod.InitializeWidget(widget) | 293 mod.InitializeWidget(widget) |
293 return widget | 294 return widget |
294 end | 295 end |
295 | 296 |
311 __call = function(t, frame) | 312 __call = function(t, frame) |
312 -- todo: config pull | 313 -- todo: config pull |
313 | 314 |
314 frame:SetWidth(mod.Conf.Wrapper.Width - mod.Conf.Style.Format.status.Indent * 2) | 315 frame:SetWidth(mod.Conf.Wrapper.Width - mod.Conf.Style.Format.status.Indent * 2) |
315 frame:SetScript('OnEvent', mod.UpdateWidget[frame.widgetType]) | 316 frame:SetScript('OnEvent', mod.UpdateWidget[frame.widgetType]) |
316 if frame.info.isCurrency then | |
317 frame:RegisterEvent('CHAT_MSG_CURRENCY') | |
318 frame:RegisterEvent('CURRENCY_LIST_UPDATE') | |
319 end | |
320 frame:RegisterEvent('TRACKED_ACHIEVEMENT_UPDATE') | 317 frame:RegisterEvent('TRACKED_ACHIEVEMENT_UPDATE') |
321 frame:RegisterEvent('TRACKED_ACHIEVEMENT_LIST_CHANGED') | 318 frame:RegisterEvent('TRACKED_ACHIEVEMENT_LIST_CHANGED') |
322 frame:RegisterEvent('CRITERIA_UPDATE') | 319 frame:RegisterEvent('CRITERIA_UPDATE') |
323 frame:RegisterEvent('CRITERIA_COMPLETE') | 320 frame:RegisterEvent('CRITERIA_COMPLETE') |
324 frame:RegisterEvent('CRITERIA_EARNED') | 321 frame:RegisterEvent('CRITERIA_EARNED') |
361 local tracked = {GetTrackedAchievements() } | 358 local tracked = {GetTrackedAchievements() } |
362 local tasks = GetTasksTable() | 359 local tasks = GetTasksTable() |
363 for type, reg in pairs(mod.WidgetRegistry) do | 360 for type, reg in pairs(mod.WidgetRegistry) do |
364 print('collecting', type) | 361 print('collecting', type) |
365 for key, frame in pairs(reg.used) do | 362 for key, frame in pairs(reg.used) do |
366 if frame.info.cheevID then | 363 if frame.objective.cheevID then |
367 local id = frame.info.cheevID | 364 local id = frame.objective.cheevID |
368 | 365 |
369 if id and not tContains(tracked, id) then | 366 if id and not tContains(tracked, id) then |
370 | 367 |
371 print(' untracked achievement', id, 'associated with', key, frame:GetName()) | 368 print(' untracked achievement', id, 'associated with', key, frame:GetName()) |
372 frame:Hide() | 369 frame:Hide() |
373 end | 370 end |
374 elseif frame.info.questID then | 371 elseif frame.objective.questID then |
375 -- do something for quest task | 372 -- do something for quest task |
376 end | 373 end |
377 end | 374 end |
378 end | 375 end |
379 end | 376 end |
380 | 377 |
381 | 378 |
382 | 379 |
383 mod.defaults.WidgetStyle = { | 380 mod.defaults.WidgetStyle = { |
384 ProgressBar = { | 381 |
385 Spacing = 4, | |
386 bg = { | |
387 Height = 20, | |
388 }, | |
389 fg = { | |
390 Height = 16, | |
391 }, | |
392 status = { | |
393 FontObject = _G.VeneerCriteriaFontNormal | |
394 } | |
395 } | |
396 } | 382 } |
383 | |
384 local progressHeight = 16 | |
385 local progressBorder = 2 | |
386 local progressIndent = 3 | |
387 local progressFont = _G.VeneerCriteriaFontNormal | |
388 | |
389 | |
397 mod.InitializeWidget.ProgressBar = function(self) | 390 mod.InitializeWidget.ProgressBar = function(self) |
398 local c = mod.defaults.WidgetStyle.ProgressBar | 391 local c = mod.Conf.Wrapper |
399 self.height = c.bg.Height + c.Spacing | 392 self.height = progressHeight + c.TextSpacing |
400 self:SetHeight(c.bg.Height) | 393 self.width = c.Width - c.TextSpacing |
401 self.bg:SetHeight(c.bg.Height) | 394 self.indent = progressIndent |
395 | |
396 self:SetHeight(progressHeight) | |
397 self.bg:SetHeight(progressHeight) | |
398 self.bg:SetWidth(self.width) | |
402 self.fg:ClearAllPoints() | 399 self.fg:ClearAllPoints() |
403 self.indent = (c.bg.Height - c.fg.Height) / 2 | |
404 self.fg:SetPoint('BOTTOMLEFT', self, 'BOTTOMLEFT', self.indent, self.indent) | 400 self.fg:SetPoint('BOTTOMLEFT', self, 'BOTTOMLEFT', self.indent, self.indent) |
405 self.fg:SetHeight(c.fg.Height) | 401 self.fg:SetHeight(progressHeight - progressIndent * 2) |
406 self.status:SetFontObject(c.status.FontObject) | 402 self.status:SetFontObject(progressFont) |
407 self.status:SetText(self.info.quantityString) | 403 self.status:SetText(self.objective.quantityString) |
408 end | 404 end |
409 | 405 |
410 mod.UpdateWidget.ProgressBar = function (self) | 406 mod.UpdateWidget.ProgressBar = function (self) |
411 local quantity, requiredQuantity = self.line.value, self.line.maxValue | 407 local quantity, requiredQuantity = self.objective.value, self.objective.maxValue |
412 print('update vals:') | 408 print('update vals:') |
413 for k,v in pairs(self.line) do | 409 for k,v in pairs(self.line) do |
414 print(k, v) | 410 print(k, v) |
415 end | 411 end |
416 | 412 |
417 if self.line.format then | 413 if self.line.format then |
418 self.status:SetFormattedText(self.line.format, self.line.value, self.line.maxValue) | 414 self.status:SetFormattedText(self.line.format, quantity, requiredQuantity) |
419 end | 415 end |
420 | 416 |
421 | 417 local progress = (quantity / requiredQuantity) |
422 if quantity == 0 then | 418 if progress >= 1 then |
419 self.fg:Show() | |
420 self.fg:SetWidth(self.width - self.indent) | |
421 elseif progress > 0 then | |
422 self.fg:Show() | |
423 print('color:', 1-progress*2 , progress*2 - 1,0,1) | |
424 print('width:', (self.width -self.indent) * progress) | |
425 self.fg:SetTexture(1-progress*2 , progress*2,0,1) | |
426 self.fg:SetWidth((self.width -self.indent) * progress) | |
427 else | |
423 self.fg:Hide() | 428 self.fg:Hide() |
424 elseif quantity >= requiredQuantity then | |
425 self.fg:SetWidth(self.bg:GetWidth() - self.indent) | |
426 else | |
427 self.fg:Show() | |
428 self.fg:SetWidth((self.bg:GetWidth() -self.indent) * (quantity / requiredQuantity)) | |
429 end | 429 end |
430 end | 430 end |
431 | 431 |
432 | 432 |
433 mod.InitializeWidget.Hidden = function (self) | 433 mod.InitializeWidget.Hidden = function (self) |