Nenue@0
|
1 local B = select(2,...).frame
|
Nenue@0
|
2 local wipe, pairs, ipairs, min, max, unpack = table.wipe, pairs, ipairs, min, max, unpack
|
Nenue@0
|
3 local GetNumQuestLeaderBoards, GetAchievementNumCriteria, GetQuestLogLeaderBoard, GetAchievementCriteriaInfo = GetNumQuestLeaderBoards, GetAchievementNumCriteria, GetQuestLogLeaderBoard, GetAchievementCriteriaInfo
|
Nenue@0
|
4 local GetQuestLogIndexByID, GetSuperTrackedQuestID, SetSuperTrackedQuestID, GetQuestWatchInfo = GetQuestLogIndexByID, GetSuperTrackedQuestID, SetSuperTrackedQuestID, GetQuestWatchInfo
|
Nenue@0
|
5 local mod = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame')
|
Nenue@0
|
6 local print = B.print('Objectives')
|
Nenue@0
|
7
|
Nenue@0
|
8 local Tracker, AutoQuest, Quest, Cheevs = mod.Tracker, mod.AutoQuest, mod.Quest, mod.Cheevs
|
Nenue@0
|
9 --------------------------------------------------------------------
|
Nenue@0
|
10 --- Tracker-specific data retrieval functions
|
Nenue@0
|
11 --------------------------------------------------------------------
|
Nenue@1
|
12 Quest.itemButtons = {}
|
Nenue@1
|
13 Quest.freeButtons = {}
|
Nenue@1
|
14 Quest.POI = {}
|
Nenue@0
|
15 Quest.GetNumWatched = function()
|
Nenue@0
|
16 return GetNumQuestWatches ()
|
Nenue@0
|
17 end
|
Nenue@0
|
18 Quest.GetInfo = function (self, watchIndex)
|
Nenue@0
|
19 print('|cFF00DDFFQuest|r.|cFF0088FFGetInfo(|r'.. tostring(watchIndex)..'|r)')
|
Nenue@1
|
20 local questID, title, questIndex, numObjectives, requiredMoney, isComplete,
|
Nenue@0
|
21 startEvent, isAutoComplete, failureTime, timeElapsed, questType, isTask, isStory, isOnMap, hasLocalPOI = GetQuestWatchInfo(watchIndex)
|
Nenue@0
|
22 print(GetQuestWatchInfo(watchIndex))
|
Nenue@0
|
23 if not questID then
|
Nenue@0
|
24 return
|
Nenue@0
|
25 end
|
Nenue@0
|
26 print(self.Info)
|
Nenue@0
|
27 self.Info[questID] = self.Info[questID] or {}
|
Nenue@0
|
28
|
Nenue@0
|
29 local q = self.Info[questID]
|
Nenue@0
|
30 q.watchIndex = watchIndex
|
Nenue@0
|
31 q.type = 'Quest'
|
Nenue@0
|
32 q.questID = questID
|
Nenue@0
|
33 q.title = title
|
Nenue@1
|
34 q.questLogIndex = questIndex
|
Nenue@0
|
35 q.numObjectives = numObjectives
|
Nenue@0
|
36 q.requiredMoney = requiredMoney
|
Nenue@0
|
37 q.isComplete = isComplete
|
Nenue@0
|
38 q.startEvent = startEvent
|
Nenue@0
|
39 q.isAutoComplete = isAutoComplete
|
Nenue@0
|
40 q.failureTime = failureTime
|
Nenue@0
|
41 q.timeElapsed = timeElapsed
|
Nenue@0
|
42 q.questType = questType
|
Nenue@0
|
43 q.isTask = isTask
|
Nenue@0
|
44 q.isStory = isStory
|
Nenue@0
|
45 q.isOnMap = isOnMap
|
Nenue@0
|
46 q.hasLocalPOI = hasLocalPOI
|
Nenue@0
|
47
|
Nenue@0
|
48 --- Start QuestLogEntry calls
|
Nenue@0
|
49 -----------------------------------------
|
Nenue@1
|
50 SelectQuestLogEntry(questIndex)
|
Nenue@0
|
51 q.greenRange = GetQuestGreenRange()
|
Nenue@0
|
52 q.isDaily = QuestIsDaily()
|
Nenue@0
|
53 q.isWeekly = QuestIsWeekly()
|
Nenue@0
|
54 -----------------------------------------
|
Nenue@0
|
55
|
Nenue@0
|
56 --- End QuestLogEntry calls
|
Nenue@0
|
57 print(' |cFF0088FF', q.isDaily, q.isWeekly)
|
Nenue@0
|
58
|
Nenue@0
|
59 q.isComplete = IsQuestComplete(questID)
|
Nenue@0
|
60 q.isBreadCrumb = IsBreadcrumbQuest(questID)
|
Nenue@0
|
61 q.isStoryQuest = IsStoryQuest(questID)
|
Nenue@1
|
62 q.completionText= GetQuestLogCompletionText(questIndex)
|
Nenue@0
|
63 q.trackingID = questID
|
Nenue@0
|
64 q.superTracked = (questID == GetSuperTrackedQuestID()) -- call directly so artifact data doesn't become an issue
|
Nenue@1
|
65 q.numObjectives = GetNumQuestLeaderBoards(questIndex)
|
Nenue@1
|
66 q.isWatched = IsQuestWatched(questIndex)
|
Nenue@0
|
67 q.objectives = {}
|
Nenue@0
|
68 for i = 1, q.numObjectives do
|
Nenue@1
|
69 local text, type, finished = GetQuestLogLeaderBoard(i, questIndex)
|
Nenue@0
|
70 q.objectives[i] = {
|
Nenue@0
|
71 type = type,
|
Nenue@0
|
72 text = text,
|
Nenue@0
|
73 finished = finished
|
Nenue@0
|
74 }
|
Nenue@0
|
75 if type == 'event' then
|
Nenue@0
|
76 elseif type == 'monster' then
|
Nenue@0
|
77 elseif type == 'object' then
|
Nenue@0
|
78 elseif type == 'reputation' then
|
Nenue@0
|
79 elseif type == 'item' then
|
Nenue@0
|
80 end
|
Nenue@0
|
81 end
|
Nenue@0
|
82
|
Nenue@1
|
83 local link, icon, charges = GetQuestLogSpecialItemInfo(questIndex)
|
Nenue@1
|
84 local start, duration, enable = GetQuestLogSpecialItemCooldown(questIndex)
|
Nenue@0
|
85 if link or icon or charges then
|
Nenue@0
|
86 q.specialItem = {
|
Nenue@1
|
87 questID = questID,
|
Nenue@1
|
88 questIndex = questIndex,
|
Nenue@0
|
89 link = link,
|
Nenue@0
|
90 charges = charges,
|
Nenue@0
|
91 icon = icon,
|
Nenue@0
|
92 start = start,
|
Nenue@0
|
93 duration = duration,
|
Nenue@0
|
94 enable = enable,
|
Nenue@0
|
95 }
|
Nenue@0
|
96 end
|
Nenue@0
|
97
|
Nenue@1
|
98
|
Nenue@1
|
99 if QuestHasPOIInfo(questID) then
|
Nenue@1
|
100 local distance, onContinent = GetDistanceSqToQuest(questIndex)
|
Nenue@1
|
101 if distance ~= nil and distance > 0 then
|
Nenue@1
|
102 self.POI[questIndex] = {
|
Nenue@1
|
103 questIndex = questIndex,
|
Nenue@1
|
104 questID = questID,
|
Nenue@1
|
105 distance = distance,
|
Nenue@1
|
106 onContinent = onContinent
|
Nenue@1
|
107 }
|
Nenue@1
|
108 end
|
Nenue@1
|
109 end
|
Nenue@1
|
110
|
Nenue@1
|
111 self.LogInfo[questIndex] = q
|
Nenue@1
|
112 print('|cFF0088FFGetQuestInfo('..questID..')|r', questIndex, title)
|
Nenue@0
|
113 return q
|
Nenue@0
|
114 end
|
Nenue@0
|
115
|
Nenue@1
|
116 Quest.GetClosest = function()
|
Nenue@1
|
117 local minID
|
Nenue@1
|
118 local minDist = math.huge
|
Nenue@1
|
119 for i = 1, Quest.GetNumWatched() do
|
Nenue@1
|
120 local info = Quest.GetInfo(i)
|
Nenue@1
|
121 if info.hasLocalPOI then
|
Nenue@1
|
122 local distance, onContinent = GetDistanceSqToQuest(info.questIndex)
|
Nenue@1
|
123 end
|
Nenue@1
|
124 end
|
Nenue@1
|
125 end
|
Nenue@1
|
126
|
Nenue@0
|
127 Cheevs.GetNumWatched = function(self)
|
Nenue@0
|
128 Cheevs.trackedCheevs = {GetTrackedAchievements()}
|
Nenue@0
|
129 return GetNumTrackedAchievements()
|
Nenue@0
|
130 end
|
Nenue@0
|
131 Cheevs.GetInfo = function(self, index)
|
Nenue@0
|
132 local cheevID = Cheevs.trackedCheevs[index]
|
Nenue@0
|
133 local id, name, points, completed, month, day, year, description, flags, icon, rewardText, isGuildAch, wasEarnedByMe, earnedBy = GetAchievementInfo(cheevID)
|
Nenue@0
|
134
|
Nenue@0
|
135 print('|cFF00FF00', GetAchievementNumCriteria(cheevID))
|
Nenue@0
|
136 self.Info[cheevID] = {}
|
Nenue@0
|
137 local c = self.Info[cheevID]
|
Nenue@0
|
138 c.type = 'Cheevs'
|
Nenue@0
|
139 c.watchIndex = index
|
Nenue@0
|
140 c.cheevID = cheevID
|
Nenue@0
|
141 c.title = name
|
Nenue@0
|
142 c.points, c.completed, c.month, c.day, c.year, c.description, c.flags, c.icon, c.rewardText, c.isGuildAch, c.wasEarnedByMe, c.earnedBy =
|
Nenue@0
|
143 points, completed, month, day, year, description, flags, icon, rewardText, isGuildAch, wasEarnedByMe, earnedBy
|
Nenue@0
|
144 c.numObjectives = GetAchievementNumCriteria(cheevID)
|
Nenue@0
|
145 c.objectives = {}
|
Nenue@0
|
146 for i = 1, c.numObjectives do
|
Nenue@0
|
147 local description, type, completed, quantity, requiredQuantity, characterName, flags, assetID, quantityString, criteriaID = GetAchievementCriteriaInfo(cheevID, i)
|
Nenue@0
|
148 c.objectives[i] = {
|
Nenue@0
|
149 text = description,
|
Nenue@0
|
150 type = type,
|
Nenue@0
|
151 finished = completed,
|
Nenue@0
|
152 quantity = quantity,
|
Nenue@0
|
153 requiredQuantity = requiredQuantity,
|
Nenue@0
|
154 characterName = characterName,
|
Nenue@0
|
155 flags = flags,
|
Nenue@0
|
156 assetID = assetID,
|
Nenue@0
|
157 quantityString = quantityString,
|
Nenue@0
|
158 criteriaID = criteriaID,
|
Nenue@0
|
159 }
|
Nenue@0
|
160 end
|
Nenue@0
|
161
|
Nenue@0
|
162 self.WatchInfo[index] = c
|
Nenue@0
|
163 return self.Info[cheevID]
|
Nenue@0
|
164 end
|