Files
Questie-X/Modules/Journey/QuestieJourneyPrivates.lua

122 lines
3.5 KiB
Lua

---@type QuestieJourney
local QuestieJourney = QuestieLoader:CreateModule("QuestieJourney")
local _QuestieJourney = QuestieJourney.private
-------------------------
--Import modules.
-------------------------
---@type QuestieSearchResults
local QuestieSearchResults = QuestieLoader:ImportModule("QuestieSearchResults")
---@type QuestieDB
local QuestieDB = QuestieLoader:ImportModule("QuestieDB")
---@type l10n
local l10n = QuestieLoader:ImportModule("l10n")
_QuestieJourney.containerCache = nil
_QuestieJourney.treeCache = nil
function _QuestieJourney:ShowJourneyTooltip()
if GameTooltip:IsShown() then
return
end
local button = self -- ACE is doing something stupid here. Don't add "self" as parameter, when you use it as "_QuestieJourney.ShowJourneyTooltip" as callback
local qid = button:GetUserData('id')
local quest = QuestieDB.GetQuest(tonumber(qid))
if quest then
GameTooltip:SetOwner(_G["QuestieJourneyFrame"].frame:GetParent(), "ANCHOR_CURSOR")
GameTooltip:AddLine("[".. quest.level .."] ".. quest.name)
GameTooltip:AddLine("|cFFFFFFFF" .. _QuestieJourney:CreateObjectiveText(quest.Description))
GameTooltip:SetFrameStrata("TOOLTIP")
GameTooltip:Show()
end
end
function _QuestieJourney:HideJourneyTooltip()
if GameTooltip:IsShown() then
GameTooltip:Hide()
end
end
function _QuestieJourney:CreateObjectiveText(desc)
local objText = ""
if desc then
if type(desc) == "table" then
for _, v in ipairs(desc) do
objText = objText .. v .. "\n"
end
else
objText = objText .. tostring(desc) .. "\n"
end
else
objText = Questie:Colorize(l10n('This quest is an automatic completion quest and does not contain an objective.'), 'yellow')
end
return objText
end
function _QuestieJourney:HandleTabChange(container, group)
if not container then return end
if not _QuestieJourney.containerCache then
_QuestieJourney.containerCache = container
end
container:ReleaseChildren()
if group == "journey" then
local treeGroup = _QuestieJourney.myJourney:DrawTab(container)
_QuestieJourney.myJourney:ManageTree(treeGroup)
_QuestieJourney.lastOpenWindow = "journey"
return treeGroup
elseif group == "zone" then
_QuestieJourney.questsByZone:DrawTab(container)
_QuestieJourney.lastOpenWindow = "zone"
return nil
elseif group == "search" then
QuestieSearchResults:DrawSearchTab(container)
_QuestieJourney.lastOpenWindow = "search"
return nil
end
end
function _QuestieJourney:GetLevelDifficultyRanges(questLevel, questMinLevel)
local red, orange, yellow, green, gray
-- Calculate Base Values
red = questMinLevel
orange = questLevel - 4
yellow = questLevel - 2
green = questLevel + 3
-- Gray Level based on level range.
if (questLevel <= 13) then
gray = questLevel + 6
elseif (questLevel <= 39) then
gray = (questLevel + math.ceil(questLevel / 10) + 5)
else
gray = (questLevel + math.ceil(questLevel / 5) + 1)
end
-- Double check for negative values
if yellow <= 0 then
yellow = questMinLevel
end
if orange < questMinLevel then
orange = questMinLevel
end
if orange == yellow then
orange = nil
end
if red == orange or not orange then
red = nil
end
return red, orange, yellow, green, gray
end