diff ObjectiveTracker/Events.lua @ 34:9856ebc63fa4

- half solution to Update being fired multiple times during load - change securefunc handlers to dispense a reason code; catch that reason code in the enclosure passed to hooksecurefunc, and decide whether to update or not from there.
author Nenue
date Sun, 17 Apr 2016 00:21:45 -0400
parents 48b3e3959a0a
children e84d645c8ab8
line wrap: on
line diff
--- a/ObjectiveTracker/Events.lua	Fri Apr 15 17:01:06 2016 -0400
+++ b/ObjectiveTracker/Events.lua	Sun Apr 17 00:21:45 2016 -0400
@@ -7,66 +7,71 @@
 local T = B:RegisterModule("ObjectiveTracker", _G.VeneerObjectiveWrapper, 'BuffFrame')
 local print = B.print('Objectives')
 
+local _G = _G
+local OBJECTIVE_TRACKER_UPDATE_MODULE_ACHIEVEMENT = OBJECTIVE_TRACKER_UPDATE_MODULE_ACHIEVEMENT
+local OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST_ADDED = OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST_ADDED
+local OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST = OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST
+local OBJECTIVE_TRACKER_UPDATE_MODULE_AUTO_QUEST_POPUP = OBJECTIVE_TRACKER_UPDATE_MODULE_AUTO_QUEST_POPUP
+local GetQuestID, GetQuestLogIndexByID, AddQuestWatch, SetSuperTrackedQuestID = GetQuestID, GetQuestLogIndexByID, AddQuestWatch, SetSuperTrackedQuestID
+local QuestPOIUpdateIcons = QuestPOIUpdateIcons
 -------------------------------------------------------------------
---- SecureHooked blizzard functions
+--- Deal with blizzard API calls that affect the tracker/log contents
+--- mainly just hiding blocks until they can be picked up by the next update event
 -------------------------------------------------------------------
 T.AddQuestWatch = function(questID)
-    T:Update(0x00000003)
+  if not B.Conf.VeneerObjectiveWrapper.enabled then return end
+  return OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST
 end
 
 local Quest = T.Quest
 T.RemoveQuestWatch = function(questIndex, ...)
   print('|cFFFF8800RemoveQuestWatch', questIndex, ...)
-
-  local info = T.Quest.LogInfo[questIndex]
-
-  -- remove quest refs
-  local block = Quest.QuestBlock[info.questID]
-  Quest.QuestBlock[info.questID] = nil
-  Quest.LogBlock[questIndex] = nil
-
-  -- remove if they still match
-  if Quest.WatchInfo[info.watchIndex] == info then
-    print('cleaning dead WatchInfo entry')
-    Quest.WatchInfo[info.watchIndex] = nil
+  local block = T.Quest.LogBlock[questIndex]
+  if block then
+    block:Hide()
   end
-  if Quest.itemButtons[info.questID] then
-    -- hide for now, it will get cleaned up shortly
-    Quest.itemButtons[info.questID]:Hide()
-  end
-
-  T:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST)
+  return OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST
 end
 
 T.AddTrackedAchievement = function(cheevID)
   T.CleanWidgets()
-  T:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_ACHIEVEMENT)
+  return OBJECTIVE_TRACKER_UPDATE_MODULE_ACHIEVEMENT
 end
 
 
 T.RemoveTrackedAchievement = function(cheevID)
-  print('|cFFFF8800UntrackAchievement', cheevID)
   T.CleanWidgets()
-  T:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_ACHIEVEMENT)
+  return OBJECTIVE_TRACKER_UPDATE_MODULE_ACHIEVEMENT
 end
 
 T.AcceptQuest = function()
-  T:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST_ADDED)
 end
 
 T.AbandonQuest = function()
   QuestPOIUpdateIcons()
-  T:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST)
+  return OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST
 end
-T.TurnInQuest = function()
+T.CompleteQuest = function()
+  local questID = GetQuestID()
+  if T.Quest.Info[questID] then
+    local q = T.Quest.Info[questID]
+    if q.logIndex then
+      local block = T.Quest.LogBlock[q.logIndex]
+      if block and block.id == questID then
+        block:Hide()
+      end
+    end
+  end
+
   QuestPOIUpdateIcons()
-  T:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST)
+  return OBJECTIVE_TRACKER_UPDATE_MODULE_QUEST
 end
 T.AddAutoQuestPopUp = function(...)
-   T:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_AUTO_QUEST_POPUP)
+  return OBJECTIVE_TRACKER_UPDATE_MODULE_AUTO_QUEST_POPUP
 end
-T.RemoveAutoQuestPopUp = function(...)
-  T:Update(OBJECTIVE_TRACKER_UPDATE_MODULE_AUTO_QUEST_POPUP)
+T.RemoveAutoQuestPopUp = function(questID)
+  return OBJECTIVE_TRACKER_UPDATE_MODULE_AUTO_QUEST_POPUP
+
 end