diff ObjectiveInfo.lua @ 0:3dbcad2b387d

initial push
author Nenue
date Wed, 30 Mar 2016 02:24:56 -0400
parents
children b0447b382f36
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ObjectiveInfo.lua	Wed Mar 30 02:24:56 2016 -0400
@@ -0,0 +1,135 @@
+local B = select(2,...).frame
+local wipe, pairs, ipairs, min, max, unpack = table.wipe, pairs, ipairs, min, max, unpack
+local GetNumQuestLeaderBoards, GetAchievementNumCriteria, GetQuestLogLeaderBoard, GetAchievementCriteriaInfo = GetNumQuestLeaderBoards, GetAchievementNumCriteria, GetQuestLogLeaderBoard, GetAchievementCriteriaInfo
+local GetQuestLogIndexByID, GetSuperTrackedQuestID, SetSuperTrackedQuestID, GetQuestWatchInfo = GetQuestLogIndexByID, GetSuperTrackedQuestID, SetSuperTrackedQuestID, GetQuestWatchInfo
+local mod = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame')
+local print = B.print('Objectives')
+
+local Tracker, AutoQuest, Quest, Cheevs = mod.Tracker, mod.AutoQuest, mod.Quest, mod.Cheevs
+--------------------------------------------------------------------
+--- Tracker-specific data retrieval functions
+--------------------------------------------------------------------
+
+Quest.GetNumWatched = function()
+  return GetNumQuestWatches ()
+end
+Quest.GetInfo = function (self, watchIndex)
+  print('|cFF00DDFFQuest|r.|cFF0088FFGetInfo(|r'.. tostring(watchIndex)..'|r)')
+  local questID, title, questLogIndex, numObjectives, requiredMoney, isComplete,
+  startEvent, isAutoComplete, failureTime, timeElapsed, questType, isTask, isStory, isOnMap, hasLocalPOI = GetQuestWatchInfo(watchIndex)
+print(GetQuestWatchInfo(watchIndex))
+  if not questID then
+    return
+  end
+  print(self.Info)
+  self.Info[questID] = self.Info[questID] or {}
+
+  local q = self.Info[questID]
+  q.watchIndex = watchIndex
+  q.type = 'Quest'
+  q.questID = questID
+  q.title = title
+  q.questLogIndex = questLogIndex
+  q.numObjectives = numObjectives
+  q.requiredMoney = requiredMoney
+  q.isComplete = isComplete
+  q.startEvent = startEvent
+  q.isAutoComplete = isAutoComplete
+  q.failureTime = failureTime
+  q.timeElapsed = timeElapsed
+  q.questType = questType
+  q.isTask = isTask
+  q.isStory = isStory
+  q.isOnMap = isOnMap
+  q.hasLocalPOI = hasLocalPOI
+
+  --- Start QuestLogEntry calls
+  -----------------------------------------
+  SelectQuestLogEntry(questLogIndex)
+  q.greenRange = GetQuestGreenRange()
+  q.isDaily = QuestIsDaily()
+  q.isWeekly = QuestIsWeekly()
+  -----------------------------------------
+
+  --- End QuestLogEntry calls
+  print('   |cFF0088FF', q.isDaily, q.isWeekly)
+
+  q.isComplete = IsQuestComplete(questID)
+  q.isBreadCrumb = IsBreadcrumbQuest(questID)
+  q.isStoryQuest = IsStoryQuest(questID)
+  q.completionText= GetQuestLogCompletionText(questLogIndex)
+  q.trackingID = questID
+  q.superTracked =  (questID == GetSuperTrackedQuestID()) -- call directly so artifact data doesn't become an issue
+  q.numObjectives = GetNumQuestLeaderBoards(questLogIndex)
+  q.objectives = {}
+  for i = 1, q.numObjectives do
+    local text, type, finished = GetQuestLogLeaderBoard(i, questLogIndex)
+    q.objectives[i] = {
+      type = type,
+      text = text,
+      finished = finished
+    }
+    if type == 'event' then
+    elseif type == 'monster' then
+    elseif type == 'object' then
+    elseif type == 'reputation' then
+    elseif type == 'item' then
+    end
+  end
+
+  local link, icon, charges = GetQuestLogSpecialItemInfo(questLogIndex)
+  local start, duration, enable = GetQuestLogSpecialItemCooldown(questLogIndex)
+  if link or icon or charges then
+    q.specialItem = {
+      link = link,
+      charges = charges,
+      icon = icon,
+      start = start,
+      duration = duration,
+      enable = enable,
+    }
+  end
+
+  self.LogInfo[questLogIndex] = q
+  print('|cFF0088FFGetQuestInfo('..questID..')|r', questLogIndex, title)
+  return q
+end
+
+Cheevs.GetNumWatched = function(self)
+  Cheevs.trackedCheevs = {GetTrackedAchievements()}
+  return GetNumTrackedAchievements()
+end
+Cheevs.GetInfo = function(self, index)
+  local cheevID = Cheevs.trackedCheevs[index]
+  local id, name, points, completed, month, day, year, description, flags, icon, rewardText, isGuildAch, wasEarnedByMe, earnedBy = GetAchievementInfo(cheevID)
+
+  print('|cFF00FF00', GetAchievementNumCriteria(cheevID))
+  self.Info[cheevID] = {}
+  local c = self.Info[cheevID]
+  c.type = 'Cheevs'
+  c.watchIndex = index
+  c.cheevID = cheevID
+  c.title = name
+  c.points, c.completed, c.month, c.day, c.year, c.description, c.flags, c.icon, c.rewardText, c.isGuildAch, c.wasEarnedByMe, c.earnedBy =
+  points, completed, month, day, year, description, flags, icon, rewardText, isGuildAch, wasEarnedByMe, earnedBy
+  c.numObjectives = GetAchievementNumCriteria(cheevID)
+  c.objectives = {}
+  for i = 1, c.numObjectives do
+    local description, type, completed, quantity, requiredQuantity, characterName, flags, assetID, quantityString, criteriaID = GetAchievementCriteriaInfo(cheevID, i)
+    c.objectives[i] = {
+      text = description,
+      type = type,
+      finished = completed,
+      quantity = quantity,
+      requiredQuantity = requiredQuantity,
+      characterName = characterName,
+      flags = flags,
+      assetID = assetID,
+      quantityString = quantityString,
+      criteriaID = criteriaID,
+    }
+  end
+
+  self.WatchInfo[index] = c
+  return self.Info[cheevID]
+end