Mercurial > wow > buffalo2
comparison ObjectiveTracker/Quests.lua @ 34:9856ebc63fa4
- half solution to Update being fired multiple times during load
- change securefunc handlers to dispense a reason code; catch that reason code in the enclosure passed to hooksecurefunc, and decide whether to update or not from there.
| author | Nenue |
|---|---|
| date | Sun, 17 Apr 2016 00:21:45 -0400 |
| parents | a3afe6c3771e |
| children | 69d03f8e293e |
comparison
equal
deleted
inserted
replaced
| 33:64f2a9bbea79 | 34:9856ebc63fa4 |
|---|---|
| 31 Quest.UpdateObjectives = function(handler, block) | 31 Quest.UpdateObjectives = function(handler, block) |
| 32 local print = lprint | 32 local print = lprint |
| 33 print('|cFF00FFFFUpdateObjectives()') | 33 print('|cFF00FFFFUpdateObjectives()') |
| 34 local info = block.info | 34 local info = block.info |
| 35 | 35 |
| 36 local titlebg, textbg = colors.default.titlebg, colors.default.textbg | |
| 37 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) |
| 38 | 37 |
| 38 local block_schema = 'default' | |
| 39 if info.isAccount then | 39 if info.isAccount then |
| 40 if info.isFaction then | 40 if info.isFaction then |
| 41 print(' faction', info.tagID) | 41 print(' faction', info.tagID) |
| 42 titlebg, textbg = colors['faction_'..info.tagID].titlebg, colors.default.textbg | 42 block_schema = 'faction_'..info.tagID |
| 43 else | 43 else |
| 44 print(' account', info.isAccount, info.isFaction) | 44 print(' account', info.isAccount, info.isFaction) |
| 45 titlebg, textbg = colors.account.titlebg, colors.account.textbg | 45 block_schema = 'account' |
| 46 end | 46 end |
| 47 elseif info.isDaily then | 47 elseif info.isDaily then |
| 48 print(' daily', info.frequency) | 48 print(' daily', info.frequency) |
| 49 titlebg, textbg = colors.daily.titlebg, colors.daily.textbg | 49 block_schema = 'daily' |
| 50 elseif info.isWeekly then | 50 elseif info.isWeekly then |
| 51 print(' weekly', info.frequency) | 51 print(' weekly', info.frequency) |
| 52 titlebg, textbg = colors.weekly.titlebg, colors.weekly.textbg | 52 block_schema = 'weekly' |
| 53 end | 53 end |
| 54 | |
| 55 block.titlebg:SetGradientAlpha(unpack(titlebg)) | |
| 56 block.statusbg:SetGradientAlpha(unpack(textbg)) | |
| 57 | |
| 58 local completionText | 54 local completionText |
| 59 if info.isComplete then | 55 if info.isComplete then |
| 60 if info.isAutoComplete then | 56 if info.isAutoComplete then |
| 61 local questID, popupType = GetAutoQuestPopUp(info.questLogIndex) | 57 local questID, popupType = GetAutoQuestPopUp(info.logIndex) |
| 62 if popupType == 'COMPLETE' then | 58 if popupType == 'COMPLETE' then |
| 63 print(' :: auto-complete quest :: set the message') | 59 print(' :: auto-complete quest :: set the message') |
| 64 info.completionText = T.strings.CLICK_TO_COMPLETE | 60 info.completionText = T.strings.CLICK_TO_COMPLETE |
| 65 end | 61 end |
| 66 else | 62 else |
| 67 if not completionText or info.completionText then | 63 if not completionText or info.completionText then |
| 68 info.completionText = GetQuestLogCompletionText(info.questLogIndex) | 64 info.completionText = GetQuestLogCompletionText(info.logIndex) |
| 69 end | 65 end |
| 70 end | 66 end |
| 71 print(' :: complete quest :: show instruction: "'.. tostring(info.completionText) .. '"') | 67 print(' :: complete quest :: show instruction: "'.. tostring(info.completionText) .. '"') |
| 72 end | 68 end |
| 73 | 69 |
| 74 Default.UpdateObjectives(handler, block) | 70 Default.UpdateObjectives(handler, block, block_schema) |
| 71 return block_schema | |
| 75 end | 72 end |
| 76 | 73 |
| 77 Quest.UpdateLine = function(handler, block, line, data) | 74 Quest.UpdateLine = function(handler, block, line, data) |
| 78 local print = lprint | 75 local print = lprint |
| 79 local objectiveType = data.type | 76 local objectiveType = data.type |
| 85 Quest.QuestBlock = {} | 82 Quest.QuestBlock = {} |
| 86 Quest.LogBlock = {} | 83 Quest.LogBlock = {} |
| 87 Quest.LogInfo = {} | 84 Quest.LogInfo = {} |
| 88 | 85 |
| 89 function Quest:GetNumWatched () | 86 function Quest:GetNumWatched () |
| 90 print(self.name, self) | |
| 91 superTrackQuestID = GetSuperTrackedQuestID() | 87 superTrackQuestID = GetSuperTrackedQuestID() |
| 92 playerMoney = GetMoney(); | 88 playerMoney = GetMoney(); |
| 93 inScenario = C_Scenario.IsInScenario(); | 89 inScenario = C_Scenario.IsInScenario(); |
| 94 showPOIs = GetCVarBool("questPOI"); | 90 showPOIs = GetCVarBool("questPOI"); |
| 95 self.numAll = GetNumQuestLogEntries() | 91 self.numAll = GetNumQuestLogEntries() |
| 100 --- Returns an iterable table from which tracker blocks can be filled out. Data includes: | 96 --- Returns an iterable table from which tracker blocks can be filled out. Data includes: |
| 101 -- All entry-layer GetXInfo return values | 97 -- All entry-layer GetXInfo return values |
| 102 -- Manifest of line data to be displayed in relation to the tracked object | 98 -- Manifest of line data to be displayed in relation to the tracked object |
| 103 Quest.GetInfo = function (self, watchIndex) | 99 Quest.GetInfo = function (self, watchIndex) |
| 104 local print = iprint | 100 local print = iprint |
| 105 print('') | |
| 106 print('|cFF00DDFFindex: |r'.. tostring(watchIndex)) | |
| 107 | 101 |
| 108 local questID, title, questLogIndex, numObjectives, requiredMoney, isComplete, startEvent, isAutoComplete, | 102 local questID, title, questLogIndex, numObjectives, requiredMoney, isComplete, startEvent, isAutoComplete, |
| 109 failureTime, timeElapsed, questType, isTask, isStory, isOnMap, hasLocalPOI = GetQuestWatchInfo(watchIndex) | 103 failureTime, timeElapsed, questType, isTask, isStory, isOnMap, hasLocalPOI = GetQuestWatchInfo(watchIndex) |
| 110 if ( not questID ) then | 104 if ( not questID ) then |
| 111 return | 105 return |
| 112 end | 106 end |
| 113 | 107 |
| 108 tprint(' |cFFFFBB00GetInfo:|r', watchIndex, '|cFFFF2299'..title..'|r') | |
| 114 local _, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, _, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle(questLogIndex) | 109 local _, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, _, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle(questLogIndex) |
| 115 | 110 |
| 116 Quest.Info[questID] = Quest.Info[questID] or {} | 111 Quest.Info[questID] = Quest.Info[questID] or {} |
| 117 | 112 |
| 118 | 113 |
| 119 local q = Quest.Info[questID] | 114 local q = Quest.Info[questID] |
| 120 q.watchIndex = watchIndex | |
| 121 q.type = 'Quest' | 115 q.type = 'Quest' |
| 122 q.id = questID | |
| 123 q.questID = questID | |
| 124 q.title = title | 116 q.title = title |
| 125 q.level = level | 117 q.level = level |
| 126 q.displayQuestID = displayQuestID | 118 q.displayQuestID = displayQuestID |
| 127 q.suggestedGroup = suggestedGroup | 119 q.suggestedGroup = suggestedGroup |
| 128 q.questLogIndex = questLogIndex | |
| 129 | 120 |
| 130 -- re-use Blizzard logic for consistency | 121 -- re-use Blizzard logic for consistency |
| 131 local showQuest = true | 122 local showQuest = true |
| 132 if isTask then showQuest = false end | 123 if isTask then showQuest = false end |
| 133 local watchMoney = false; | 124 local watchMoney = false; |
| 347 q.statusKey = temp_status | 338 q.statusKey = temp_status |
| 348 q.selected = (questID == superTrackQuestID) | 339 q.selected = (questID == superTrackQuestID) |
| 349 | 340 |
| 350 T.SetRewards(q, questID) | 341 T.SetRewards(q, questID) |
| 351 | 342 |
| 343 q.questID = questID | |
| 344 q.logIndex = questLogIndex | |
| 345 q.watchIndex = watchIndex | |
| 346 q.id = questID | |
| 352 self.WatchInfo[watchIndex] = q | 347 self.WatchInfo[watchIndex] = q |
| 353 self.LogInfo[questLogIndex] = q | 348 self.LogInfo[questLogIndex] = q |
| 354 | 349 |
| 355 if Devian and Devian.InWorkspace() then | 350 if Devian and Devian.InWorkspace() then |
| 356 print('|cFF00DDFFstatus:|r', temp_status, '|cFF00FF00questLogIndex|r:', title) | 351 print('|cFF00DDFFstatus:|r', temp_status, '|cFF00FF00questLogIndex|r:', questLogIndex, title) |
| 357 local temp ={} | 352 local temp ={} |
| 358 local data_txt = '|cFFFF4400values:|r' | 353 local data_txt = '|cFFFF4400values:|r' |
| 359 for k,v in pairs(q) do | 354 for k,v in pairs(q) do |
| 360 if type(v) =='number' then | 355 if type(v) =='number' then |
| 361 data_txt = data_txt .. ' |cFFFFFF00'..k..'|r: ' .. tostring(v) | 356 data_txt = data_txt .. ' |cFFFFFF00'..k..'|r: ' .. tostring(v) |
| 378 | 373 |
| 379 Quest.GetObjectives = function(questLogIndex, numObjectives, isComplete, isSequenced, isStory) | 374 Quest.GetObjectives = function(questLogIndex, numObjectives, isComplete, isSequenced, isStory) |
| 380 local objectives = {} | 375 local objectives = {} |
| 381 for i = 1, numObjectives do | 376 for i = 1, numObjectives do |
| 382 local text, type, finished = GetQuestLogLeaderBoard(i, questLogIndex) | 377 local text, type, finished = GetQuestLogLeaderBoard(i, questLogIndex) |
| 383 print(format(' #%d %s %s %s', i, tostring(type), tostring(text), tostring(finished))) | 378 print(format(' |cFFFF4400GetObjectives:|r #%d %s %s %s', i, tostring(type), tostring(text), tostring(finished))) |
| 384 objectives[i] = { | 379 objectives[i] = { |
| 385 index = i, | 380 index = i, |
| 386 type = type, | 381 type = type, |
| 387 text = text, | 382 text = text, |
| 388 finished = finished | 383 finished = finished |
| 415 end | 410 end |
| 416 | 411 |
| 417 | 412 |
| 418 Quest.Select = function (handler, block) | 413 Quest.Select = function (handler, block) |
| 419 if block.info.isAutoComplete and block.info.isComplete then | 414 if block.info.isAutoComplete and block.info.isComplete then |
| 420 ShowQuestComplete(block.info.questLogIndex) | 415 ShowQuestComplete(block.info.logIndex) |
| 421 else | 416 else |
| 422 SetSuperTrackedQuestID(block.info.questID) | 417 SetSuperTrackedQuestID(block.info.questID) |
| 423 end | 418 end |
| 424 end | 419 end |
| 425 | 420 |
| 426 Quest.Link = function(handler, block) | 421 Quest.Link = function(handler, block) |
| 427 | 422 |
| 428 local questLink = GetQuestLink(block.info.questLogIndex); | 423 local questLink = GetQuestLink(block.info.logIndex); |
| 429 if ( questLink ) then | 424 if ( questLink ) then |
| 430 ChatEdit_InsertLink(questLink); | 425 ChatEdit_InsertLink(questLink); |
| 431 end | 426 end |
| 432 end | 427 end |
| 433 | 428 |
| 436 QuestMapFrame_OpenToQuestDetails(block.info.questID) | 431 QuestMapFrame_OpenToQuestDetails(block.info.questID) |
| 437 end | 432 end |
| 438 | 433 |
| 439 Quest.Remove = function(handler, block) | 434 Quest.Remove = function(handler, block) |
| 440 | 435 |
| 441 print('removing', block.info.questLogIndex, 'from watcher') | 436 print('removing', block.info.logIndex, 'from watcher') |
| 442 RemoveQuestWatch(block.info.questLogIndex) | 437 RemoveQuestWatch(block.info.logIndex) |
| 443 end | 438 end |
