Mercurial > wow > buffalo2
comparison ObjectiveTracker/Quests.lua @ 38:1f8f9cc3d956
- module integration brought up to speed with current frame management structure
author | Nenue |
---|---|
date | Thu, 21 Apr 2016 11:36:41 -0400 |
parents | e84d645c8ab8 |
children | 92534dc793f2 |
comparison
equal
deleted
inserted
replaced
37:e84d645c8ab8 | 38:1f8f9cc3d956 |
---|---|
12 local format, wipe, select = format, table.wipe, select | 12 local format, wipe, select = format, table.wipe, select |
13 local wipeall = B.wipeall | 13 local wipeall = B.wipeall |
14 local lprint, iprint, tprint = B.print('Line'), B.print('Info'), B.print('Tracker') | 14 local lprint, iprint, tprint = B.print('Line'), B.print('Info'), B.print('Tracker') |
15 local print = tprint | 15 local print = tprint |
16 | 16 |
17 | |
18 | |
17 local superTrackQuestID, playerMoney, inScenario, showPOIs | 19 local superTrackQuestID, playerMoney, inScenario, showPOIs |
18 Quest.Update = function(self, reason, ...) | 20 Quest.Update = function(self, reason, ...) |
19 local print = tprint | 21 local print = self.print |
20 print('QuestTracker:Update() received') | 22 print('QuestTracker:Update() received') |
21 T.UpdateActionButtons() | 23 T.UpdateActionButtons() |
22 Default.Update(self, reason, ...) | 24 Default.Update(self, reason, ...) |
23 end | 25 end |
24 | 26 |
25 T.Quest.numButtons = 0 | 27 T.Quest.numButtons = 0 |
26 local usedButtons = T.Quest.itemButtons | 28 local usedButtons = T.Quest.itemButtons |
27 local freeButtons = T.Quest.freeButtons | 29 local freeButtons = T.Quest.freeButtons |
28 | 30 |
29 Quest.UpdateObjectives = function(handler, block) | 31 Quest.UpdateObjectives = function(self, block) |
30 local print = lprint | 32 local print = lprint |
31 print('|cFF00FFFFUpdateObjectives()') | 33 print('|cFF'..self.internalColor..'UpdateObjectives()') |
32 local info = block.info | 34 local info = block.info |
33 | 35 |
34 print((info.isAccount and 'isAccount' or ''), (info.isFaction and 'isFaction' or ''), (info.isDaily and 'isDaily' or ''), (info.isWeekly and 'isWeekly' or ''), info.tagID, info.tagName) | 36 print((info.isAccount and 'isAccount' or ''), (info.isFaction and 'isFaction' or ''), (info.isDaily and 'isDaily' or ''), (info.isWeekly and 'isWeekly' or ''), info.tagID, info.tagName) |
35 | 37 |
38 local displayObjectives = true | |
36 local block_schema = 'default' | 39 local block_schema = 'default' |
37 if info.isAccount then | 40 if info.isAccount then |
38 if info.isFaction then | 41 if info.isFaction then |
39 print(' faction', info.tagID) | 42 print(' faction', info.tagID) |
40 block_schema = 'faction_'..info.tagID | 43 block_schema = 'faction_'..info.tagID |
53 if info.isComplete then | 56 if info.isComplete then |
54 if info.isAutoComplete then | 57 if info.isAutoComplete then |
55 local questID, popupType = GetAutoQuestPopUp(info.logIndex) | 58 local questID, popupType = GetAutoQuestPopUp(info.logIndex) |
56 if popupType == 'COMPLETE' then | 59 if popupType == 'COMPLETE' then |
57 print(' :: auto-complete quest :: set the message') | 60 print(' :: auto-complete quest :: set the message') |
58 info.completionText = T.strings.CLICK_TO_COMPLETE | 61 self:AddLine(block, T.strings.CLICK_TO_COMPLETE, nil, 'complete') |
59 end | 62 end |
60 else | 63 else |
61 if not completionText or info.completionText then | 64 if not completionText or info.completionText then |
62 info.completionText = GetQuestLogCompletionText(info.logIndex) | 65 info.completionText = GetQuestLogCompletionText(info.logIndex) |
63 end | 66 end |
64 end | 67 end |
65 print(' :: complete quest :: show instruction: "'.. tostring(info.completionText) .. '"') | 68 self:AddLine(block, info.completionText, nil, 'complete') |
66 end | 69 displayObjectives = false |
67 | 70 print('|cFF'..self.internalColor..' :: complete quest :: show instruction: "'.. tostring(info.completionText) .. '"') |
68 Default.UpdateObjectives(handler, block, block_schema) | 71 end |
72 | |
73 Default.UpdateObjectives(self, block, block_schema, displayObjectives) | |
69 return block_schema | 74 return block_schema |
70 end | 75 end |
71 | 76 |
72 Quest.UpdateLine = function(handler, block, line, data) | 77 Quest.UpdateLine = function(handler, block, data) |
73 local print = lprint | |
74 local objectiveType = data.type | 78 local objectiveType = data.type |
75 return data.text, nil, objectiveType | 79 return data.text, nil, objectiveType |
76 end | 80 end |
77 | 81 |
78 ----------------------------- | 82 ----------------------------- |
128 local blocksChecked = {} | 132 local blocksChecked = {} |
129 local GetQuestWatchIndex = GetQuestWatchIndex | 133 local GetQuestWatchIndex = GetQuestWatchIndex |
130 --- Get a total of things to show, and straighten out the index while we're at it | 134 --- Get a total of things to show, and straighten out the index while we're at it |
131 --- Return the number shown, total in log, and the info table to parse | 135 --- Return the number shown, total in log, and the info table to parse |
132 Quest.GetNumWatched = function (self, id, added) | 136 Quest.GetNumWatched = function (self, id, added) |
137 local print = self.print | |
133 superTrackQuestID = GetSuperTrackedQuestID() | 138 superTrackQuestID = GetSuperTrackedQuestID() |
134 playerMoney = GetMoney(); | 139 playerMoney = GetMoney(); |
135 inScenario = C_Scenario.IsInScenario(); | 140 inScenario = C_Scenario.IsInScenario(); |
136 showPOIs = GetCVarBool("questPOI"); | 141 showPOIs = GetCVarBool("questPOI"); |
137 local numAll = GetNumQuestLogEntries() | 142 local numAll = GetNumQuestLogEntries() |
138 local numWatched = GetNumQuestWatches() | 143 local numWatched = GetNumQuestWatches() |
139 local bottomIndex = 1 | 144 local bottomIndex = 1 |
140 print(' |cFF00FF88GetNumWatched:|r',self.name, numWatched, 'of', numAll) | 145 print('GetNumWatched', self.name, numWatched, 'of', numAll) |
141 local start, limit = 1, numAll | 146 local start, limit = 1, numAll |
142 | 147 |
143 --- start a list of blocks affected by this function | 148 --- start a list of blocks affected by this function |
144 wipe(blocksChecked) | 149 wipe(blocksChecked) |
145 if id and not added then | 150 if id and not added then |
155 | 160 |
156 if watchIndex and watchIndex >= bottomIndex then | 161 if watchIndex and watchIndex >= bottomIndex then |
157 local watchInfo = self.WatchInfo[watchIndex] | 162 local watchInfo = self.WatchInfo[watchIndex] |
158 local watchBlock = self.WatchBlock[watchIndex] | 163 local watchBlock = self.WatchBlock[watchIndex] |
159 if watchInfo and watchInfo.questID ~= questID then | 164 if watchInfo and watchInfo.questID ~= questID then |
160 print(' |cFFBBFF00GetNumWatched: trimming WatchInfo ['..watchIndex..'] =/=', questID) | 165 print('GetNumWatched', 'trimming WatchInfo ['..watchIndex..'] =/=', questID) |
161 self.WatchInfo[watchIndex] = nil | 166 self.WatchInfo[watchIndex] = nil |
162 end | 167 end |
163 if watchBlock and watchBlock.info.questID ~= questID then | 168 if watchBlock and watchBlock.info.questID ~= questID then |
164 print(' |cFFBBFF00GetNumWatched: trimming WatchBlock ['..watchIndex..'] =/=', watchBlock:GetName()) | 169 print('GetNumWatched', 'trimming WatchBlock ['..watchIndex..'] =/=', watchBlock:GetName()) |
165 self.WatchBlock[watchIndex] = nil | 170 self.WatchBlock[watchIndex] = nil |
166 tinsert(blocksChecked, watchBlock) | 171 tinsert(blocksChecked, watchBlock) |
167 end | 172 end |
168 end | 173 end |
169 | 174 |
181 end | 186 end |
182 | 187 |
183 --- remove any orphaned blocks from view and, if possible, free it for re-use | 188 --- remove any orphaned blocks from view and, if possible, free it for re-use |
184 for i, block in ipairs(blocksChecked) do | 189 for i, block in ipairs(blocksChecked) do |
185 if not GetQuestLogIndexByID(block.info.questID, 'player') then | 190 if not GetQuestLogIndexByID(block.info.questID, 'player') then |
186 print(' |cFFBBFF00GetNumWatched:|r literating a block without an index |cFFBBFF00'.. block:GetName()..'|r') | 191 print('GetNumWatched', 'iterating a block without an index |cFFBBFF00'.. block:GetName()..'|r') |
187 block:Hide() | 192 block:Hide() |
188 self:FreeBlock(block) | 193 self:FreeBlock(block) |
189 end | 194 end |
190 if not IsQuestWatched(block.info.logIndex) then | 195 if not IsQuestWatched(block.info.logIndex) then |
191 print(' |cFFBBFF00GetNumWatched:|r hiding untracked quest |cFFBBFF00'.. block:GetName()..'|r') | 196 print('GetNumWatched', 'hiding untracked quest |cFFBBFF00'.. block:GetName()..'|r') |
192 block:Hide() | 197 block:Hide() |
193 end | 198 end |
194 end | 199 end |
195 | 200 |
196 self.numWatched = numWatched | 201 self.numWatched = numWatched |
205 -- Manifest of line data to be displayed in relation to the tracked object | 210 -- Manifest of line data to be displayed in relation to the tracked object |
206 Quest.GetInfo = function (self, logIndex, watchIndex) | 211 Quest.GetInfo = function (self, logIndex, watchIndex) |
207 local print = iprint | 212 local print = iprint |
208 local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle(logIndex) | 213 local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle(logIndex) |
209 if ( not questID ) then | 214 if ( not questID ) then |
210 tprint(' |cFFFF0088GetInfo:|r', logIndex, watchIndex, '|cFFFF2299no data|r') | 215 tprint('GetNumWatched', logIndex, watchIndex, '|cFFFF2299no data|r') |
211 return | 216 return |
212 end | 217 end |
213 | 218 |
214 Quest.Info[questID] = Quest.Info[questID] or {} | 219 Quest.Info[questID] = Quest.Info[questID] or {} |
215 local q = Quest.Info[questID] | 220 local q = Quest.Info[questID] |
224 local _ | 229 local _ |
225 _,_,_, numObjectives, requiredMoney, _, _, isAutoComplete, | 230 _,_,_, numObjectives, requiredMoney, _, _, isAutoComplete, |
226 failureTime, timeElapsed, questType = GetQuestWatchInfo(watchIndex) | 231 failureTime, timeElapsed, questType = GetQuestWatchInfo(watchIndex) |
227 self.WatchList[watchIndex] = q | 232 self.WatchList[watchIndex] = q |
228 --tprint(' |cFF88FF00GetInfo:|r set watch entry', watchIndex) | 233 --tprint(' |cFF88FF00GetInfo:|r set watch entry', watchIndex) |
229 tprint(' |cFFFFBB00GetInfo:|r', logIndex, watchIndex, '|cFFFF2299'..title..'|r') | 234 print('GetInfo:', logIndex, watchIndex, '|cFFFF2299'..title..'|r') |
230 end | 235 end |
231 self.LogInfo[logIndex] = q | 236 self.LogInfo[logIndex] = q |
232 | 237 |
233 q.numObjectives = numObjectives | 238 q.numObjectives = numObjectives |
234 q.requiredMoney = requiredMoney | 239 q.requiredMoney = requiredMoney |
266 questFailed = false | 271 questFailed = false |
267 if ( requiredMoney == 0 ) then | 272 if ( requiredMoney == 0 ) then |
268 isBreadcrumb = true; | 273 isBreadcrumb = true; |
269 end | 274 end |
270 end | 275 end |
271 print('|cFF0088FFflags:|r', (isComplete and 'isComplete' or ''), (questFailed and 'questFailed' or ''), (isBreadcrumb and 'isBreadcrumb' or '')) | 276 print('QuestFlags', (isComplete and 'isComplete' or ''), (questFailed and 'questFailed' or ''), (isBreadcrumb and 'isBreadcrumb' or '')) |
272 | 277 |
273 -- completion message? | 278 -- completion message? |
274 local isSequenced = IsQuestSequenced(questID) | 279 local isSequenced = IsQuestSequenced(questID) |
275 local temp_status = '' | 280 local temp_status = '' |
276 if ( isComplete ) then | 281 if ( isComplete ) then |
472 q.watchIndex = watchIndex | 477 q.watchIndex = watchIndex |
473 q.id = questID | 478 q.id = questID |
474 q.schema = schema | 479 q.schema = schema |
475 | 480 |
476 if Devian and Devian.InWorkspace() then | 481 if Devian and Devian.InWorkspace() then |
477 print('|cFF00DDFFstatus:|r', temp_status, '|cFF00FF00questLogIndex|r:', logIndex, title) | 482 print('QuestStatus', temp_status, '|cFF00FF00questLogIndex|r:', logIndex, title) |
478 local temp ={} | 483 local temp ={} |
479 local data_txt = '|cFFFF4400values:|r' | 484 local data_txt = '|cFF'..self.internalColor..'values:|r' |
480 for k,v in pairs(q) do | 485 for k,v in pairs(q) do |
481 if type(v) =='number' then | 486 if type(v) =='number' then |
482 data_txt = data_txt .. ' |cFFFFFF00'..k..'|r: ' .. tostring(v) | 487 data_txt = data_txt .. ' |cFFFFFF00'..k..'|r: ' .. tostring(v) |
483 elseif type(v) == 'table' then | 488 elseif type(v) == 'table' then |
484 tinsert(temp, k) | 489 tinsert(temp, k) |
485 end | 490 end |
486 end | 491 end |
487 print(data_txt) | 492 print('DataStatus',data_txt) |
488 sort(temp, function(a,b) return a < b end) | 493 sort(temp, function(a,b) return a < b end) |
489 for i, k in ipairs(temp) do | 494 for i, k in ipairs(temp) do |
490 print('|cFF00FF00'..k..'|r') | 495 iprint('GetInfo', questID, ''..k..'|r') |
491 for kk,v in pairs(q[k]) do | 496 for kk,v in pairs(q[k]) do |
492 print(' ', kk, '=', v) | 497 iprint('GetInfo', questID, kk, '=', v) |
493 end | 498 end |
494 end | 499 end |
495 end | 500 end |
496 | 501 |
497 return q | 502 return q |
498 end | 503 end |
499 | 504 |
500 Quest.GetObjectives = function(logIndex, numObjectives, isComplete, isSequenced, isStory) | 505 Quest.GetObjectives = function(logIndex, numObjectives, isComplete, isSequenced, isStory) |
506 local print = Quest.print | |
501 local objectives = {} | 507 local objectives = {} |
502 for i = 1, numObjectives do | 508 for i = 1, numObjectives do |
503 local text, type, finished = GetQuestLogLeaderBoard(i, logIndex) | 509 local text, type, finished = GetQuestLogLeaderBoard(i, logIndex) |
504 print(format(' |cFFFF4400GetObjectives:|r #%d %s %s %s', i, tostring(type), tostring(text), tostring(finished))) | 510 print('GetObjectives', format('|cFF88FF88#%d %s %s %s', i, tostring(type), tostring(text), tostring(finished))) |
505 objectives[i] = { | 511 objectives[i] = { |
506 index = i, | 512 index = i, |
507 type = type, | 513 type = type, |
508 text = text, | 514 text = text, |
509 finished = finished | 515 finished = finished |