Mercurial > wow > buffalo2
diff ObjectiveTracker/ObjectiveWidgets.lua @ 24:66b927b46776
Refine the XML data logic, and sort out some EnableMouse inconsistencies.
author | Nenue |
---|---|
date | Mon, 11 Apr 2016 09:07:40 -0400 |
parents | e837384ac363 |
children |
line wrap: on
line diff
--- a/ObjectiveTracker/ObjectiveWidgets.lua Sun Apr 10 04:35:32 2016 -0400 +++ b/ObjectiveTracker/ObjectiveWidgets.lua Mon Apr 11 09:07:40 2016 -0400 @@ -1,19 +1,23 @@ local B = select(2,...).frame -local mod = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame') +local T = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame') local print = B.print('WidgetFactory') -local UIParent = UIParent +local _G, UIParent = _G, UIParent local GetQuestLogSpecialItemInfo, IsQuestLogSpecialItemInRange, GetQuestLogSpecialItemCooldown = GetQuestLogSpecialItemInfo, IsQuestLogSpecialItemInRange, GetQuestLogSpecialItemCooldown local CooldownFrame_SetTimer, SetItemButtonTextureVertexColor, CreateFrame, VeneerObjectiveScroll = CooldownFrame_SetTimer, SetItemButtonTextureVertexColor, CreateFrame, VeneerObjectiveScroll -local tremove, tinsert, tContains, pairs, setmetatable = tremove, tinsert, tContains, pairs, setmetatable - +local tremove, tContains, pairs, ipairs, setmetatable, floor = tremove, tContains, pairs, ipairs, setmetatable, floor +local SetItemButtonTexture, SetItemButtonCount = SetItemButtonTexture, SetItemButtonCount +local ToggleWorldMap, GetTrackedAchievements, GetTasksTable = ToggleWorldMap, GetTrackedAchievements, GetTasksTable +-- GLOBALS: Veneer_QuestObjectiveItem_UpdateCooldown, Veneer_QuestObjectiveItem_OnUpdate --- frame refs local Wrapper = _G.VeneerObjectiveWrapper local Scroller = Wrapper.scrollArea local CloseButton = Wrapper.CloseButton local QuestMapButton = Wrapper.QuestMapButton local Scroll = _G.VeneerObjectiveScroll +local usedButtons = T.Quest.itemButtons +local freeButtons = T.Quest.freeButtons -local panelButtons = { +T.buttons = { CloseButton = { closedSwatch = { [[Interface\Buttons\UI-Panel-QuestHideButton]], @@ -47,8 +51,8 @@ local Scroller_OnShow = function() Wrapper.watchMoneyReasons = 0; - --mod:Update() - --mod:OnInitialize() + --T:Update() + --T:OnInitialize() for i, region in ipairs(Wrapper.headerComplex) do region:Show() end @@ -77,12 +81,13 @@ B.Conf.ObjectiveScroll = s print('|cFF00FF00OnMouseWheel', 'from = ', from, 'scroll =', s, ' range =', r, 'current =', self:GetVerticalScroll()) - mod.UpdateActionButtons('SCROLLING') + T.UpdateActionButtons('SCROLLING') end local UpdatePanelButton = function (self, state) - state = state and B.Conf.FrameState[state] or 1 - local swatch = (state == 1) and self.openSwatch or self.closedSwatch + state = state or true + local swatch = (state == true) and self.openSwatch or self.closedSwatch + print((state ~= true) and 'closedSwatch' or 'openSwatch') self:SetNormalTexture(swatch[1]) self:SetPushedTexture(swatch[2]) if #swatch >= 6 then @@ -96,8 +101,8 @@ local OnClick = {} OnClick.CloseButton = function(self) - Wrapper:Minimize() - UpdatePanelButton(self, self.parent) + T:SetEnabled() + UpdatePanelButton(self, T.Conf.enabled) end OnClick.QuestMapButton = function() @@ -105,7 +110,8 @@ end -mod.InitializeWidgets = function() +T.InitializeWidgets = function() + local panelButtons = T.buttons --- tracker scroll Scroller:SetScript('OnMouseWheel', Scroller_OnMouseWheel) Scroller:SetScript('OnShow', Scroller_OnShow) @@ -119,25 +125,20 @@ if OnClick[name] then button:SetScript('OnClick', OnClick[name]) end - UpdatePanelButton(button, button.parent) + UpdatePanelButton(button, T.Conf.enabled) end end ---------------------------------------------------------------------------------------- ---- XML and script code lifted from "QuestKing 2" by Barjack, ---- found at http://mods.curse.com/addons/wow/questking +--- modified version of the itemButton initializer used by Barjack's 'QuestKing 2' addon, +--- url: http://mods.curse.com/addons/wow/questking ---------------------------------------------------------------------------------------- -local usedButtons = mod.Quest.itemButtons -local freeButtons = mod.Quest.freeButtons -mod.SetItemButton = function(block, info) +T.SetItemButton = function(block, info) local itemInfo = info.specialItem if not itemInfo then return end - --- Quest.GetInfo().specialItem :: {link = link, charges = charges, icon = icon, start = start, duration = duration, enable = enable} - - local itemButton if not info.itemButton then if #freeButtons >= 1 then @@ -149,14 +150,14 @@ itemButton.block = nil end else - local buttonIndex = mod.Quest.numButtons + #freeButtons + 1 + local buttonIndex = T.Quest.numButtons + #freeButtons + 1 itemButton = CreateFrame('Button', 'VeneerQuestItemButton' .. buttonIndex, UIParent, 'VeneerItemButtonTemplate') itemButton.buttonIndex = buttonIndex itemButton:SetSize(36, 36) itemButton:GetNormalTexture():SetSize(36 * (5/3), 36 * (5/3)) print(' |cFFFF4400starting new button', itemButton:GetName()) end - mod.Quest.numButtons = mod.Quest.numButtons + 1 + T.Quest.numButtons = T.Quest.numButtons + 1 else itemButton = info.itemButton print(' |cFF00FF00found assigned button', itemButton:GetName()) @@ -188,20 +189,20 @@ return itemButton end --- Clear an itemButton from the given block -mod.FreeItemButtons = function(block) +T.FreeItemButtons = function(block) if block.itemButton then local itemButton = block.itemButton if itemButton.questID ~= block.info.questID then block.itemButton = nil - itemButton.block = mod.Quest.InfoBlock[itemButton.questID] + itemButton.block = T.Quest.InfoBlock[itemButton.questID] else itemButton.block = nil itemButton:Hide() usedButtons[itemButton.questID] = nil freeButtons[#freeButtons + 1] = itemButton - mod.Quest.numButtons = mod.Quest.numButtons - 1 + T.Quest.numButtons = T.Quest.numButtons - 1 print('|cFFFF0088released', itemButton:GetName(),'and', block:GetName()) end end @@ -215,7 +216,7 @@ if (rangeTimer <= 0) then local link, item, charges, showItemWhenComplete = GetQuestLogSpecialItemInfo(self.questLogIndex) if ((not charges) or (charges ~= self.charges)) then - mod:Update() + T:Update() return end @@ -265,12 +266,12 @@ criteriaID = criteriaID, ]] local newWidgetID = 0 -mod.WidgetRegistry = {} -local wr = mod.WidgetRegistry +T.WidgetRegistry = {} +local wr = T.WidgetRegistry --- 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, data, objectiveType, objectiveKey) +T.SetWidget = function(line, data, objectiveType, objectiveKey) local print = B.print('ObjectiveWidgets') local widgetType = objectiveType local widget @@ -291,12 +292,12 @@ widget.line = line widget.objective = data widget.key = objectiveKey - mod.InitializeWidget(widget) + T.InitializeWidget(widget) return widget end --- WidgetTemplate 'OnLoad' -mod.RegisterWidget = function(frame) +T.RegisterWidget = function(frame) local print = B.print('ObjectiveWidgets') local widgetType = frame.widgetType if not wr[frame.widgetType] then @@ -309,24 +310,24 @@ end --- WidgetTemplate 'OnShow' -mod.InitializeWidget = setmetatable({}, { +T.InitializeWidget = setmetatable({}, { __call = function(t, frame) -- todo: config pull - frame:SetWidth(mod.Conf.Wrapper.Width - mod.Conf.Style.Format.status.Indent * 2) - frame:SetScript('OnEvent', mod.UpdateWidget[frame.widgetType]) + frame:SetWidth(T.Conf.Wrapper.Width - T.Conf.Style.Format.status.Indent * 2) + frame:SetScript('OnEvent', T.UpdateWidget[frame.widgetType]) frame:RegisterEvent('TRACKED_ACHIEVEMENT_UPDATE') frame:RegisterEvent('TRACKED_ACHIEVEMENT_LIST_CHANGED') frame:RegisterEvent('CRITERIA_UPDATE') frame:RegisterEvent('CRITERIA_COMPLETE') frame:RegisterEvent('CRITERIA_EARNED') t[frame.widgetType](frame) - mod.UpdateWidget[frame.widgetType](frame) + T.UpdateWidget[frame.widgetType](frame) end, }) --- WidgetTemplate 'OnEvent' -mod.UpdateWidget = setmetatable({}, { +T.UpdateWidget = setmetatable({}, { __call = function(t, frame) if not frame.widgetType then error('Invalid widget template, needs .widgetType') @@ -338,7 +339,7 @@ }) --- WidgetTemplate 'OnHide' -mod.ReleaseWidget = function(frame) +T.ReleaseWidget = function(frame) --[[ local print = B.print('ObjectiveWidgets') local reg = wr[frame.widgetType] @@ -354,11 +355,11 @@ end --- RemoveTrackedAchievement post-hook -mod.CleanWidgets = function() +T.CleanWidgets = function() local print = B.print('ObjectiveWidgets') local tracked = {GetTrackedAchievements() } local tasks = GetTasksTable() - for type, reg in pairs(mod.WidgetRegistry) do + for type, reg in pairs(T.WidgetRegistry) do print('collecting', type) for key, frame in pairs(reg.used) do if frame.objective.cheevID then @@ -378,7 +379,7 @@ -mod.defaults.WidgetStyle = { +T.defaults.WidgetStyle = { } @@ -388,8 +389,8 @@ local progressFont = _G.VeneerCriteriaFontNormal -mod.InitializeWidget.ProgressBar = function(self) - local c = mod.Conf.Wrapper +T.InitializeWidget.ProgressBar = function(self) + local c = T.Conf.Wrapper self.height = progressHeight + c.TextSpacing self.width = c.Width - c.TextSpacing self.indent = progressIndent @@ -404,7 +405,7 @@ self.status:SetText(self.objective.quantityString) end -mod.UpdateWidget.ProgressBar = function (self) +T.UpdateWidget.ProgressBar = function (self) local quantity, requiredQuantity = self.objective.value, self.objective.maxValue print('update vals:') for k,v in pairs(self.line) do @@ -431,9 +432,9 @@ end -mod.InitializeWidget.Hidden = function (self) +T.InitializeWidget.Hidden = function (self) self.height = 0 end -mod.UpdateWidget.Hidden = function (self) +T.UpdateWidget.Hidden = function (self) self.height= 0 end \ No newline at end of file