... and I forget to add QuestLevel
Alex Shubert [10-12-12 - 08:58]
... and I forget to add QuestLevel
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