-------------------------------------------------------------------------- -- TitanQuestsUtils.lua -------------------------------------------------------------------------- --[[ Contains various utility functions for Titan [Quests]. ]]-- -- -- utility function to get the string tag for a quest -- function TitanPanelQuests_GetQuestTagText(questID) local useTag = ""; local Title, Level, Tag, isHeader, isCollapsed, isComplete = GetQuestLogTitle(questID); -- Loc Note: Need to localize these tags - Ryessa if ( Tag == ELITE ) then useTag = "+" elseif ( Tag == TITAN_QUESTS_DUNGEON ) then useTag = "d"; elseif ( Tag == TITAN_QUESTS_RAID ) then useTag = "r"; elseif ( Tag == TITAN_QUESTS_PVP ) then useTag = "p"; else useTag = ""; end if ( isComplete ) then --useTag = "C"; end return useTag; end -- -- utility function to get the string tag for a watched quest -- function TitanPanelQuests_GetQuestWatchText(questID) local questWatched; if ( IsQuestWatched(questID) ) then -- Loc Note: Need to localize this tag - Ryessa questWatched = TitanPanelQuests_BlueText(" (W)"); else questWatched = ""; end return questWatched; end -- -- utility function to get the string tag for a completed quest -- function TitanPanelQuests_GetQuestCompleteText(questID) local completeTag; local Title, Level, Tag, isHeader, isCollapsed, isComplete = GetQuestLogTitle(questID); if ( isComplete ) then completeTag = " ("..COMPLETE..")"; else completeTag = ""; end SelectQuestLogEntry(questID); if ( IsCurrentQuestFailed() ) then completeTag = " ("..TEXT(FAILED)..")"; end return completeTag; end -- -- utility function to get the location string for a quest -- function TitanPanelQuests_GetQuestLocationText(questID) local i; local questLocation = ""; local questlist = TitanPanelQuests_BuildQuestList(); local numQuests = table.getn(questlist); for i=1, numQuests do if ( questID == questlist[i].questID ) then questLocation = questlist[i].questLocation; break; end end if ( TitanGetVar(TITAN_QUESTS_ID, "SortByLocation") and TitanGetVar(TITAN_QUESTS_ID, "GroupBehavior") ) then return ""; else return TitanUtils_GetNormalText(" ["..questLocation.."]"); end end -- -- utility function to get the string tag for a watched quest -- function TitanPanelQuests_GetQuestText(questID) local Title, Level, Tag, isHeader, isCollapsed, isComplete = GetQuestLogTitle(questID); local questTag; local locationTag = TitanPanelQuests_GetQuestLocationText(questID); questTag = TitanUtils_GetColoredText("["..Level..TitanPanelQuests_GetQuestTagText(questID).."] ",GetDifficultyColor(Level))..Title..TitanUtils_GetRedText(TitanPanelQuests_GetQuestCompleteText(questID))..locationTag..TitanPanelQuests_GetQuestWatchText(questID); return questTag; end -- -- IsWatchAllowed -- function TitanPanelQuests_IsWatchAllowed(questID) if ( GetNumQuestLeaderBoards(questID) == 0 ) then -- Set an error that there are no objectives for the quest, so it may not be watched. UIErrorsFrame:AddMessage(QUEST_WATCH_NO_OBJECTIVES, 1.0, 0.1, 0.1, 1.0, UIERRORS_HOLD_TIME); return false; end if ( GetNumQuestWatches() >= MAX_WATCHABLE_QUESTS ) then -- Set an error message if trying to show too many quests UIErrorsFrame:AddMessage(format(QUEST_WATCH_TOO_MANY, MAX_WATCHABLE_QUESTS), 1.0, 0.1, 0.1, 1.0, UIERRORS_HOLD_TIME); return false; end -- Retrieve the quest info for questID. local Title, Level, Tag, isHeader, isCollapsed, isComplete; Title, Level, Tag, isHeader, isCollapsed, isComplete = GetQuestLogTitle(questID); if ( isComplete ) then -- We can't watch a complete item. return false; end return true; end -- -- build quest list (returns table of current active quests) -- function TitanPanelQuests_BuildQuestList() local NumEntries, NumQuests; local Title, Level, Tag, isHeader, isCollapsed, isComplete; local questIndex; local Location; local useTag; local completeTag; local questWatched = ""; local diff; local QuestList = { }; NumEntries, NumQuests = GetNumQuestLogEntries(); for questIndex=1, NumEntries do Title, Level, Tag, isHeader, isCollapsed, isComplete = GetQuestLogTitle(questIndex); if ( Level == 0 ) then Location = Title; else local entry = { questID = questIndex, questTitle = Title, questLevel = Level, questTag = Tag, questisHeader = isHeader, questisComplete = isComplete, questLocation = Location }; table.insert(QuestList, entry); end end return QuestList; end -- -- debug -- function TitanPanelQuests_DisplayTheList(thelist) local i = 0; for i=1, table.getn(thelist) do TitanPanelQuests_ChatPrint(i..":"..thelist[i].questLevel..":"..thelist[i].questTitle..":"..thelist[i].questLocation..":"..thelist[i].questID.."\n"); end end -- -- blue text -- function TitanPanelQuests_BlueText(text) if (text) then local redColorCode = format("%02x", 0); local greenColorCode = format("%02x", 0); local blueColorCode = format("%02x", 255); local colorCode = "|cff"..redColorCode..greenColorCode..blueColorCode; return colorCode..text..FONT_COLOR_CODE_CLOSE; end end -- -- debug -- function TitanPanelQuests_ChatPrint(msg) DEFAULT_CHAT_FRAME:AddMessage(msg); end