diff ObjectiveInfo.lua @ 16:880828018bf4

ObjectiveEvents - trim down the number of events that fire full updates - begin the general outline for determining which trackers need to refresh - handlers for accepting and completing auto-popup quests ObjectiveFrame - correct variables for money reward calculation - make sure everythign is scaling to the font strings and that the font strings aren't being pinned by SetSize ObjectiveInfo - implementation of autoquest popups - discern between internal and client bonus objective indexes - acquire the correct data set from bonus objective query ObjectiveStyle - look for a style table under the previously interpreted set before deferring standard options - horizontal/vertical options in gradient - remove height-fixing for font strings
author Nenue
date Tue, 05 Apr 2016 00:39:12 -0400
parents ed642234f017
children d1812fb10ae6
line wrap: on
line diff
--- a/ObjectiveInfo.lua	Mon Apr 04 03:41:28 2016 -0400
+++ b/ObjectiveInfo.lua	Tue Apr 05 00:39:12 2016 -0400
@@ -1,7 +1,7 @@
 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 GetQuestWatchIndex, GetQuestLogIndexByID, GetSuperTrackedQuestID, SetSuperTrackedQuestID, GetQuestWatchInfo = GetQuestWatchIndex, GetQuestLogIndexByID, GetSuperTrackedQuestID, SetSuperTrackedQuestID, GetQuestWatchInfo
 local mod = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame')
 local print = B.print('TrackerInfo')
 
@@ -13,9 +13,34 @@
 
 -----------------------------
 --- AUTO_QUEST
-AutoQuest.GetNumWatched = GetNumAutoQuestPopUps
-AutoQuest.GetInfo = function(watchIndex)
-  return Quest.GetInfo(watchIndex)
+AutoQuest.LogInfo = {}
+AutoQuest.LogBlock = {}
+AutoQuest.QuestBlock = {}
+AutoQuest.WatchBlock = {}
+AutoQuest.GetNumWatched = function()
+  AutoQuest.numWatched = GetNumAutoQuestPopUps()
+  return AutoQuest.numWatched
+end
+AutoQuest.GetInfo = function(self, popupIndex)
+
+  local questID, type = GetAutoQuestPopUp(popupIndex)
+  local questIndex = GetQuestLogIndexByID(questID)
+  local questWatchIndex = GetQuestWatchIndex(questIndex)
+
+  local questInfo = Quest:GetInfo(questWatchIndex)
+  self.Info[questID] = {
+    title = questInfo.title,
+    description = type,
+    popupType = type,
+    questID = questID,
+    questIndex = questIndex,
+    popupIndex = popupIndex,
+    watchIndex = questWatchIndex,
+    numObjectives = 0
+  }
+
+
+  return self.Info[questID]
 end
 
 -----------------------------
@@ -26,42 +51,57 @@
 
 local taskData = {}
 Bonus.QuestBlock = {}
+Bonus.TaskWatch = {}
 Bonus.GetNumWatched = function()
-  Bonus.TasksTable = GetTasksTable()
+  local tasks = GetTasksTable()
   local numTasks = 0
