comparison ObjectiveInfo.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
comparison
equal deleted inserted replaced
13:9455693fc290 14:ed642234f017
1 local B = select(2,...).frame 1 local B = select(2,...).frame
2 local wipe, pairs, ipairs, min, max, unpack = table.wipe, pairs, ipairs, min, max, unpack 2 local wipe, pairs, ipairs, min, max, unpack = table.wipe, pairs, ipairs, min, max, unpack
3 local GetNumQuestLeaderBoards, GetAchievementNumCriteria, GetQuestLogLeaderBoard, GetAchievementCriteriaInfo = GetNumQuestLeaderBoards, GetAchievementNumCriteria, GetQuestLogLeaderBoard, GetAchievementCriteriaInfo 3 local GetNumQuestLeaderBoards, GetAchievementNumCriteria, GetQuestLogLeaderBoard, GetAchievementCriteriaInfo = GetNumQuestLeaderBoards, GetAchievementNumCriteria, GetQuestLogLeaderBoard, GetAchievementCriteriaInfo
4 local GetQuestLogIndexByID, GetSuperTrackedQuestID, SetSuperTrackedQuestID, GetQuestWatchInfo = GetQuestLogIndexByID, GetSuperTrackedQuestID, SetSuperTrackedQuestID, GetQuestWatchInfo 4 local GetQuestLogIndexByID, GetSuperTrackedQuestID, SetSuperTrackedQuestID, GetQuestWatchInfo = GetQuestLogIndexByID, GetSuperTrackedQuestID, SetSuperTrackedQuestID, GetQuestWatchInfo
5 local mod = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame') 5 local mod = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame')
6 local print = B.print('Objectives') 6 local print = B.print('TrackerInfo')
7 7
8 local Tracker, AutoQuest, Quest, Cheevs = mod.Tracker, mod.AutoQuest, mod.Quest, mod.Cheevs 8 local Tracker, Bonus, AutoQuest, Quest, Cheevs = mod.Tracker, mod.Bonus, mod.AutoQuest, mod.Quest, mod.Cheevs
9 -------------------------------------------------------------------- 9 --------------------------------------------------------------------
10 --- Tracker-specific data retrieval functions 10 --- Tracker-specific data retrieval functions
11 -------------------------------------------------------------------- 11 --------------------------------------------------------------------
12 12
13 13
14 ----------------------------- 14 -----------------------------
15 --- AUTO_QUEST 15 --- AUTO_QUEST
16 AutoQuest.name = "Remote Quests"
17 AutoQuest.GetNumWatched = GetNumAutoQuestPopUps 16 AutoQuest.GetNumWatched = GetNumAutoQuestPopUps
18 AutoQuest.GetInfo = function(watchIndex) 17 AutoQuest.GetInfo = function(watchIndex)
19 return Quest.GetInfo(watchIndex) 18 return Quest.GetInfo(watchIndex)
20 end 19 end
21 20
22 ----------------------------- 21 -----------------------------
22 --- BONUS OBJECTIVE
23 Bonus.TasksTable = {}
24 Bonus.TasksPOI = {}
25 Bonus.TaskScenario = {}
26
27 local taskData = {}
28 Bonus.QuestBlock = {}
29 Bonus.GetNumWatched = function()
30 Bonus.TasksTable = GetTasksTable()
31 local numTasks = 0
32 for i, questID in ipairs(Bonus.TasksTable) do
33 local isInArea, isOnMap, numObjectives = GetTaskInfo(questID)
34 if isInArea and isOnMap then
35 numTasks = numTasks + 1
36 end
37 end
38 Bonus.numAll = #Bonus.TasksTable
39 Bonus.numWatched = numTasks
40 return GetNumQuestLogTasks()
41 end
42 Bonus.GetInfo = function(self, watchIndex)
43 local questID = Bonus.TasksTable[watchIndex]
44 if not questID then
45 print('|cFFFF4400no quest ID for row', watchIndex)
46 return
47 end
48
49
50 local t= {}
51 t.isInArea, t.isOnMap, t.numObjectives = GetTaskInfo(questID)
52
53 print('isInArea', t.isInArea, 'isOnMap', t.isOnMap, 'numObj', t.numObjectives)
54 t.displayObjectives = false
55 t.isComplete = true
56 t.questID = questID
57 if t.numObjectives >= 1 then
58 print(t.numObjectives,'objective rows')
59 t.objectives = {}
60 for i = 1, t.numObjectives do
61 t.objectives[i] = {}
62 local o = t.objectives[i]
63 o.index = i
64 o.text, o.objectiveType, o.finished, o.displayAsObjective = GetQuestObjectiveInfo(questID, i, true)
65
66 print(i, '==>', o.text, o.objectiveType, o.finished, o.displayAsObjective)
67 t.displayObjectives = t.displayObjectives or o.displayAsObjective
68 t.isComplete = t.isComplete and o.finished
69
70 end
71 end
72 Bonus.TasksTable[questID] = t
73
74 return t
75 end
76
77 -----------------------------
23 --- QUEST 78 --- QUEST
24 Quest.name = "Quests"
25 Quest.itemButtons = {} 79 Quest.itemButtons = {}
26 Quest.freeButtons = {} 80 Quest.freeButtons = {}
27 Quest.POI = {} 81 Quest.POI = {}
28 Quest.QuestBlock = {} 82 Quest.QuestBlock = {}
29 Quest.GetNumWatched = function() 83 Quest.GetNumWatched = function()
30 return GetNumQuestWatches () 84 Quest.numAll = GetNumQuestLogEntries()
85 Quest.numWatched = GetNumQuestWatches()
86 return Quest.numWatched
31 end 87 end
32 Quest.GetInfo = function (self, watchIndex) 88 Quest.GetInfo = function (self, watchIndex)
33 print('|cFF00DDFFQuest|r.|cFF0088FFGetInfo(|r'.. tostring(watchIndex)..'|r)') 89 print('|cFF00DDFFQuest|r.|cFF0088FFGetInfo(|r'.. tostring(watchIndex)..'|r)')
34 local questID, title, questIndex, numObjectives, requiredMoney, isComplete, 90 local questID, title, questIndex, numObjectives, requiredMoney, isComplete,
35 startEvent, isAutoComplete, failureTime, timeElapsed, questType, isTask, isStory, isOnMap, hasLocalPOI = GetQuestWatchInfo(watchIndex) 91 startEvent, isAutoComplete, failureTime, timeElapsed, questType, isTask, isStory, isOnMap, hasLocalPOI = GetQuestWatchInfo(watchIndex)
36 92
37 local _, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle(questIndex) 93 local _, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, _, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle(questIndex)
38 local questTagID, tagName = GetQuestTagInfo(questID); 94 local questTagID, tagName = GetQuestTagInfo(questID);
39 95
40 if not questID then 96 if not questID then
41 return 97 return
42 end 98 end
65 q.isDaily = ( frequency == LE_QUEST_FREQUENCY_DAILY and (not isComplete or isComplete == 0) ) 121 q.isDaily = ( frequency == LE_QUEST_FREQUENCY_DAILY and (not isComplete or isComplete == 0) )
66 q.isWeekly = ( frequency == LE_QUEST_FREQUENCY_WEEKLY and (not isComplete or isComplete == 0) ) 122 q.isWeekly = ( frequency == LE_QUEST_FREQUENCY_WEEKLY and (not isComplete or isComplete == 0) )
67 q.isComplete = isComplete 123 q.isComplete = isComplete
68 q.isStory = isStory 124 q.isStory = isStory
69 q.isTask = isTask 125 q.isTask = isTask
126
127 if isTask then
128 --q.task = Bonus.GetInfo(questID)
129 end
130
70 --q.isBreadCrumb = isBreadCrumb 131 --q.isBreadCrumb = isBreadCrumb
71 q.completionText= GetQuestLogCompletionText(questIndex) 132 q.completionText= GetQuestLogCompletionText(questIndex)
72 q.numObjectives = GetNumQuestLeaderBoards(questIndex) 133 q.numObjectives = GetNumQuestLeaderBoards(questIndex)
73 q.isWatched = IsQuestWatched(questIndex) 134 q.isWatched = IsQuestWatched(questIndex)
74 q.isHardWatched = IsQuestHardWatched(questIndex) 135 q.isHardWatched = IsQuestHardWatched(questIndex)
75 q.objectives = {} 136 q.objectives = {}
76 for i = 1, q.numObjectives do 137 for i = 1, q.numObjectives do
77 local text, type, finished = GetQuestLogLeaderBoard(i, questIndex) 138 local text, type, finished = GetQuestLogLeaderBoard(i, questIndex)
78 q.objectives[i] = { 139 q.objectives[i] = {
140 index = i,
79 type = type, 141 type = type,
80 text = text, 142 text = text,
81 finished = finished 143 finished = finished
82 } 144 }
83 if type == 'event' then 145 if type == 'event' then
154 c.numObjectives = GetAchievementNumCriteria(cheevID) 216 c.numObjectives = GetAchievementNumCriteria(cheevID)
155 c.objectives = {} 217 c.objectives = {}
156 for i = 1, c.numObjectives do 218 for i = 1, c.numObjectives do
157 local description, type, completed, quantity, requiredQuantity, characterName, flags, assetID, quantityString, criteriaID = GetAchievementCriteriaInfo(cheevID, i) 219 local description, type, completed, quantity, requiredQuantity, characterName, flags, assetID, quantityString, criteriaID = GetAchievementCriteriaInfo(cheevID, i)
158 c.objectives[i] = { 220 c.objectives[i] = {
221 index = i,
159 cheevID = cheevID, 222 cheevID = cheevID,
160 text = description, 223 text = description,
161 type = type, 224 type = type,
162 finished = completed, 225 finished = completed,
163 quantity = quantity, 226 value = quantity,
164 requiredQuantity = requiredQuantity, 227 maxValue = requiredQuantity,
165 characterName = characterName, 228 characterName = characterName,
166 flags = flags, 229 flags = flags,
167 assetID = assetID, 230 assetID = assetID,
168 quantityString = quantityString, 231 quantityString = quantityString,
169 criteriaID = criteriaID, 232 criteriaID = criteriaID,