Quantcast

... and I forget to add QuestLevel

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