diff ObjectiveInfo.lua @ 18:d1812fb10ae6

ObjectiveStyle - move tag/template logic into the corresponding GetInfo
author Nenue
date Tue, 05 Apr 2016 02:38:01 -0400
parents 880828018bf4
children 605e8f0e46db
line wrap: on
line diff
--- a/ObjectiveInfo.lua	Tue Apr 05 00:44:25 2016 -0400
+++ b/ObjectiveInfo.lua	Tue Apr 05 02:38:01 2016 -0400
@@ -1,9 +1,23 @@
 local B = select(2,...).frame
-local wipe, pairs, ipairs, min, max, unpack = table.wipe, pairs, ipairs, min, max, unpack
+local wipe, pairs, ipairs, min, max, unpack, format = table.wipe, pairs, ipairs, min, max, unpack, format
+local tinsert, tostring = tinsert, tostring
+local GetQuestTagInfo, GetQuestLogTitle = GetQuestTagInfo, GetQuestLogTitle
+local GetNumQuestLogEntries, GetNumQuestWatches, GetQuestLogCompletionText, IsQuestWatched, IsQuestHardWatched, GetQuestLogSpecialItemInfo, GetQuestLogSpecialItemCooldown = GetNumQuestLogEntries, GetNumQuestWatches, GetQuestLogCompletionText, IsQuestWatched, IsQuestHardWatched, GetQuestLogSpecialItemInfo, GetQuestLogSpecialItemCooldown
+local GetNumAutoQuestPopUps, GetAutoQuestPopUp, GetTasksTable, GetNumQuestLogTasks, GetTaskInfo, GetQuestObjectiveInfo = GetNumAutoQuestPopUps, GetAutoQuestPopUp, GetTasksTable, GetNumQuestLogTasks, GetTaskInfo, GetQuestObjectiveInfo
+local GetNumQuestLogRewardCurrencies, GetQuestLogRewardCurrencyInfo, GetNumQuestLogRewards, GetQuestLogRewardInfo, GetQuestLogRewardMoney, GetMoneyString = GetNumQuestLogRewardCurrencies, GetQuestLogRewardCurrencyInfo, GetNumQuestLogRewards, GetQuestLogRewardInfo, GetQuestLogRewardMoney, GetMoneyString
 local GetNumQuestLeaderBoards, GetAchievementNumCriteria, GetQuestLogLeaderBoard, GetAchievementCriteriaInfo = GetNumQuestLeaderBoards, GetAchievementNumCriteria, GetQuestLogLeaderBoard, GetAchievementCriteriaInfo
 local GetQuestWatchIndex, GetQuestLogIndexByID, GetSuperTrackedQuestID, SetSuperTrackedQuestID, GetQuestWatchInfo = GetQuestWatchIndex, GetQuestLogIndexByID, GetSuperTrackedQuestID, SetSuperTrackedQuestID, GetQuestWatchInfo
+local QuestHasPOIInfo, GetDistanceSqToQuest, GetQuestFactionGroup = QuestHasPOIInfo, GetDistanceSqToQuest, GetQuestFactionGroup
+local GetTrackedAchievements, GetNumTrackedAchievements, GetAchievementInfo = GetTrackedAchievements, GetNumTrackedAchievements, GetAchievementInfo
 local mod = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame')
 local print = B.print('TrackerInfo')
+local QUEST_TAG_DUNGEON = QUEST_TAG_DUNGEON
+local QUEST_TAG_GROUP = QUEST_TAG_GROUP
+local QUEST_TAG_ACCOUNT = QUEST_TAG_ACCOUNT
+local QUEST_TAG_TCOORDS = QUEST_TAG_TCOORDS
+local LE_QUEST_FREQUENCY_DAILY = LE_QUEST_FREQUENCY_DAILY
+local LE_QUEST_FREQUENCY_WEEKLY = LE_QUEST_FREQUENCY_WEEKLY
+local FACTION_ALLIANCE, LE_QUEST_FACTION_HORDE, FACTION_HORDE, LE_QUEST_FACTION_HORDE = FACTION_ALLIANCE, LE_QUEST_FACTION_HORDE, FACTION_HORDE, LE_QUEST_FACTION_HORDE
 
 local Tracker, Bonus, AutoQuest, Quest, Cheevs = mod.Tracker, mod.Bonus, mod.AutoQuest, mod.Quest, mod.Cheevs
 --------------------------------------------------------------------
@@ -168,6 +182,7 @@
 Quest.QuestBlock = {}
 Quest.LogBlock = {}
 Quest.LogInfo = {}
+
 Quest.GetNumWatched = function()
   Quest.numAll = GetNumQuestLogEntries()
   Quest.numWatched = GetNumQuestWatches()
