From 8d20b78b010cb8531e65ed3c2089016fdd6fdd5b Mon Sep 17 00:00:00 2001 From: Alex Shubert Date: Fri, 12 Oct 2012 12:58:34 +0400 Subject: [PATCH] ... and I forget to add QuestLevel --- QuestLevel.lua | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 QuestLevel.lua diff --git a/QuestLevel.lua b/QuestLevel.lua new file mode 100644 index 0000000..483342d --- /dev/null +++ b/QuestLevel.lua @@ -0,0 +1,68 @@ +local _G = _G --Rumors say that global _G is called by lookup in a super-global table. Have no idea whether it is true. +local _ --Sometimes blizzard exposes "_" variable as a global. +local addonName, ptable = ... +local L = ptable.L +local C = ptable.CONST + +AutoTurnIn.QuestLevelFormat = " [%d] %s" +function AutoTurnIn:ShowQuestLevelInLog() + -- see function QuestLog_Update() in function QuestLogFrame.lua for details + local scrollOffset = HybridScrollFrame_GetOffset(QuestLogScrollFrame); + local numEntries, numQuests = GetNumQuestLogEntries(); + + for i=1, #QuestLogScrollFrame.buttons do + local questIndex = i + scrollOffset; + local button = QuestLogScrollFrame.buttons[i] + if ( questIndex <= numEntries ) then + local title, level, _, _, isHeader = GetQuestLogTitle(questIndex); + if (not isHeader and title) then + button:SetText(AutoTurnIn.QuestLevelFormat:format(level, title)) + QuestLogTitleButton_Resize(button) + end + end + end +end + +-- gossip and quest interaction goes through a sequence of windows: gossip [shows a list of available quests] - quest[describes specified quest] +-- sometimes some parts of this chain is skipped. For example, priest in Honor Hold show quest window directly. This is a trick to handle 'toggle key' +hooksecurefunc(QuestFrame, "Hide", function() AutoTurnIn.allowed = nil end) + +-- Quest level in a log. +hooksecurefunc("QuestLog_Update", AutoTurnIn.ShowQuestLevelInLog) +hooksecurefunc(QuestLogScrollFrame, "update", AutoTurnIn.ShowQuestLevelInLog) + +AutoTurnIn.WatchFrameLevelFormat = "[%d%s%s] %s" +AutoTurnIn.QuestTypesIndex = { + [0] = "", --default + [1] = "g", --Group + [41] = "+", --PvP + [62] = "r", --Raid + [81] = "d", --Dungeon + [83] = "L", --Legendary + [85] = "h", --Heroic + [98] = "s", --Scenario QUEST_TYPE_SCENARIO + [102] = "a", -- Account +} +function AutoTurnIn:ShowQuestLevelInWatchFrame() + for i = 1, #WATCHFRAME_LINKBUTTONS do + button = WATCHFRAME_LINKBUTTONS[i] + + if( button.type == "QUEST" ) then + local questIndex = GetQuestIndexForWatch(button.index) + if questIndex then + local textLine = button.lines[button.startLine] + if textLine.text:GetText() and (not string.find("", "^%[.*%].*")) then + local title, level, _, _, _, _, _, isDaily = GetQuestLogTitle(questIndex) + local questTypeIndex = GetQuestLogQuestType(questIndex) + tagString = AutoTurnIn.QuestTypesIndex[questTypeIndex] + if (not tagString) then + self:Print("Please, inform addon author unknown QT for: " ..title) + tagString = "" + end + textLine.text:SetText(AutoTurnIn.WatchFrameLevelFormat:format(level, tagString, isDaily and "\*" or "", title)) + end + end + end + end +end +hooksecurefunc("WatchFrame_Update", AutoTurnIn.ShowQuestLevelInWatchFrame) \ No newline at end of file -- 1.7.9.5