-  for i, questID in ipairs(Bonus.TasksTable) do
-    local isInArea, isOnMap, numObjectives = GetTaskInfo(questID)
-    if isInArea and isOnMap then
+  Bonus.TaskWatch = {}
+  print('|cFFFFFF00Bonus.GetNumWatched()|r', #tasks)
+  for i, questID in ipairs(tasks) do
+    local t = Bonus.StoreTask(questID)
+    print ('   taskIndex', i, 'questID', questID)
+    print('   isComplete', t.isComplete)
+    if (t.inInArea or t.isOnMap) and not t.isComplete then
       numTasks = numTasks + 1
+      Bonus.TaskWatch[numTasks] = t
     end
   end
   Bonus.numAll = #Bonus.TasksTable
   Bonus.numWatched = numTasks
   return GetNumQuestLogTasks()
 end
-Bonus.GetInfo = function(self, watchIndex)
-  local questID = Bonus.TasksTable[watchIndex]
+
+Bonus.GetInfo = function(self, taskIndex)
+  return Bonus.TaskWatch[taskIndex]
+end
+
+Bonus.StoreTask = function(questID)
+
   if not questID then
-    print('|cFFFF4400no quest ID for row', watchIndex)
+    print('|cFFFF4400invalid quest ID', questID)
     return
   end
 
+  Bonus.Info[questID] = Bonus.Info[questID] or {}
+  local t = Bonus.Info[questID]
+  local isInArea, isOnMap, numObjectives = GetTaskInfo(questID)
+  t.questID = questID
+  t.numObjectives = numObjectives
+  t.isInArea  = isInArea
+  t.isOnMap = isOnMap
 
-  local t= {}
-  t.isInArea, t.isOnMap, t.numObjectives = GetTaskInfo(questID)
-
-  print('isInArea', t.isInArea, 'isOnMap', t.isOnMap, 'numObj', t.numObjectives)
-  t.displayObjectives = false
-  t.isComplete = true
-  t.questID = questID
-  if t.numObjectives >= 1 then
-    print(t.numObjectives,'objective rows')
+  print('    isInArea', isInArea, 'isOnMap', isOnMap, 'numObj', numObjectives)
+  local displayObjectives = false
+  local isComplete = true
+  if numObjectives >= 1 then
+    print('     ', numObjectives,'objective rows')
     t.objectives = {}
     for i = 1, t.numObjectives do
       t.objectives[i] = {}
       local o = t.objectives[i]
       o.index = i
-      o.text, o.objectiveType, o.finished, o.displayAsObjective = GetQuestObjectiveInfo(questID, i, true)
+      --local text, objectiveType, finished, displayAsObjective =
+      o.text, o.objectiveType, o.finished, o.displayAsObjective = GetQuestObjectiveInfo(questID, i, false)
 
       print(i, '==>', o.text, o.objectiveType, o.finished, o.displayAsObjective)
       t.displayObjectives = t.displayObjectives or o.displayAsObjective
@@ -69,6 +109,52 @@
 
     end
   end
+
+  t.displayObjectives = displayObjectives
+
+
+  local rewards = {}
+  t.numCurrencies = GetNumQuestLogRewardCurrencies(questID)
+  for i = 1, t.numCurrencies do
+    local name, texture, count = GetQuestLogRewardCurrencyInfo(i, questID)
+    tinsert(rewards,{
+      type = 'currency',
+      index = i,
+      name = name,
+      texture = texture,
+      count = count
+    });
+  end
+  -- items
+  t.numItems = GetNumQuestLogRewards(questID)
+  for i = 1, t.numItems do
+    local name, texture, count, quality, isUsable = GetQuestLogRewardInfo(i, questID)
+    tinsert(rewards, {
+      type = 'item',
+      index = i ,
+      name = name,
+      texture = texture,
+      count = count,
+      quality = quality,
+      isUsable = isUsable
+    });
+  end
+  -- money
+
+  local money = GetQuestLogRewardMoney(questID)
+  if ( money > 0 ) then
+    tinsert(rewards, {
+      type = 'money',
+      name = GetMoneyString(money),
+      texture = "Interface\\Icons\\inv_misc_coin_01",
+      count = 0,
+    });
+  end
+
+  if #rewards >= 1 then
+    t.rewardInfo = rewards
+  end
+
   Bonus.TasksTable[questID] = t
 
   return t
@@ -80,6 +166,8 @@
 Quest.freeButtons = {}
 Quest.POI = {}
 Quest.QuestBlock = {}
+Quest.LogBlock = {}
+Quest.LogInfo = {}
 Quest.GetNumWatched = function()
   Quest.numAll = GetNumQuestLogEntries()
   Quest.numWatched = GetNumQuestWatches()
@@ -96,9 +184,9 @@
   if not questID then
     return
   end
-  self.Info[questID] = self.Info[questID] or {}
+  Quest.Info[questID] = Quest.Info[questID] or {}
 
-  local q = self.Info[questID]
+  local q = Quest.Info[questID]
   q.watchIndex = watchIndex
   q.type = 'Quest'
   q.questID = questID