comparison ObjectiveTracker/Quests.lua @ 39:92534dc793f2

- restore the previous QuestLogSelection after pulling for selection-restricted quest data; fixes icon mixups while quest map is open - moved progressbar builders into the schema environment, with all the other Frame.lua functions; prep for configuration access - relegate the various removal events to a framescript in their corresponding blocks; this takes care of resolving dead frames
author Nenue
date Thu, 21 Apr 2016 16:43:37 -0400
parents 1f8f9cc3d956
children 03ed70f846de
comparison
equal deleted inserted replaced
38:1f8f9cc3d956 39:92534dc793f2
122 print(' |cFF00FF00FreeBlock (' .. block:GetName() .. '):', reason) 122 print(' |cFF00FF00FreeBlock (' .. block:GetName() .. '):', reason)
123 block:Hide() 123 block:Hide()
124 tremove(used, info.posIndex) 124 tremove(used, info.posIndex)
125 tinsert(free, block) 125 tinsert(free, block)
126 end 126 end
127 127 end
128 128
129 end 129 Quest.OnRemoved = function(block)
130
131 end
132
133 Quest.GetBlock = function(self, index)
134 local block = Default.GetBlock(self, index)
135 block:SetScript('OnEvent', Quest.OnRemoved)
136 block:RegisterEvent('QUEST_REMOVED')
137 return block
138 end
139
130 local watchesChecked = {} 140 local watchesChecked = {}
131 local infosChecked = {} 141 local infosChecked = {}
132 local blocksChecked = {} 142 local blocksChecked = {}
133 local GetQuestWatchIndex = GetQuestWatchIndex 143 local GetQuestWatchIndex = GetQuestWatchIndex
134 --- Get a total of things to show, and straighten out the index while we're at it 144 --- Get a total of things to show, and straighten out the index while we're at it
302 312
303 temp_status = 'PROGRESS_OBJECTIVES' 313 temp_status = 'PROGRESS_OBJECTIVES'
304 -- Case 3: quest in progress 314 -- Case 3: quest in progress
305 -- * Multiple objective lines 315 -- * Multiple objective lines
306 -- * Possible extra lines for money and timer data respectively 316 -- * Possible extra lines for money and timer data respectively
317 self.print(' QuestInfo', title, questType, isAutoComplete)
307 objectives = Quest.GetObjectives(logIndex, numObjectives, false, isSequenced, isStory) 318 objectives = Quest.GetObjectives(logIndex, numObjectives, false, isSequenced, isStory)
308 q.objectives = objectives 319 q.objectives = objectives
309 320
310 --- anything past here gets appended to existing objectives 321 --- anything past here gets appended to existing objectives
311 322
503 end 514 end
504 515
505 Quest.GetObjectives = function(logIndex, numObjectives, isComplete, isSequenced, isStory) 516 Quest.GetObjectives = function(logIndex, numObjectives, isComplete, isSequenced, isStory)
506 local print = Quest.print 517 local print = Quest.print
507 local objectives = {} 518 local objectives = {}
519 if not logIndex then
520 return
521 end
522
508 for i = 1, numObjectives do 523 for i = 1, numObjectives do
509 local text, type, finished = GetQuestLogLeaderBoard(i, logIndex) 524 local text, type, finished = GetQuestLogLeaderBoard(i, logIndex)
510 print('GetObjectives', format('|cFF88FF88#%d %s %s %s', i, tostring(type), tostring(text), tostring(finished))) 525
526 local progress = 0
527 if finished then
528 progress = 1
529 elseif text then
530 local quantity, maxQuantity = text:match('^(%d+)/(%d+)')
531 if quantity and maxQuantity then
532 progress = quantity / maxQuantity
533 --print('GetObjectives', 'calculated objective progress:', quantity, '/', maxQuantity, '=', progress)
534 end
535 end
536
537 print('GetObjectives', format('|cFF88FF88#%d %s %s %s', i, tostring(type), tostring(text), tostring(finished)), '('.. tostring(progress)..')')
538
539
511 objectives[i] = { 540 objectives[i] = {
512 index = i, 541 index = i,
513 type = type, 542 type = type,
514 text = text, 543 text = text,
515 finished = finished 544 finished = finished,
545 progress = progress
516 } 546 }
517 end 547 end
518 return objectives 548 return objectives
519 end 549 end
520 550