vanilla-wow-addons – Rev 1
?pathlinks?
function EQL_QuestTracker_OnLoad()
this:RegisterEvent("QUEST_FINISHED");
this:RegisterEvent("QUEST_COMPLETE");
this:RegisterEvent("VARIABLES_LOADED");
this:RegisterEvent("UI_INFO_MESSAGE");
this:RegisterEvent("CHAT_MSG_SYSTEM");
this:RegisterEvent("UNIT_QUEST_LOG_CHANGED");
end
function EQL3_QuestWatchFrame_OnUpdate(elapsed)
EQL3_Temp.updateTime = EQL3_Temp.updateTime + elapsed;
if(EQL3_Temp.updateTime >= EQL3_Temp.updateTarget) then
EQL3_Temp.updateTime = 0;
EQL3_Temp.updateTarget = 3;
if(EQL3_Temp.manageHeaders) then
EQL3_Temp.manageHeaders = false;
ManageQuestHeaders();
end
MagageTrackedQuests();
QuestWatch_Update();
end
end
function EQL_QuestTracker_OnEvent(event)
if (event == "CHAT_MSG_SYSTEM" and QuestlogOptions[EQL3_Player].AddNew == 1) then
if string.find(arg1, EQL_QUEST_ACCEPTED.." .+") then
local temp = string.gsub(arg1, EQL_QUEST_ACCEPTED.." ", "");
-- Got name, add to tracker
EQL3_Temp.AddTrack = temp;
EQL3_Temp.updateTime = 0;
EQL3_Temp.updateTarget = 1;
end
end
if(event == "UI_INFO_MESSAGE") then
if(QuestlogOptions[EQL3_Player].AddUntracked == 1) then
if (string.find (arg1, ".+%s%d+/%d+")) then
local temp = string.gsub(arg1, " %d+/%d+", "");
FindAndAddQuestToTracker(temp);
elseif (string.find (arg1, ".+%s"..EQL_COMPLETE)) then
local temp = string.gsub(arg1, " "..EQL_COMPLETE, "");
FindAndAddQuestToTracker(temp);
end
end
end
if (event == "VARIABLES_LOADED") then
if(QuestlogOptions[EQL3_Player] and QuestlogOptions[EQL3_Player].Color["TrackerBG"]) then
QuestWatchFrameBackdrop:SetBackdropBorderColor( QuestlogOptions[EQL3_Player].Color["TrackerBG"].r,
QuestlogOptions[EQL3_Player].Color["TrackerBG"].g,
QuestlogOptions[EQL3_Player].Color["TrackerBG"].b );
QuestWatchFrameBackdrop:SetBackdropColor( QuestlogOptions[EQL3_Player].Color["TrackerBG"].r,
QuestlogOptions[EQL3_Player].Color["TrackerBG"].g,
QuestlogOptions[EQL3_Player].Color["TrackerBG"].b );
QuestWatchFrameBackdrop:SetAlpha(QuestlogOptions[EQL3_Player].Color["TrackerBG"].a);
end
if(QuestlogOptions[EQL3_Player].LockTracker == 1) then
EQL3_QuestWatchFrame:SetUserPlaced(0);
EQL3_QuestWatchFrame:RegisterForDrag(0);
EQL3_QuestWatchFrame:SetMovable(false);
EQL3_QuestWatchFrame:EnableMouse(false);
else
EQL3_QuestWatchFrame:RegisterForDrag("LeftButton");
end
if (QuestlogOptions[EQL3_Player].LockPoints and
QuestlogOptions[EQL3_Player].LockPoints.corner and
QuestlogOptions[EQL3_Player].LockPoints.pointone and
QuestlogOptions[EQL3_Player].LockPoints.pointtwo) then
EQL3_QuestWatchFrame:ClearAllPoints();
EQL3_QuestWatchFrame:SetPoint(QuestlogOptions[EQL3_Player].LockPoints.corner,"UIParent","BOTTOMLEFT",QuestlogOptions[EQL3_Player].LockPoints.pointone,QuestlogOptions[EQL3_Player].LockPoints.pointtwo);
end
SetTrackerFontSize();
EQL3_Temp.updateTime = 0;
EQL3_Temp.updateTarget = 1;
EQL3_Temp.manageHeaders = true;
end
if ( event == "QUEST_FINISHED" or event == "QUEST_COMPLETE" ) then
MagageTrackedQuests();
end
if( event == "QUESTLOG_CHANGED" and not EQL3_Temp.firstManagement ) then
MagageTrackedQuests();
EQL3_Temp.firstManagement = true;
end
end
local old_QuestWatch_Update = QuestWatch_Update;
-- QuestWatch functions
function QuestWatch_Update()
if(not EQL3_Temp.hasManaged) then
QuestWatchFrame:Hide();
return;
end
-- MagageTrackedQuests();
if ( QuestlogOptions[EQL3_Player].TrackerIsMinimized == 1 ) then
QuestWatch_SetMinimized();
return;
end
local numObjectives;
local questWatchMaxWidth = 0;
local tempWidth;
local watchText;
local text, type, finished;
local questTitle
local watchTextIndex = 1;
local questIndex;
local objectivesCompleted;
local level;
local tempColor, tempColor2, tempColor3;
local tempArray = {}, tempI;
local tempObj, tempDone, tempLevel, tempTag;
local qwHeight=12;
local questLogTitleText, isComplete, isCompleted, isRemoved;
local currentHeader = nil;
local temp, isCollapsed, isOk;
for i=1, table.getn(QuestlogOptions[EQL3_Player].QuestWatches), 1 do
isRemoved = false;
questIndex = EQL3_GetQuestIndexForWatch(i);
if ( questIndex ) then
_, level, _, _, _, isCompleted = GetQuestLogTitle(questIndex);
numObjectives = GetNumQuestLeaderBoards(questIndex);
-- Check Header
temp, isCollapsed = GetQuestHeaderForWatch(i);
if (currentHeader == nil or currentHeader ~= temp) then
currentHeader = temp;
if(QuestlogOptions[EQL3_Player].ShowZonesInTracker == 1) then
watchText = getglobal("EQL3_QuestWatchLine"..watchTextIndex);
if(watchText ~= nil) then
watchText:SetText(currentHeader);
tempWidth = watchText:GetWidth();
-- Set the anchor of the title line a little lower
if ( watchTextIndex > 1 ) then
watchText:SetPoint("TOPLEFT", "EQL3_QuestWatchLine"..(watchTextIndex - 1), "BOTTOMLEFT", 0, -4);
qwHeight = qwHeight+4;
end
if (QuestlogOptions[EQL3_Player].CustomZoneColor == 1) then
watchText:SetTextColor(QuestlogOptions[EQL3_Player].Color["Zone"].r, QuestlogOptions[EQL3_Player].Color["Zone"].g, QuestlogOptions[EQL3_Player].Color["Zone"].b);
else
watchText:SetTextColor(1, 1, 1);
end
watchText:Show();
if ( tempWidth > questWatchMaxWidth ) then
questWatchMaxWidth = tempWidth;
end
end
watchTextIndex = watchTextIndex + 1;
end
end
if(QuestlogOptions[EQL3_Player].RemoveFinished == 1 and isCompleted) then
isRemoved = true;
end
if(isCollapsed == nil and questIndex > 0 and not isRemoved) then
-- Set title
questLogTitleText, tempLevel, tempTag, _, _, isComplete = GetQuestLogTitle(questIndex);
watchText = getglobal("EQL3_QuestWatchLine"..watchTextIndex);
if(watchText ~= nil and questLogTitleText ~= nil) then
if(QuestlogOptions[EQL3_Player].ShowQuestLevels == 1) then
if (tempTag ~= NIL) then
tempLevel = tempLevel.."+";
end
watchText:SetText(" ".."["..tempLevel.."] "..questLogTitleText);
else
watchText:SetText(" "..questLogTitleText);
end
tempWidth = watchText:GetWidth();
-- Set the anchor of the title line a little lower
if ( watchTextIndex > 1 ) then
watchText:SetPoint("TOPLEFT", "EQL3_QuestWatchLine"..(watchTextIndex - 1), "BOTTOMLEFT", 0, -4);
qwHeight = qwHeight+4;
end
watchText:Show();
if ( tempWidth > questWatchMaxWidth ) then
questWatchMaxWidth = tempWidth;
end
end
watchTextIndex = watchTextIndex + 1;
if(QuestlogOptions[EQL3_Player].MinimizeFinished == 1 and isCompleted) then
numObjectives = 0;
end
local markerID = 0;
if ( numObjectives > 0 ) then
objectivesCompleted = 0;
tempObj = 0;
tempDone = 0;
for j=1, numObjectives do
text, type, finished = GetQuestLogLeaderBoard(j, questIndex);
if ( finished and QuestlogOptions[EQL3_Player].RemoveCompletedObjectives == 1 ) then
-- Do nothing
else
watchText = getglobal("EQL3_QuestWatchLine"..watchTextIndex);
if(watchText ~= nil) then
-- Set Objective text
if ( QuestlogOptions[EQL3_Player].ShowObjectiveMarkers == 1 ) then
if (QuestlogOptions[EQL3_Player].UseTrackerListing == 1) then -- Tracker Listing
watchText:SetText(" "..EQL3_TrackerLists[QuestlogOptions[EQL3_Player].TrackerList][markerID]..") "..text);
else
watchText:SetText(" "..EQL3_TrackerSymbols[QuestlogOptions[EQL3_Player].TrackerSymbol].." "..text);
end
else
watchText:SetText(" "..text);
end
-- Color the objectives
if (QuestlogOptions[EQL3_Player].CustomObjetiveColor == 1) then
tempColor = { r=QuestlogOptions[EQL3_Player].Color["ObjectiveEmpty"].r,
g=QuestlogOptions[EQL3_Player].Color["ObjectiveEmpty"].g,
b=QuestlogOptions[EQL3_Player].Color["ObjectiveEmpty"].b };
tempColor2 = { r=QuestlogOptions[EQL3_Player].Color["ObjectiveComplete"].r,
g=QuestlogOptions[EQL3_Player].Color["ObjectiveComplete"].g,
b=QuestlogOptions[EQL3_Player].Color["ObjectiveComplete"].b };
else
tempColor = {r=0.8, g=0.8, b=0.8};
tempColor2 = {r=HIGHLIGHT_FONT_COLOR.r, g=HIGHLIGHT_FONT_COLOR.g, b=HIGHLIGHT_FONT_COLOR.b};
end
if ( finished ) then
watchText:SetTextColor(tempColor2.r, tempColor2.g, tempColor2.b);
objectivesCompleted = objectivesCompleted + 1;
else
tempI = 0;
tempArray = {};
for v in string.gfind(text, "%d+") do
tempI = tempI+1;
table.insert (tempArray, v);
end
if (tempI == 0) then
tempI = 2;
tempArray[1] = "0";
tempArray[2] = "1";
elseif (tempI == 1) then
tempI = 2;
tempArray[2] = 99999;
end
tempObj = tempObj + tempArray[tempI];
tempDone = tempDone + tempArray[tempI-1];
if (QuestlogOptions[EQL3_Player].FadeObjectiveColor == 1) then
tempColor3 = EQL3_FadeColors(tempColor, tempColor2, tempArray[tempI-1], tempArray[tempI]);
else
tempColor3 = tempColor;
end
watchText:SetTextColor(tempColor3.r, tempColor3.g, tempColor3.b);
end
tempWidth = watchText:GetWidth();
if ( tempWidth > questWatchMaxWidth ) then
questWatchMaxWidth = tempWidth;
end
watchText:SetPoint("TOPLEFT", "EQL3_QuestWatchLine"..(watchTextIndex - 1), "BOTTOMLEFT", 0, 0);
watchText:Show();
end
watchTextIndex = watchTextIndex + 1;
markerID = markerID+1;
end --if not complete... bla bla bla
end -- For
else
tempObj = 1;
tempDone = 0;
numObjectives = 0;
objectivesCompleted = -1;
end
-- Brighten the quest title if all the quest objectives were met
watchText = getglobal("EQL3_QuestWatchLine"..watchTextIndex-markerID-1);
if (QuestlogOptions[EQL3_Player].CustomHeaderColor == 1) then
if (QuestlogOptions[EQL3_Player].FadeHeaderColor == 1) then
if ( isComplete or objectivesCompleted == numObjectives ) then
tempColor = { r=QuestlogOptions[EQL3_Player].Color["HeaderComplete"].r,
g=QuestlogOptions[EQL3_Player].Color["HeaderComplete"].g,
b=QuestlogOptions[EQL3_Player].Color["HeaderComplete"].b };
else
tempColor3 = {r=QuestlogOptions[EQL3_Player].Color["HeaderEmpty"].r,
g=QuestlogOptions[EQL3_Player].Color["HeaderEmpty"].g,
b=QuestlogOptions[EQL3_Player].Color["HeaderEmpty"].b };
tempColor2 = {r=QuestlogOptions[EQL3_Player].Color["HeaderComplete"].r,
g=QuestlogOptions[EQL3_Player].Color["HeaderComplete"].g,
b=QuestlogOptions[EQL3_Player].Color["HeaderComplete"].b };
tempColor = EQL3_FadeColors(tempColor3, tempColor2, tempDone, tempObj);
end
else
if ( isComplete or objectivesCompleted == numObjectives ) then
tempColor = { r=QuestlogOptions[EQL3_Player].Color["HeaderComplete"].r,
g=QuestlogOptions[EQL3_Player].Color["HeaderComplete"].g,
b=QuestlogOptions[EQL3_Player].Color["HeaderComplete"].b };
else
tempColor = { r=QuestlogOptions[EQL3_Player].Color["HeaderEmpty"].r,
g=QuestlogOptions[EQL3_Player].Color["HeaderEmpty"].g,
b=QuestlogOptions[EQL3_Player].Color["HeaderEmpty"].b };
end
end
watchText:SetTextColor(tempColor.r, tempColor.g, tempColor.b);
else
if ( isComplete or objectivesCompleted == numObjectives ) then
watchText:SetTextColor(NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b);
else
watchText:SetTextColor(0.75, 0.61, 0);
end
end
end
end
end
-- Set tracking indicator
if ( GetNumQuestWatches() > 0 ) then
EQL3_QuestLogTrackTracking:SetVertexColor(0, 1.0, 0);
else
EQL3_QuestLogTrackTracking:SetVertexColor(1.0, 0, 0);
end
-- If no watch lines used then hide the frame and return
if ( watchTextIndex == 1 ) then
EQL3_QuestWatchFrame:Hide();
return;
else
EQL3_QuestWatchFrame:Show();
EQL3_QuestWatchFrame:SetHeight(watchTextIndex * (QuestlogOptions[EQL3_Player].TrackerFontHeight+1) + qwHeight);
EQL3_QuestWatchFrame:SetWidth(questWatchMaxWidth+12);
end
-- Hide unused watch lines
if(watchTextIndex < MAX_QUESTWATCH_LINES) then
for i=watchTextIndex, MAX_QUESTWATCH_LINES do
getglobal("EQL3_QuestWatchLine"..i):Hide();
end
end
QuestWatchFrameBackdrop:SetPoint("TOPLEFT", "EQL3_QuestWatchFrame", "TOPLEFT", -8, -4);
-- UIParent_ManageFramePositions();
if (not EQL3_Temp.movingWatchFrame) then
if (QuestlogOptions[EQL3_Player].LockPoints and
QuestlogOptions[EQL3_Player].LockPoints.corner and
QuestlogOptions[EQL3_Player].LockPoints.pointone and
QuestlogOptions[EQL3_Player].LockPoints.pointtwo) then
EQL3_QuestWatchFrame:ClearAllPoints();
EQL3_QuestWatchFrame:SetPoint(QuestlogOptions[EQL3_Player].LockPoints.corner,"UIParent","BOTTOMLEFT",QuestlogOptions[EQL3_Player].LockPoints.pointone,QuestlogOptions[EQL3_Player].LockPoints.pointtwo);
end
end
end
-- EQL3_QuestWatchFrame = QuestWatchFrame;
-- Functions
function EQL3_FadeColors(tempColor, tempColor2, done, obj)
local color = {r=0, g=0, b=0};
local multiplier;
multiplier = (done / obj);
color.r = tempColor.r + ((tempColor2.r - tempColor.r)*multiplier);
color.g = tempColor.g + ((tempColor2.g - tempColor.g)*multiplier);
color.b = tempColor.b + ((tempColor2.b - tempColor.b)*multiplier);
return color;
end
-- Old QuestRacking
local Original_RemoveQuestWatch = RemoveQuestWatch;
local Original_IsQuestWatched = IsQuestWatched;
local Original_GetNumQuestWatches = GetNumQuestWatches;
local Original_AddQuestWatch = AddQuestWatch;
local Original_GetQuestIndexForWatch = GetQuestIndexForWatch;
function SortWatchedQuests()
if (QuestlogOptions[EQL3_Player].ShowZonesInTracker == 1) then
table.sort(QuestlogOptions[EQL3_Player].QuestWatches);
else
if(QuestlogOptions[EQL3_Player].SortTrackerItems == 1) then
-- Make theese sort on title rather than zone+level+title
table.sort(QuestlogOptions[EQL3_Player].QuestWatches, SortCompare);
end
end
end
function SortCompare(first, second)
local temp = string.gsub(first, ".+,%d+,[%[%d+%+*%]]*", "");
local temp2 = string.gsub(second, ".+,%d+,[%[%d+%+*%]]*", "");
if(temp < temp2) then
return true;
end
return false;
end
-- QuestlogOptions.QuestWatches
function EQL3_AddQuestWatch(questIndex)
local questName, level = GetQuestLogTitle(questIndex);
local questLogHeader, tempId;
isHeader = false;
tempId = questIndex;
while (not isHeader) do
questLogHeader, _, _, isHeader = GetQuestLogTitle(tempId);
tempId = tempId-1;
end
table.insert(QuestlogOptions[EQL3_Player].QuestWatches, questLogHeader..","..level..","..questName);
SortWatchedQuests();
MagageTrackedQuests();
end
function EQL3_RemoveQuestWatch(questIndex)
local questName, level = GetQuestLogTitle(questIndex);
local questLogHeader, isHeader, tempId;
isHeader = false;
tempId = questIndex;
while (not isHeader) do
questLogHeader, _, _, isHeader = GetQuestLogTitle(tempId);
tempId = tempId-1;
end
local temp = questLogHeader..","..level..","..questName;
if(table.getn(QuestlogOptions[EQL3_Player].QuestWatches) > 0) then
for i=1, table.getn(QuestlogOptions[EQL3_Player].QuestWatches) do
if (QuestlogOptions[EQL3_Player].QuestWatches[i] == temp) then
table.remove(QuestlogOptions[EQL3_Player].QuestWatches , i);
break;
end
end
end
SortWatchedQuests();
MagageTrackedQuests();
end
function EQL3_IsQuestWatched(questIndex)
local questName, level = GetQuestLogTitle(questIndex);
local questLogHeader, isHeader, tempId;
isHeader = false;
tempId = questIndex;
while (not isHeader and tempId > 0) do
questLogHeader, _, _, isHeader = GetQuestLogTitle(tempId);
tempId = tempId-1;
-- if(tempId <= 0) then
-- questLogHeader, _, _, isHeader = GetQuestLogTitle(1);
-- break;
-- end
end
local temp = questLogHeader..","..level..","..questName;
if(table.getn(QuestlogOptions[EQL3_Player].QuestWatches) > 0) then
for i=1, table.getn(QuestlogOptions[EQL3_Player].QuestWatches) do
if (QuestlogOptions[EQL3_Player].QuestWatches[i] == temp) then
return true;
end
end
end
return false;
end
function GetNumQuestWatches()
return table.getn(QuestlogOptions[EQL3_Player].QuestWatches);
end
function EQL3_GetQuestIndexForWatch(id)
local numEntries = GetNumQuestLogEntries();
local questLogTitleText, level;
local questLogHeader, isHeader, tempId;
local questFound = false;
local temp, currentHeader=nil;
for i=1, numEntries, 1 do
questLogTitleText, level, _, isHeader, _ = GetQuestLogTitle(i);
if (isHeader) then
currentHeader = questLogTitleText;
else
temp = currentHeader..","..level..","..questLogTitleText;
if ( temp == QuestlogOptions[EQL3_Player].QuestWatches[id] ) then
return i;
end
end
end
return 0;
end
function GetQuestHeaderForWatch(questIndex)
if(QuestlogOptions[EQL3_Player].QuestWatches[questIndex]) then
local numEntries = GetNumQuestLogEntries();
local questLogHeader, isCollapsed;
local s = QuestlogOptions[EQL3_Player].QuestWatches[questIndex];
local temp=nil;
for w in string.gfind(s, "[^,]+") do
if(temp == nil) then
temp = w;
break;
end
end
for i=1, numEntries, 1 do
questLogHeader, _, _, _, isCollapsed = GetQuestLogTitle(i);
if(questLogHeader == temp) then
return questLogHeader, isCollapsed;
end
end
return temp, true;
end
return "", false;
end
function MagageTrackedQuests()
EQL3_Temp.QuestList = {};
QuestlogOptions[EQL3_Player].HeaderList = {};
local tempHeaderList = {};
local numEntries = GetNumQuestLogEntries();
local questLogTitleText, level, questTag, isHeader, isCollapsed, isComplete;
local currentHeader = nil;
local temp;
-- Make Header List
for j=numEntries, 1, -1 do
questLogTitleText, _, _, isHeader, isCollapsed = GetQuestLogTitle(j);
if (isHeader and isCollapsed) then
tempHeaderList[j] = 1;
table.insert(QuestlogOptions[EQL3_Player].HeaderList, questLogTitleText);
ExpandQuestHeader(j);
else
tempHeaderList[j] = 0;
end
end
-- Make quest list
local numEntries2 = GetNumQuestLogEntries();
for j=1, numEntries2, 1 do
questLogTitleText, level, questTag, isHeader, isCollapsed, isComplete = GetQuestLogTitle(j);
if (isHeader) then
currentHeader = questLogTitleText;
else
temp = currentHeader..","..level..","..questLogTitleText;
table.insert(EQL3_Temp.QuestList, temp);
if (EQL3_Temp.AddTrack and EQL3_Temp.AddTrack == questLogTitleText) then
table.insert(QuestlogOptions[EQL3_Player].QuestWatches, temp);
EQL3_Temp.AddTrack = nil;
end
-- If complete, remove it from the tracker...
if (QuestlogOptions[EQL3_Player].RemoveFinished == 1 and isComplete) then
for x=1, table.getn(QuestlogOptions[EQL3_Player].QuestWatches) do
if (QuestlogOptions[EQL3_Player].QuestWatches[x] == temp) then
table.remove(QuestlogOptions[EQL3_Player].QuestWatches , x);
break;
end
end
end
end
end
-- Clear Header List
for j=1, numEntries, 1 do
if(tempHeaderList[j] == 1) then
CollapseQuestHeader(j);
end
end
-- Compare all tracked items to list
local numWatches = table.getn(QuestlogOptions[EQL3_Player].QuestWatches);
local numEntries = table.getn(EQL3_Temp.QuestList);
local found = false;
for i=numWatches, 1, -1 do
found = false;
for j=0, numEntries, 1 do
if (QuestlogOptions[EQL3_Player].QuestWatches[i] == EQL3_Temp.QuestList[j]) then
found = true;
break;
end
end
if(not found) then
table.remove(QuestlogOptions[EQL3_Player].QuestWatches, i);
end
end
SortWatchedQuests();
end
function EQL3_ClearTracker()
QuestlogOptions[EQL3_Player].QuestWatches = {};
end
function QuestWatchFrame_LockCornerForGrowth()
local Left = EQL3_QuestWatchFrame:GetLeft();
local Right = EQL3_QuestWatchFrame:GetRight();
local Top = EQL3_QuestWatchFrame:GetTop();
local Bottom = EQL3_QuestWatchFrame:GetBottom();
local lock;
local pointone;
local pointtwo;
local TOPBOTTOM_MEDIAN = 384;
local LEFTRIGHT_MEDIAN = 512;
if (Left and Right and Top and Bottom) then
if (Bottom < TOPBOTTOM_MEDIAN and Top > TOPBOTTOM_MEDIAN) then
local topcross = Top - TOPBOTTOM_MEDIAN;
local bottomcross = TOPBOTTOM_MEDIAN - Bottom;
if (bottomcross > topcross) then
lock = "BOTTOM";
pointtwo = Bottom;
else
lock = "TOP";
pointtwo = Top;
end
elseif (Top > TOPBOTTOM_MEDIAN) then
lock = "TOP";
pointtwo = Top;
elseif (Bottom < TOPBOTTOM_MEDIAN) then
lock = "BOTTOM";
pointtwo = Bottom;
end
if (Left < LEFTRIGHT_MEDIAN and Right > LEFTRIGHT_MEDIAN) then
local leftcross = LEFTRIGHT_MEDIAN - Left;
local rightcross = Right - LEFTRIGHT_MEDIAN;
if (rightcross > leftcross) then
lock = lock.."RIGHT";
pointone = Right;
else
lock = lock.."LEFT";
pointone = Left;
end
elseif (Left < LEFTRIGHT_MEDIAN) then
lock = lock.."LEFT";
pointone = Left;
elseif (Right > LEFTRIGHT_MEDIAN) then
lock = lock.."RIGHT";
pointone = Right;
end
if (lock and lock ~= "" and pointone and pointtwo) then
EQL3_QuestWatchFrame:ClearAllPoints();
EQL3_QuestWatchFrame:SetPoint(lock,"UIParent","BOTTOMLEFT",pointone,pointtwo);
QuestlogOptions[EQL3_Player].LockPoints = {};
QuestlogOptions[EQL3_Player].LockPoints.corner = lock;
QuestlogOptions[EQL3_Player].LockPoints.pointone = pointone;
QuestlogOptions[EQL3_Player].LockPoints.pointtwo = pointtwo;
elseif (QuestlogOptions[EQL3_Player].LockPoints and
QuestlogOptions[EQL3_Player].LockPoints.corner and
QuestlogOptions[EQL3_Player].LockPoints.pointone and
QuestlogOptions[EQL3_Player].LockPoints.pointtwo) then
EQL3_QuestWatchFrame:ClearAllPoints();
EQL3_QuestWatchFrame:SetPoint(QuestlogOptions[EQL3_Player].LockPoints.corner,"UIParent","BOTTOMLEFT",QuestlogOptions[EQL3_Player].LockPoints.pointone,QuestlogOptions[EQL3_Player].LockPoints.pointtwo);
end
end
end
function FindAndAddQuestToTracker(theObjective)
local oldSelection = GetQuestLogSelection();
local questID;
local numEntries = GetNumQuestLogEntries();
local questTitle;
local numObjectives;
-- local tempHeaderList = {};
local numEntries2 = GetNumQuestLogEntries();
local questLogTitleText, level, questTag, isHeader, isCollapsed, isComplete;
local text, typ, finished;
--[[ Make Header List
for j=numEntries2, 1, -1 do
_, _, _, isHeader, isCollapsed = GetQuestLogTitle(j);
if (isHeader and isCollapsed) then
tempHeaderList[j] = 1;
ExpandQuestHeader(j);
else
tempHeaderList[j] = 0;
end
end ]]--
-- Find that quest!
local found = false;
for i=1, numEntries, 1 do
questID = i;
questTitle, _, _, isHeader = GetQuestLogTitle(questID);
if (not isHeader) then
SelectQuestLogEntry(questID);
if(questTitle and not IsQuestWatched(questID)) then
numObjectives = GetNumQuestLeaderBoards();
if(numObjectives > 0) then
for j=1, numObjectives, 1 do
text, typ, finished = GetQuestLogLeaderBoard(j);
if(not text or strlen(text) == 0) then
text = typ;
end
text = string.gsub(text, " %d+/%d+", "");
text = string.gsub(text, " "..EQL_COMPLETE, "");
if(theObjective == text) then
EQL3_Temp.AddTrack = questTitle;
found = true;
end
if(found) then
break;
end
end
end
end
end
if(found) then
break;
end
end
--[[ Clear Header List
for j=1, numEntries2, 1 do
if(tempHeaderList[j] == 1) then
CollapseQuestHeader(j);
end
end ]]--
SelectQuestLogEntry(oldSelection);
MagageTrackedQuests();
end
function QuestWatch_SetMinimized()
if ( GetNumQuestWatches() == 0 ) then
EQL3_QuestWatchFrame:Hide();
return;
end
for i=2, MAX_QUESTWATCH_LINES, 1 do
getglobal("EQL3_QuestWatchLine"..i):Hide();
end
EQL3_QuestWatchLine1:SetText(EQL3_QUEST_TRACKER.." ("..GetNumQuestWatches()..")");
EQL3_QuestWatchLine1:SetTextColor(1.0, 0.82, 0.0);
EQL3_QuestWatchFrame:Show();
EQL3_QuestWatchFrame:SetHeight(QuestlogOptions[EQL3_Player].TrackerFontHeight+1 + 22);
EQL3_QuestWatchFrame:SetWidth(EQL3_QuestWatchLine1:GetWidth()+36);
QuestWatchFrameBackdrop:SetPoint("TOPLEFT", "EQL3_QuestWatchFrame", "TOPLEFT", -8, -4);
-- UIParent_ManageFramePositions();
if (QuestlogOptions[EQL3_Player].LockPoints and
QuestlogOptions[EQL3_Player].LockPoints.corner and
QuestlogOptions[EQL3_Player].LockPoints.pointone and
QuestlogOptions[EQL3_Player].LockPoints.pointtwo) then
EQL3_QuestWatchFrame:ClearAllPoints();
EQL3_QuestWatchFrame:SetPoint(QuestlogOptions[EQL3_Player].LockPoints.corner,"UIParent","BOTTOMLEFT",QuestlogOptions[EQL3_Player].LockPoints.pointone,QuestlogOptions[EQL3_Player].LockPoints.pointtwo);
end
end