vanilla-wow-addons – Rev 1
?pathlinks?
--[[
MonkeyQuest:
Displays your quests for quick viewing.
Website: http://wow.visualization.ca/
Author: Trentin (monkeymods@gmail.com)
Contributors:
Celdor
- Help with the Quest Log Freeze bug
Diungo
- Toggle grow direction
Pkp
- Color Quest Titles the same as the quest level
wowpendium.de
- German translation
MarsMod
- Valid player name before the VARIABLES_LOADED event bug
- Settings resetting bug
Dunewarrior
- Tooltip update for WoW 1.7.0
--]]
-- this function catches the aftooltip extreme function for setting the mouse over unit's name
function MonkeyQuest_NEW_aftt_setName(unit)
-- call the original aftt setName function
MonkeyQuest_OLD_aftt_setName(unit);
-- Overwrite the aftt text with the quest objective completeness, if needed
MonkeyQuest_SearchTooltip();
end
-- this function catches the bag mouse over tooltip event
function MonkeyQuest_NEW_ContainerFrameItemButton_OnEnter()
-- call the old (probably blizzard's) GameTooltip_OnEvent()
MonkeyQuest_OLD_ContainerFrameItemButton_OnEnter();
MonkeyQuest_SearchTooltip();
MonkeyQuest_SearchTooltipForRelevantQuest();
end
function MonkeyQuest_SearchTooltip()
local ii, jj;
-- does the user not want this feature?
if (MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bShowTooltipObjectives == false) then
return false;
end
if (GameTooltip == nil) then
return false;
end
if (not getglobal('GameTooltipTextLeft1'):IsVisible()) then
-- no more tooltip text, get out
return false;
end
-- check the string isn't nil
if (getglobal('GameTooltipTextLeft1'):GetText() ~= nil) then
if (MonkeyQuest_SearchQuestListItem(getglobal('GameTooltipTextLeft1'):GetText()) == true) then
return true;
end
end
-- didn't find an item needing the MonkeyQuest tooltip
return false;
end
function MonkeyQuest_SearchQuestListItem(strSearch)
local i, j, length, iStrKeySize, iStrSearchSize;
-- super double check for nil string
if (strSearch == nil) then
return false;
end
--DEFAULT_CHAT_FRAME:AddMessage("Searching: " .. strSearch);
for key, value in MonkeyQuest.m_aQuestItemList do
i, j = string.find(strSearch, key);
iStrKeySize = string.len(key);
iStrSearchSize = string.len(strSearch);
if (string.find(strSearch, "|c")) then
-- chop off the colour coding
iStrSearchSize = iStrSearchSize - 10;
end
--DEFAULT_CHAT_FRAME:AddMessage(key .. " == " .. strSearch);
if (i ~= nil and i ~= j and iStrSearchSize == iStrKeySize) then
-- found it!
--DEFAULT_CHAT_FRAME:AddMessage(key .. " == " .. strSearch .. " i= " .. i .. " j= " .. j);
if (aftt_textline1 ~= nil) then
-- aftootip is loaded, set the text for it
aftt_textline1:SetText(strSearch .. " " .. MONKEYQUEST_TOOLTIP_QUESTITEM .. " " .. value.m_iNumItems .. "/" .. value.m_iNumNeeded);
--DEFAULT_CHAT_FRAME:AddMessage("aftt hack");
end
-- TODO: calculate the completeness colour
local colourTip = {a = 1.0, r = 1.0, g = 1.0, b = 1.0};
colourTip.a, colourTip.r, colourTip.g, colourTip.b = MonkeyQuest_GetCompletenessColorStr(value.m_iNumItems, value.m_iNumNeeded);
GameTooltip:AddLine(MONKEYQUEST_TOOLTIP_QUESTITEM .. " " .. value.m_iNumItems .. "/" .. value.m_iNumNeeded,
colourTip.r, colourTip.g, colourTip.b, 1);
-- resize the tootip (thanks Turan's AuctionIt)
length = getglobal(GameTooltip:GetName() .. "TextLeft" .. GameTooltip:NumLines()):GetStringWidth();
-- Give the text some border space on the right side of the tooltip.
length = length + 22;
GameTooltip:SetHeight(GameTooltip:GetHeight() + 14);
if ( length > GameTooltip:GetWidth() ) then
GameTooltip:SetWidth(length);
end
return true;
end
end
return false;
end
function MonkeyQuest_SearchTooltipForRelevantQuest()
local ii, jj;
-- does the user not want this feature?
if (MonkeyQuestConfig[MonkeyQuest.m_strPlayer].m_bShowTooltipObjectives == false) then
return false;
end
if (GameTooltip == nil) then
return false;
end
if (not getglobal('GameTooltipTextLeft1'):IsVisible()) then
-- no more tooltip text, get out
return false;
end
-- check the string isn't nil
if (getglobal('GameTooltipTextLeft1'):GetText() ~= nil) then
strRelevantQuest = MonkeyQuest_SearchQuestDetails(getglobal('GameTooltipTextLeft1'):GetText());
if (strRelevantQuest ~= nil) then
GameTooltip:AddLine(MONKEYQUEST_TOOLTIP_QUEST .. ": " .. strRelevantQuest, MONKEYQUEST_DEFAULT_CRASHCOLOUR.r,
MONKEYQUEST_DEFAULT_CRASHCOLOUR.g,
MONKEYQUEST_DEFAULT_CRASHCOLOUR.b, 1);
-- resize the tootip (thanks Turan's AuctionIt)
length = getglobal(GameTooltip:GetName() .. "TextLeft" .. GameTooltip:NumLines()):GetStringWidth();
-- Give the text some border space on the right side of the tooltip.
length = length + 22;
GameTooltip:SetHeight(GameTooltip:GetHeight() + 14);
if ( length > GameTooltip:GetWidth() ) then
GameTooltip:SetWidth(length);
end
return true;
end
end
-- didn't find an item needing the MonkeyQuest tooltip
return false;
end
-- search for the string anywhere in any quest
function MonkeyQuest_SearchQuestDetails(strSearch)
-- super double check for nil string
if (strSearch == nil) then
return false;
end
local strQuestLogTitleText, strQuestLevel, strQuestTag, isHeader, isCollapsed, isComplete;
local i, j, k;
local iNumEntries, iNumQuests = GetNumQuestLogEntries();
local strQuestDescription, strQuestObjectives;
for i = 1, iNumEntries, 1 do
-- strQuestLogTitleText the title text of the quest, may be a header (ex. Wetlands)
-- strQuestLevel the level of the quest
-- strQuestTag the tag on the quest (ex. COMPLETED)
strQuestLogTitleText, strQuestLevel, strQuestTag, isHeader, isCollapsed, isComplete = GetQuestLogTitle(i);
if (not isHeader) then
-- Select the quest log entry for other functions like GetNumQuestLeaderBoards()
SelectQuestLogEntry(i);
strQuestDescription, strQuestObjectives = GetQuestLogQuestText();
--DEFAULT_CHAT_FRAME:AddMessage(strSearch .. " == " .. strQuestDescription);
if (string.find(strQuestDescription, strSearch) or string.find(strQuestObjectives, strSearch)) then
return strQuestLogTitleText;
end
end
end
return nil;
end
Generated by GNU Enscript 1.6.5.90.