Mercurial > wow > buffalo2
diff ObjectiveCore.lua @ 14:ed642234f017
ObjectiveFrame
- implement proper tracker name text
- expanded tracker prototypes to cover "objective lines" formatting and accommodation of widget variables
- implement the progress bars for bonus objectives
ObjectiveStyle
- moved `UpdateWrapperStyle` over and renamed it to fit semantics
- change the formula for block.`height` to measure non-widget content only
- allows widgets to position relative to text
- size FontString `status` to match block.`height`
- full block height is acquired by adding block.`height` and block.`attachmentHeight` which is calculated during objective parsing
ObjectiveWidgets
- use string keys for generated widgets to deal with multiple objectives under the same questID, and maybe dungeon objectives
- wrapper buttons use a common code path
- specialized handlers for wheel scrolling moved over to fit semantics
author | Nenue |
---|---|
date | Mon, 04 Apr 2016 03:16:22 -0400 |
parents | 9455693fc290 |
children | 880828018bf4 |
line wrap: on
line diff
--- a/ObjectiveCore.lua Sat Apr 02 17:46:52 2016 -0400 +++ b/ObjectiveCore.lua Mon Apr 04 03:16:22 2016 -0400 @@ -4,11 +4,9 @@ -- @file-revision@ @file-hash@ -- Created: 3/26/2016 1:51 AM local B = select(2,...).frame -local wipe, pairs, ipairs, min, max, unpack = table.wipe, pairs, ipairs, min, max, unpack -local setmetatable, type = setmetatable, type -local GetNumQuestLeaderBoards, GetAchievementNumCriteria, GetQuestLogLeaderBoard, GetAchievementCriteriaInfo = GetNumQuestLeaderBoards, GetAchievementNumCriteria, GetQuestLogLeaderBoard, GetAchievementCriteriaInfo -local GetQuestLogIndexByID, GetSuperTrackedQuestID, SetSuperTrackedQuestID, GetQuestWatchInfo = GetQuestLogIndexByID, GetSuperTrackedQuestID, SetSuperTrackedQuestID, GetQuestWatchInfo -local mod = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame') +local pairs, setmetatable, type, tostring = pairs, setmetatable, type, tostring +local format = string.format +local M = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame') local print = B.print('Objectives') local ObjectiveTrackerFrame = ObjectiveTrackerFrame @@ -33,29 +31,36 @@ local Scroll = _G.VeneerObjectiveScroll --- Baseline defaults -mod.defaults = { +M.defaults = { } --- list used to make things happen -mod.orderedNames = {[1] = 'AutoQuest', [2] = 'Quest', [3] = 'Cheevs'} +M.orderedNames = {'Bonus', 'AutoQuest', 'Quest', 'Cheevs'} --- ipairs() list of handlers for wrapper update -mod.orderedHandlers = {} -mod.orderedTrackers = {} -mod.indexedTrackers = {} +M.orderedHandlers = {} +M.orderedTrackers = {} +M.indexedTrackers = {} --- pairs() list of handler frames for tracker updates -mod.namedTrackers = {} +M.namedTrackers = {} --- Handler stubs -mod.AutoQuest = { - name = "AutoQuest" +M.AutoQuest = { + name = "AutoQuest", + displayName = "Local Quests", } -mod.Quest = { - name = "Quest" +M.Quest = { + name = "Quest", + displayName = "Quests", } -mod.Cheevs = { - name = "Cheevs" +M.Cheevs = { + name = "Cheevs", + displayName = "Achievements", +} +M.Bonus = { + name = "Bonus", + displayName = "Bonus Objectives", } @@ -100,15 +105,15 @@ print(self, name) local handler = setmetatable({}, { __tostring = function() return name end, - __call = function (self) mod.UpdateTracker(self) end + __call = function (self) M.UpdateTracker(self) end }) - if type(mod.orderedHandlers[index]) == 'table' then - return mod.orderedHandlers[index] + if type(M.orderedHandlers[index]) == 'table' then + return M.orderedHandlers[index] end print('take up locals first') local preset = {} - for k,v in pairs(mod[name]) do + for k,v in pairs(M[name]) do preset[k] = true if type(v) == 'table' then handler[k] = {} @@ -124,7 +129,7 @@ -- assume all tables to be local data; don't inherit or ref handler[k] = {} else - handler[k] = mod.Tracker[k] + handler[k] = M.Tracker[k] end else print(name, 'has its own', k) @@ -134,16 +139,16 @@ for k, v in pairs(handler) do print(string.format("%24s %8s %s", (preset[k] and '|cFFFFFFFF' or '|cFFFFFF00') .. k .. '|r', type(v), tostring(v))) end - mod[name] = handler - mod.orderedHandlers[index] = handler + M[name] = handler + M.orderedHandlers[index] = handler return true end -mod.Tracker = setmetatable({}, { +M.Tracker = setmetatable({}, { __call = CreateHandler, __tostring = function() return 'DEFAULT_TRACKING_HANDLER' end }) -local Tracker = mod.Tracker +local Tracker = M.Tracker Tracker.numWatched = 0 --- number of entries being handled Tracker.numBlocks = 0 --- number of blocks created Tracker.actualBlocks = 0 --- number of blocks in use @@ -169,8 +174,14 @@ handler.freeBlocks[#handler.freeBlocks] = nil else block = CreateFrame('Frame', 'Veneer'..tostring(handler)..'Block'..blockIndex, Scroll, 'VeneerTrackerBlock') - block.SetStyle = mod.SetBlockStyle - block:ClearAllPoints() -- making sure the anchors are clear in case they get added for some other template usage + block.SetStyle = M.SetBlockStyle + block.Select = handler.Select + block.Open = handler.Open + block.Remove = handler.Remove + block.Link = handler.Link + block:SetScript('OnMouseUp', handler.OnMouseUp) + block:SetScript('OnMouseDown', handler.OnMouseDown) + block:ClearAllPoints() end handler.usedBlocks[blockIndex] = block @@ -178,10 +189,10 @@ return handler.usedBlocks[blockIndex] end -function mod:OnInitialize() - self.InitializeTrackers() +function M:OnInitialize() + self.InitializeWrapper() self.InitializeXPTracker() - mod.SetEvents() + M.SetEvents() ObjectiveTrackerFrame:UnregisterAllEvents() ObjectiveTrackerFrame:Hide()