Mercurial > wow > buffalo2
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