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) |
