comparison ObjectiveTracker/QuestData.lua @ 58:f253baf6022d

ObjectiveTracker: - Quest tracker now checks all of its allotted frames for data validity, - it also uses GetQuestLogTitle to verify non-zero log indexes
author Nenue
date Fri, 08 Jul 2016 18:01:49 -0400
parents aa693607b813
children
comparison
equal deleted inserted replaced
57:3cecf50070ba 58:f253baf6022d
99 return block 99 return block
100 end 100 end
101 101
102 local GetQuestWatchIndex = GetQuestWatchIndex 102 local GetQuestWatchIndex = GetQuestWatchIndex
103 local numAnimating = 0 103 local numAnimating = 0
104 local blocksChecked = {}
105 104
106 --- Get a total of things to show, and straighten out the index while we're at it 105 --- Get a total of things to show, and straighten out the index while we're at it
107 --- Return the number shown, total in log, and the info table to parse 106 --- Return the number shown, total in log, and the info table to parse
108 Quest.GetNumWatched = function (self, id, added) 107 Quest.GetNumWatched = function (self, id, added)
109 local print = self.print 108 local print = self.print
116 local numAll = GetNumQuestLogEntries() 115 local numAll = GetNumQuestLogEntries()
117 local numWatched = GetNumQuestWatches() 116 local numWatched = GetNumQuestWatches()
118 local bottomIndex = 1 117 local bottomIndex = 1
119 local start, limit = 1, numAll 118 local start, limit = 1, numAll
120 119
121 if id and not added then 120
122 -- if a particular id is supplied, add to checklist 121 --- Update the index tables
123 if self.InfoBlock[id] then
124 blocksChecked[self.InfoBlock[id]] = self.InfoBlock[id]
125 end
126 end
127
128 numAnimating = 0 122 numAnimating = 0
129 local numEntries = 0 123 local numEntries = 0
130 for logIndex = start, limit do 124 for logIndex = start, limit do
131 local reason1, reason2 = '', '' 125 local reason1, reason2 = '', ''
132 local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle(logIndex) 126 local title, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle(logIndex)
133 local watchIndex = GetQuestWatchIndex(logIndex) 127 local watchIndex = GetQuestWatchIndex(logIndex)
134 128
135 --- Start of crazy audit flagging 129
136 if watchIndex and watchIndex >= bottomIndex then 130 if watchIndex and watchIndex >= bottomIndex then
137 -- do watch data pointers match? 131 -- do watch data pointers match?
138 local watchInfo = self.WatchInfo[watchIndex] 132 local watchInfo, watchBlock = self.WatchInfo[watchIndex], self.WatchBlock[watchIndex]
139 local watchBlock = self.WatchBlock[watchIndex] 133
140 if watchInfo and watchInfo.questID ~= questID then 134 if watchInfo and watchInfo.questID ~= questID then
141 print('GetNumWatched', 'trimming WatchInfo ['..watchIndex..'] =/=', questID) 135 print('GetNumWatched', 'trimming WatchInfo ['..watchIndex..'] =/=', questID)
142 self.WatchInfo[watchIndex] = nil 136 self.WatchInfo[watchIndex] = nil
143 end 137 end
144 if watchBlock and watchBlock.info.questID ~= questID then 138 if watchBlock and watchBlock.info.questID ~= questID then
145 print('GetNumWatched', 'trimming WatchBlock ['..watchIndex..'] =/=', watchBlock:GetName()) 139 print('GetNumWatched', 'trimming WatchBlock ['..watchIndex..'] =/=', watchBlock:GetName())
146 self.WatchBlock[watchIndex] = nil 140 self.WatchBlock[watchIndex] = nil
147 blocksChecked[watchBlock] = watchBlock
148 end 141 end
149 end 142 end
150 143
151 -- check log-block pointer 144 -- check log-block pointer
152 local logBlock = self.LogBlock[logIndex] 145 local logBlock = self.LogBlock[logIndex]
153 if logBlock then 146 if logBlock then
154 -- check later that the block isn't for a dropped quest 147 -- check later that the block isn't for a dropped quest
155 if logBlock.info.questID ~= questID then 148 if logBlock.info.questID ~= questID then
156 print('GetQuests', 'replace info', logBlock.info.questID, '->', questID) 149 print('GetQuests', 'replace info', logBlock.info.questID, '->', questID)
157 self.LogBlock[logIndex] = nil 150 self.LogBlock[logIndex] = nil
158 blocksChecked[logBlock] = logBlock
159 end 151 end
160 end 152 end
161 --- end of crazy audit flagging 153 --- end of crazy audit flagging
162 154
163 -- add to watch index if: the questID is non-zero 155 -- add to watch index if: the questID is non-zero
167 end 159 end
168 end 160 end
169 161
170 162
171 163
172 --- After GetInfo pass, look for any non-conformant blocks and deal with them 164 --- Clean up blocks that got cut off for some reason
173 for index, block in ipairs(self.usedBlocks) do 165 for index, block in ipairs(self.usedBlocks) do
174
175 local logIndex = GetQuestLogIndexByID(block.info.questID, 'player')
176 -- animating blocks have been evaluated 166 -- animating blocks have been evaluated
177 if not block.blockFadeOut:IsPlaying() then 167 if not block.blockFadeOut:IsPlaying() then
178 if not logIndex then 168
169 local logIndex = GetQuestLogIndexByID(block.info.questID, 'player')
170 print('GetNumWatched', GetQuestLogTitle(logIndex))
171 local questID = select(8,GetQuestLogTitle(logIndex))
172 print('GetNumWatched', questID)
173
174 if questID == 0 then
179 self:ClearBlock(block) 175 self:ClearBlock(block)
180 print('GetNumWatched', '|cFF44FF00'.. index, (block and block:GetName() or '|cFFFF0000-|r'), '(trim not active)') 176 print('GetNumWatched', '|cFF44FF00'.. index, (block and block:GetName() or '|cFFFF0000-|r'), logIndex, questID, '(unresolved)', block.info.title)
181 elseif not IsQuestWatched(block.info.logIndex) then 177 elseif not IsQuestWatched(block.info.logIndex) then
182 self:ClearBlock(block) 178 self:ClearBlock(block)
183 print('GetNumWatched', '|cFFFF4400'.. index, (block and block:GetName() or '|cFFFF0000-|r'), '(trim non-watched)') 179 print('GetNumWatched', '|cFFFF4400'.. index, (block and block:GetName() or '|cFFFF0000-|r'), logIndex, questID, '(unwatched)', block.info.title)
184 else 180 else
185 print('GetNumWatched', '|cFF0088FF'.. index, (block and block:GetName() or '|cFFFF0000-|r'), logIndex or '|cFF444444-|r') 181 print('GetNumWatched', '|cFF0088FF'.. index, (block and block:GetName() or '|cFFFF0000-|r'), logIndex or '|cFF444444-|r', block.info.title)
186 end 182 end
187 else 183 else
188 184
189 print('GetNumWatched', '|cFF00FFFF'.. index, (block and block:GetName() or '|cFFFF0000-|r'), ' (animating)') 185 print('GetNumWatched', '|cFF00FFFF'.. index, (block and block:GetName() or '|cFFFF0000-|r'), ' (animating)')
190 end 186 end
572 568
573 Quest.Remove = function(handler, block) 569 Quest.Remove = function(handler, block)
574 print('removing', block.info.logIndex, 'from watcher') 570 print('removing', block.info.logIndex, 'from watcher')
575 RemoveQuestWatch(block.info.logIndex) 571 RemoveQuestWatch(block.info.logIndex)
576 end 572 end
573
574 Quest.OnRemoved = function(block)
575 print('OnRemoved', block:GetID())
576 end