@@ -179,7 +194,7 @@
   startEvent, isAutoComplete, failureTime, timeElapsed, questType, isTask, isStory, isOnMap, hasLocalPOI = GetQuestWatchInfo(watchIndex)
 
   local _, level, suggestedGroup, isHeader, isCollapsed, isComplete, frequency, _, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory = GetQuestLogTitle(questIndex)
-  local questTagID, tagName = GetQuestTagInfo(questID);
+
 
   if not questID then
     return
@@ -192,6 +207,8 @@
   q.questID = questID
   q.title = title
   q.level = level
+  q.displayQuestID = displayQuestID
+  q.suggestedGroup = suggestedGroup
   q.questLogIndex = questIndex
   q.numObjectives = numObjectives
   q.requiredMoney = requiredMoney
@@ -205,22 +222,58 @@
   q.isStory = isStory
   q.isOnMap = isOnMap
   q.hasLocalPOI = hasLocalPOI
-
-  q.isDaily = ( frequency == LE_QUEST_FREQUENCY_DAILY and (not isComplete or isComplete == 0) )
-  q.isWeekly = ( frequency == LE_QUEST_FREQUENCY_WEEKLY and (not isComplete or isComplete == 0) )
+  q.frequency = frequency
   q.isComplete = isComplete
   q.isStory = isStory
   q.isTask = isTask
 
-  if isTask then
-    --q.task =  Bonus.GetInfo(questID)
+  --- resolve icon type and template
+  local tagID, tagName = GetQuestTagInfo(questID)
+  if ( tagName ) then
+    local factionGroup = GetQuestFactionGroup(questID);
+    -- Faction-specific account quests have additional info in the tooltip
+    if ( tagID == QUEST_TAG_ACCOUNT and factionGroup ) then
+      local factionString = FACTION_ALLIANCE;
+      if ( factionGroup == LE_QUEST_FACTION_HORDE ) then
+        factionString = FACTION_HORDE;
+      end
+      tagName = format("%s (%s)", tagName, factionString);
+    end
+    if ( QUEST_TAG_TCOORDS[tagID] ) then
+      local questTypeIcon;
+      if ( tagID == QUEST_TAG_ACCOUNT and factionGroup ) then
+        q.typeTag = QUEST_TAG_TCOORDS["ALLIANCE"];
+        if ( factionGroup == LE_QUEST_FACTION_HORDE ) then
+          q.typeTag= QUEST_TAG_TCOORDS["HORDE"];
+        end
+      else
+        q.typeTag = QUEST_TAG_TCOORDS[tagID];
+      end
+    end
   end
 
+  if ( frequency == LE_QUEST_FREQUENCY_DAILY ) then
+    q.frequencyTag = QUEST_TAG_TCOORDS["DAILY"]
+    q.mainStyle = 'Daily'
+  elseif ( frequency == LE_QUEST_FREQUENCY_WEEKLY ) then
+    q.frequencyTag = QUEST_TAG_TCOORDS["WEEKLY"]
+    q.mainStyle = 'Daily'
+  end
+  if ( isComplete and isComplete < 0 ) then
+    q.completionTag = QUEST_TAG_TCOORDS["FAILED"]
+    q.subStyle = 'Failed'
+  elseif isComplete then
+    q.completionTag = QUEST_TAG_TCOORDS["COMPLETED"]
+    q.subStyle = 'Complete'
+  end
+  q.tagID = tagID
+  q.tagName = tagName
+
+
+
   --q.isBreadCrumb = isBreadCrumb
   q.completionText= GetQuestLogCompletionText(questIndex)
   q.numObjectives = GetNumQuestLeaderBoards(questIndex)
-  q.isWatched = IsQuestWatched(questIndex)
-  q.isHardWatched = IsQuestHardWatched(questIndex)
   q.objectives = {}
   for i = 1, q.numObjectives do
     local text, type, finished = GetQuestLogLeaderBoard(i, questIndex)
@@ -253,7 +306,6 @@
     }
   end
 
-
   if QuestHasPOIInfo(questID) then
     local distance, onContinent = GetDistanceSqToQuest(questIndex)
       if distance ~= nil and distance > 0 then
@@ -266,7 +318,8 @@
     end
   end
 
-  q.superTracked =  (questID == GetSuperTrackedQuestID()) -- call directly so artifact data doesn't become an issue
+
+  q.selected =  (questID == GetSuperTrackedQuestID()) -- call directly so artifact data doesn't become an issue
   self.WatchInfo[watchIndex] = q
   self.LogInfo[questIndex] = q
   print('- logIndex =', questIndex, 'title =', title)