WoWInterface SVN QueTip

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 1 to Rev 2
    Reverse comparison

Rev 1 → Rev 2

trunk/QueTip/core.lua New file
0,0 → 1,99
local qmobs, qitems = {} , {} -- cache the data
 
local match, format, tonumber = strmatch, format, tonumber --apparently its good for you
 
--taken from the wonderful LibQuixote-2.0 by kemayo
local objects_pattern = "^"..QUEST_OBJECTS_FOUND:gsub("(%%.)", "(.+)").."$" --QUEST_OBJECTS_FOUND = "%s: %d/%d"
local monsters_pattern = "^"..QUEST_MONSTERS_KILLED:gsub("(%%.)", "(.+)").."$" --QUEST_MONSTERS_KILLED = "%s slain: %d/%d"
 
local function ColourGradient(perc) -- for colouring in
if perc <= 0.5 then
return 1, perc*2, 0
else
return 2 - perc*2, 1, 0
end
end
local function AddQuest(table, title, name, have, need)
if table[name] then -- incase theres more than one quest wanting the same thing
if type(table[name]) == "string" then
table[name] = {table[name]}
end
local t = table[name]
t[#t+1] = format("%s:%d/%d", title, tonumber(have), tonumber(need))
else table[name] = format("%s:%d/%d", title, tonumber(have), tonumber(need))
end
end
 
local qtitle, header, _, need, have, desc, qtype, mobname
 
--update qmobs/qitems when quest log updates
local f = CreateFrame("Frame")
f:RegisterEvent("QUEST_LOG_UPDATE")
f:SetScript("OnEvent", function()
for i, v in pairs(qmobs) do qmobs[i] = nil end --erase tables
for i, v in pairs(qitems) do qitems[i] = nil end
 
 
for questid = 1, GetNumQuestLogEntries() do
qtitle, _, _, _, header = GetQuestLogTitle(questid)
if not header and GetNumQuestLeaderBoards(questid) > 0 then
for questob = 1, GetNumQuestLeaderBoards(questid) do
desc, qtype = GetQuestLogLeaderBoard(questob, questid)
if qtype == "monster" then
mobname, have, need = desc:match(monsters_pattern)
if mobname == nil or have == nil or need == nil then
AddQuest(qmobs,qtitle,desc:match("^%w+ (.+):(.+)/(.+)$")) -- Find Mankrik's Wife: 0/1
AddQuest(qmobs,qtitle,desc:match("^(.+) %w+:(.+)/(.+)$")) --Aether Rays Wrangled: 5/6
else AddQuest(qmobs,qtitle,mobname,have,need)
end
 
elseif qtype == "item" or qtype == "object" then
AddQuest(qitems,qtitle,desc:match(objects_pattern))
end
end
end
end
end)
 
local function AddQuestTooltipLine(name, table, tooltip)
local obs = table[name]
if obs then
if type(obs) == "table" then
for i, v in ipairs(obs) do
qtitle, have, need = match(v, "(.+:)(%d+)/(%d+)")
tooltip:AddDoubleLine(qtitle, have.."/"..need, 1, 1, 1, ColourGradient(have/need))
end
else qtitle, have, need = match(obs, "(.+:)(%d+)/(%d+)")
tooltip:AddDoubleLine(qtitle, have.."/"..need, 1, 1, 1, ColourGradient(have/need))
end
end
end
 
 
 
--Hooks
local name
GameTooltip:HookScript("OnTooltipSetItem", function(tooltip)
name = tooltip:GetItem()
if name then
AddQuestTooltipLine(name, qitems, tooltip)
end
end)
 
ItemRefTooltip:HookScript("OnTooltipSetItem", function(tooltip)
name = tooltip:GetItem()
if name then
AddQuestTooltipLine(name, qitems, tooltip)
end
end)
 
 
GameTooltip:HookScript("OnTooltipSetUnit", function(tooltip)
name = tooltip:GetUnit()
if not UnitIsPlayer("mouseover") and name then
AddQuestTooltipLine(name, qmobs, tooltip)
end
end)
 
 
 
trunk/QueTip/QueTip.toc New file
0,0 → 1,9
## Interface: 20400
## Title: QueTip
## Author: Slakah
## Notes: Adds Quest progress to the end of tooltips.
## X-Credits: Quixote and Questsfu and LibQuixote-2.0 by Kamayo
## Version: 1.1
 
 
core.lua
\ No newline at end of file