v9.7.2: Ebonhold Database integration and core logic refinements
This commit is contained in:
@@ -0,0 +1,967 @@
|
||||
-------------------------
|
||||
--Import modules.
|
||||
-------------------------
|
||||
---@type QuestieOptions
|
||||
local QuestieOptions = QuestieLoader:ImportModule("QuestieOptions")
|
||||
---@type QuestieOptionsUtils
|
||||
local QuestieOptionsUtils = QuestieLoader:ImportModule("QuestieOptionsUtils")
|
||||
---@type QuestieTracker
|
||||
local QuestieTracker = QuestieLoader:ImportModule("QuestieTracker")
|
||||
---@type TrackerBaseFrame
|
||||
local TrackerBaseFrame = QuestieLoader:ImportModule("TrackerBaseFrame")
|
||||
---@type TrackerLinePool
|
||||
local TrackerLinePool = QuestieLoader:ImportModule("TrackerLinePool")
|
||||
---@type TrackerQuestTimers
|
||||
local TrackerQuestTimers = QuestieLoader:ImportModule("TrackerQuestTimers")
|
||||
---@type QuestieArrow
|
||||
local QuestieArrow = QuestieLoader:ImportModule("QuestieArrow")
|
||||
|
||||
---@type l10n
|
||||
local l10n = QuestieLoader:ImportModule("l10n")
|
||||
|
||||
--- COMPATIBILITY ---
|
||||
local C_Timer = QuestieCompat.C_Timer
|
||||
|
||||
QuestieOptions.tabs.tracker = { ... }
|
||||
|
||||
local _GetShortcuts
|
||||
local trackerOptions = {}
|
||||
|
||||
local SharedMedia = LibStub("LibSharedMedia-3.0")
|
||||
|
||||
function QuestieOptions.tabs.tracker:Initialize()
|
||||
trackerOptions = {
|
||||
name = function() return l10n('Tracker') end,
|
||||
type = "group",
|
||||
order = 3,
|
||||
args = {
|
||||
header = {
|
||||
type = "header",
|
||||
order = 1,
|
||||
name = function() return l10n('Tracker Options') end,
|
||||
},
|
||||
enableQuestieTracker = {
|
||||
type = "toggle",
|
||||
order = 2,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Enable Tracker') end,
|
||||
desc = function() return l10n("Enabling the Tracker will replace the default Blizzard Quest Tracker with the Questie Tracker.\n\nNOTE: Changing this setting will reload the UI.") end,
|
||||
disabled = function() return InCombatLockdown() end,
|
||||
get = function() return Questie.db.profile.trackerEnabled end,
|
||||
set = function()
|
||||
if Questie.db.profile.trackerEnabled then
|
||||
QuestieTracker:Disable()
|
||||
else
|
||||
QuestieTracker:Enable()
|
||||
end
|
||||
end
|
||||
},
|
||||
arrowEnabled = {
|
||||
type = "toggle",
|
||||
order = 2.5,
|
||||
width = 1.5,
|
||||
name = function() return "Enable Arrow"; end,
|
||||
desc = function() return "Show the QuestieArrow and auto-track the nearest objective/turn-in."; end,
|
||||
get = function() return Questie.db.profile.arrowEnabled ~= false; end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.arrowEnabled = value
|
||||
if QuestieArrow and QuestieArrow.Refresh then
|
||||
if not value and QuestieArrow.ClearTarget then
|
||||
QuestieArrow:ClearTarget()
|
||||
end
|
||||
QuestieArrow:Refresh()
|
||||
end
|
||||
end,
|
||||
},
|
||||
Space_X = QuestieOptionsUtils:HorizontalSpacer(3, 0.1),
|
||||
resetTrackerLocation = {
|
||||
type = "execute",
|
||||
order = 4,
|
||||
width = 0.8,
|
||||
name = function() return l10n('Reset Tracker') end,
|
||||
desc = function() return l10n("If the Questie Tracker is stuck offscreen or lost, you can reset it's location to the center of the screen with this button.") end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled or InCombatLockdown() end,
|
||||
func = function()
|
||||
QuestieTracker:ResetLocation()
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
Spacer_S = QuestieOptionsUtils:Spacer(5),
|
||||
group_quests = {
|
||||
type = "group",
|
||||
order = 6,
|
||||
inline = true,
|
||||
width = 0.5,
|
||||
name = function()
|
||||
if Questie.IsWotlk then
|
||||
return l10n("Quest and Achievement Options")
|
||||
else
|
||||
return l10n('Quest Options')
|
||||
end
|
||||
end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
args = {
|
||||
autoTrackQuests = {
|
||||
type = "toggle",
|
||||
order = 1,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Auto Track Quests') end,
|
||||
desc = function() return l10n("This is the same as 'Enable Automatic Quest Tracking' in the Blizzard Interface Options. When enabled, the Questie Tracker will automatically track all Quests in your Quest Log. Disabling this option will untrack all Quests. You will have to manually select which Quests to track.\n\nNOTE: 'Show Complete Quests' is disabled while this option is not being used.") end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.autoTrackQuests end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.autoTrackQuests = value
|
||||
if value then
|
||||
Questie.db.char.TrackedQuests = {}
|
||||
else
|
||||
Questie.db.char.AutoUntrackedQuests = {}
|
||||
end
|
||||
|
||||
-- Update Quest Log and mark tracked Quests
|
||||
local questLogFrame = QuestLogExFrame or ClassicQuestLog or QuestLogFrame
|
||||
if questLogFrame:IsShown() then
|
||||
QuestLog_Update()
|
||||
end
|
||||
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
showQuestLevels = {
|
||||
type = "toggle",
|
||||
order = 2,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Show Quest Level') end,
|
||||
desc = function() return l10n('When this is checked, the Quest Level Tags for Quest Titles will show in the Questie Tracker.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerShowQuestLevel end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerShowQuestLevel = value
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
showQuestTimer = {
|
||||
type = "toggle",
|
||||
order = 3,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Show Blizzard Timer') end,
|
||||
desc = function() return l10n('When this is checked, the default Blizzard Timer Frame for Quests will be shown instead of being embedded inside the Questie Tracker.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.showBlizzardQuestTimer end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.showBlizzardQuestTimer = value
|
||||
|
||||
if value == true then
|
||||
TrackerQuestTimers:ShowBlizzardTimer()
|
||||
else
|
||||
TrackerQuestTimers:HideBlizzardTimer()
|
||||
end
|
||||
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
listAchievementsFirst = {
|
||||
type = "toggle",
|
||||
order = 4,
|
||||
width = 1.5,
|
||||
name = function() return l10n("List Achievements First") end,
|
||||
desc = function() return l10n("When this is checked, the Questie Tracker will list Achievements first then Quests.") end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
hidden = function() return not (Questie.IsWotlk or QuestieCompat.Is335) end,
|
||||
get = function() return Questie.db.profile.listAchievementsFirst end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.listAchievementsFirst = value
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
Spacer_Dropdowns = QuestieOptionsUtils:Spacer(5),
|
||||
openQuestLog = {
|
||||
type = "select",
|
||||
order = 7,
|
||||
values = _GetShortcuts(),
|
||||
style = 'dropdown',
|
||||
name = function()
|
||||
if Questie.IsWotlk then
|
||||
return l10n('Show Quest / Achievement')
|
||||
else
|
||||
return l10n('Show in Quest Log')
|
||||
end
|
||||
end,
|
||||
desc = function()
|
||||
if Questie.IsWotlk then
|
||||
return l10n('This shortcut will open the Quest Log with the clicked Quest selected or open Achievements with the clicked Achievement selected.')
|
||||
else
|
||||
return l10n('This shortcut will open the Quest Log with the clicked Quest selected.')
|
||||
end
|
||||
end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerbindOpenQuestLog end,
|
||||
set = function(_, key)
|
||||
Questie.db.profile.trackerbindOpenQuestLog = key
|
||||
end
|
||||
},
|
||||
Space_Y = QuestieOptionsUtils:HorizontalSpacer(7.1, 0.1),
|
||||
untrackQuest = {
|
||||
type = "select",
|
||||
order = 8,
|
||||
values = _GetShortcuts(),
|
||||
style = 'dropdown',
|
||||
name = function()
|
||||
if Questie.IsWotlk then
|
||||
return l10n('Untrack / Link')
|
||||
else
|
||||
return l10n('Untrack / Link Quest')
|
||||
end
|
||||
end,
|
||||
desc = function()
|
||||
if Questie.IsWotlk then
|
||||
return l10n('This shortcut removes a Quest or an Achievement from the Questie Tracker when the chat input box is NOT visible, otherwise this will link a Quest or an Achievement to chat.')
|
||||
else
|
||||
return l10n('This shortcut removes a Quest from the Questie Tracker when the chat input box is NOT visible, otherwise this will link a Quest to chat.')
|
||||
end
|
||||
end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerbindUntrack end,
|
||||
set = function(_, key)
|
||||
Questie.db.profile.trackerbindUntrack = key
|
||||
end
|
||||
},
|
||||
Spacer_Sliders = QuestieOptionsUtils:Spacer(9),
|
||||
questPadding = {
|
||||
type = "range",
|
||||
order = 10,
|
||||
name = function() return l10n('Padding Between Quests') end,
|
||||
desc = function() return l10n('The amount of padding between Quests in the Questie Tracker.\n\nNOTE: Changing this setting while in Sizer Manual Mode will reset the Sizer back to Auto Mode') end,
|
||||
width = 3,
|
||||
min = 2,
|
||||
max = 15,
|
||||
step = 1,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerQuestPadding end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerQuestPadding = value
|
||||
local trackerHeightByManual = Questie.db.profile.TrackerHeight
|
||||
if IsMouseButtonDown("LeftButton") and trackerHeightByManual == 0 then
|
||||
QuestieTracker:Update()
|
||||
elseif IsMouseButtonDown("LeftButton") and trackerHeightByManual > 0 then
|
||||
Questie.db.profile.TrackerWidth = 0
|
||||
Questie.db.profile.TrackerHeight = 0
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
end
|
||||
},
|
||||
group_tracker = {
|
||||
type = "group",
|
||||
order = 11,
|
||||
inline = true,
|
||||
width = 0.5,
|
||||
name = function() return l10n('Objectives'); end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
args = {
|
||||
showCompleteQuests = {
|
||||
type = "toggle",
|
||||
order = 1,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Show Completed Quests') end,
|
||||
desc = function() return l10n("When this is checked, completed Quests will show in the Questie Tracker.\n\nNOTE: This setting only works when 'Auto Track Quests' is enabled.") end,
|
||||
disabled = function() return (not Questie.db.profile.trackerEnabled) or (not Questie.db.profile.autoTrackQuests) end,
|
||||
get = function() return Questie.db.profile.trackerShowCompleteQuests end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerShowCompleteQuests = value
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
collapseCompletedQuests = {
|
||||
type = "toggle",
|
||||
order = 2,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Auto Minimize Completed Quests') end,
|
||||
desc = function() return l10n('When this is checked, completed Quests will automatically minimize.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.collapseCompletedQuests end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.collapseCompletedQuests = value
|
||||
if Questie.db.profile.collapseCompletedQuests == false then
|
||||
Questie.db.char.collapsedQuests = {}
|
||||
end
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
hideCompletedQuestObjectives = {
|
||||
type = "toggle",
|
||||
order = 3,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Hide Completed Quest Objectives') end,
|
||||
desc = function() return l10n('When this is checked, completed Quest Objectives will automatically be removed from the Questie Tracker.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.hideCompletedQuestObjectives end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.hideCompletedQuestObjectives = value
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
hideCompletedAchieveObjectives = {
|
||||
type = "toggle",
|
||||
order = 4,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Hide Completed Achieve Objectives') end,
|
||||
desc = function() return l10n('When this is checked, completed Achievement Objectives will automatically be removed from the Questie Tracker.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
hidden = function() return not Questie.IsWotlk end,
|
||||
get = function() return Questie.db.profile.hideCompletedAchieveObjectives end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.hideCompletedAchieveObjectives = value
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
Spacer_X = QuestieOptionsUtils:Spacer(5),
|
||||
colorObjectives = {
|
||||
type = "select",
|
||||
order = 6,
|
||||
values = function()
|
||||
return {
|
||||
['white'] = l10n('White'),
|
||||
['whiteToGreen'] = l10n('White to Green'),
|
||||
['whiteAndGreen'] = l10n('White and Green'),
|
||||
['redToGreen'] = l10n('Red to Green'),
|
||||
['minimal'] = l10n('Minimalistic')
|
||||
}
|
||||
end,
|
||||
style = 'dropdown',
|
||||
name = function() return l10n('Objective Color') end,
|
||||
desc = function() return l10n('Change the color of Objectives in the Questie Tracker by how complete they are.\n\nNOTE: The Minimalistic option will not display the "Blizzard Completion Text" and just label the Quest as either "Quest Complete!" or "Quest Failed!".') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerColorObjectives end,
|
||||
set = function(_, key)
|
||||
Questie.db.profile.trackerColorObjectives = key
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
Space_Y = QuestieOptionsUtils:HorizontalSpacer(7, 0.1),
|
||||
hideBlizzardCompletionText = {
|
||||
type = "toggle",
|
||||
order = 8,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Hide Blizzard Completion Text') end,
|
||||
desc = function() return l10n('When this is checked, Blizzard Completion Text will be hidden for completed Quests and instead show the old Questie tags: "Quest Complete!" or "Quest Failed!"') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled or Questie.db.profile.trackerColorObjectives == "minimal" end,
|
||||
get = function() return Questie.db.profile.hideBlizzardCompletionText end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.hideBlizzardCompletionText = value
|
||||
if Questie.db.profile.hideBlizzardCompletionText == false then
|
||||
Questie.db.char.collapsedQuests = {}
|
||||
end
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
Spacer_Z = QuestieOptionsUtils:Spacer(9),
|
||||
sortObjectives = {
|
||||
type = "select",
|
||||
order = 10,
|
||||
values = function()
|
||||
return {
|
||||
['byComplete'] = l10n('By %% Complete'),
|
||||
['byCompleteReversed'] = l10n('By %% Complete (Reversed)'),
|
||||
['byLevel'] = l10n('By Level'),
|
||||
['byLevelReversed'] = l10n('By Level (Reversed)'),
|
||||
['byProximity'] = l10n('By Proximity'),
|
||||
['byProximityReversed'] = l10n('By Proximity (Reversed)'),
|
||||
['byZone'] = l10n('By Zone'),
|
||||
['byZonePlayerProximity'] = l10n('By Zone Prox'),
|
||||
['byZonePlayerProximityReversed'] = l10n('By Zone Prox (Reversed)'),
|
||||
}
|
||||
end,
|
||||
style = 'dropdown',
|
||||
name = function() return l10n('Objective Sorting') end,
|
||||
desc = function() return l10n('How Objectives are sorted in the Questie Tracker.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerSortObjectives end,
|
||||
set = function(_, key)
|
||||
Questie.db.profile.trackerSortObjectives = key
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
group_tracker = {
|
||||
type = "group",
|
||||
order = 7,
|
||||
inline = true,
|
||||
width = 0.5,
|
||||
name = function() return l10n('Tracker Window Options'); end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
args = {
|
||||
minimizeInCombat = {
|
||||
type = "toggle",
|
||||
order = 1,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Minimize In Combat') end,
|
||||
desc = function() return l10n('When this is checked, the Questie Tracker will automatically be minimized while entering combat.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.hideTrackerInCombat end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.hideTrackerInCombat = value
|
||||
end
|
||||
},
|
||||
minimizeInDungeons = {
|
||||
type = "toggle",
|
||||
order = 2,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Minimize In Dungeons') end,
|
||||
desc = function() return l10n('When this is checked, the Questie Tracker will automatically be minimized when entering a dungeon.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.hideTrackerInDungeons end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.hideTrackerInDungeons = value
|
||||
if value and IsInInstance() then
|
||||
QuestieTracker:Collapse()
|
||||
else
|
||||
QuestieTracker:Expand()
|
||||
end
|
||||
end
|
||||
},
|
||||
fadeMinMaxButtons = {
|
||||
type = "toggle",
|
||||
order = 3,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Fade Min/Max Buttons') end,
|
||||
desc = function() return l10n('When this is checked, the Minimize and Maximize Buttons will fade and become transparent when not in use.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerFadeMinMaxButtons end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerFadeMinMaxButtons = value
|
||||
if value == true then
|
||||
local fadeTicker
|
||||
local fadeTickerValue = 1
|
||||
fadeTicker = C_Timer.NewTicker(0.02, function()
|
||||
if fadeTickerValue <= 1 then
|
||||
fadeTickerValue = fadeTickerValue - 0.05
|
||||
|
||||
if fadeTickerValue < 0 then
|
||||
fadeTickerValue = 0
|
||||
fadeTicker:Cancel()
|
||||
end
|
||||
|
||||
if (Questie.db.char.isTrackerExpanded) then
|
||||
TrackerLinePool.SetAllExpandQuestAlpha(fadeTickerValue)
|
||||
end
|
||||
else
|
||||
fadeTickerValue:Cancel()
|
||||
TrackerLinePool.SetAllExpandQuestAlpha(0)
|
||||
end
|
||||
end)
|
||||
else
|
||||
TrackerLinePool.SetAllExpandQuestAlpha(1)
|
||||
end
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
fadeQuestItemButtons = {
|
||||
type = "toggle",
|
||||
order = 4,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Fade Quest Item Buttons') end,
|
||||
desc = function() return l10n('When this is checked, the Quest Item Buttons will fade and become transparent when not in use.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerFadeQuestItemButtons end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerFadeQuestItemButtons = value
|
||||
if value == true then
|
||||
local fadeTicker
|
||||
local fadeTickerValue = 1
|
||||
fadeTicker = C_Timer.NewTicker(0.02, function()
|
||||
if fadeTickerValue <= 1 then
|
||||
fadeTickerValue = fadeTickerValue - 0.05
|
||||
|
||||
if fadeTickerValue < 0 then
|
||||
fadeTickerValue = 0
|
||||
fadeTicker:Cancel()
|
||||
end
|
||||
|
||||
if (Questie.db.char.isTrackerExpanded) then
|
||||
TrackerLinePool.SetAllItemButtonAlpha(fadeTickerValue)
|
||||
end
|
||||
else
|
||||
fadeTickerValue:Cancel()
|
||||
TrackerLinePool.SetAllItemButtonAlpha(0)
|
||||
end
|
||||
end)
|
||||
else
|
||||
TrackerLinePool.SetAllItemButtonAlpha(1)
|
||||
end
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
hideSizer = {
|
||||
type = "toggle",
|
||||
order = 5,
|
||||
width = 1.5,
|
||||
name = function() return l10n("Hide Tracker Sizer") end,
|
||||
desc = function() return l10n("When this is checked, the Questie Tracker Sizer that appears in the bottom or top right hand corner will be hidden.") end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.sizerHidden end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.sizerHidden = value
|
||||
QuestieTracker:UpdateFormatting()
|
||||
end
|
||||
},
|
||||
lockTracker = {
|
||||
type = "toggle",
|
||||
order = 6,
|
||||
width = 1.5,
|
||||
name = function() return l10n("Lock Tracker") end,
|
||||
desc = function() return l10n("When this is checked, the Questie Tracker is locked and you need to hold CTRL when you want to move it.") end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerLocked end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerLocked = value
|
||||
TrackerBaseFrame:Update()
|
||||
end
|
||||
},
|
||||
stickyDurabilityFrame = {
|
||||
type = "toggle",
|
||||
order = 7,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Sticky Durability Frame') end,
|
||||
desc = function() return l10n('When this is checked, the durability frame will be placed on the left or right side of the Questie Tracker depending on where the Tracker is placed on your screen.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.stickyDurabilityFrame end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.stickyDurabilityFrame = value
|
||||
if value == false then
|
||||
QuestieTracker:ResetDurabilityFrame()
|
||||
end
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
stickyVoiceOverFrame = {
|
||||
type = "toggle",
|
||||
order = 8,
|
||||
width = 1.5,
|
||||
name = function() return l10n("Sticky VoiceOver Frame") end,
|
||||
desc = function() return l10n("When this is checked, the VoiceOver talking head / sound queue frame will be placed on the left or right side of the Questie Tracker depending on where the Tracker is placed on your screen.") end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
hidden = function() return not (IsAddOnLoaded("AI_VoiceOver") and IsAddOnLoaded("AI_VoiceOverData_Vanilla")) end,
|
||||
get = function() return Questie.db.profile.stickyVoiceOverFrame end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.stickyVoiceOverFrame = value
|
||||
if value == false then
|
||||
QuestieTracker:ResetVoiceOverFrame()
|
||||
end
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
Spacer_Dropdowns = QuestieOptionsUtils:Spacer(9),
|
||||
setTomTom = {
|
||||
type = "select",
|
||||
order = 10,
|
||||
values = _GetShortcuts(),
|
||||
style = 'dropdown',
|
||||
name = function() return l10n('Set |cFF54e33bTomTom|r Target') end,
|
||||
desc = function()
|
||||
if Questie.IsWotlk then
|
||||
return l10n('This shortcut will set the TomTom arrow to point to either an NPC or the first incomplete Quest Objective (if location data is available).\n\nNOTE: This will not work with Achievements.')
|
||||
else
|
||||
return l10n('This shortcut will set the TomTom arrow to point to either an NPC or the first incomplete Quest Objective (if location data is available).')
|
||||
end
|
||||
end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
hidden = function() return not IsAddOnLoaded("TomTom") end,
|
||||
get = function() return Questie.db.profile.trackerbindSetTomTom end,
|
||||
set = function(_, key)
|
||||
Questie.db.profile.trackerbindSetTomTom = key
|
||||
end
|
||||
},
|
||||
trackerSetpoint = {
|
||||
type = "select",
|
||||
order = 11,
|
||||
values = function()
|
||||
return {
|
||||
["TOPLEFT"] = l10n('Down & Right'),
|
||||
["BOTTOMLEFT"] = l10n('Up & Right'),
|
||||
["TOPRIGHT"] = l10n('Down & Left'),
|
||||
["BOTTOMRIGHT"] = l10n('Up & Left'),
|
||||
}
|
||||
end,
|
||||
style = 'dropdown',
|
||||
name = function() return l10n('Tracker Growth Direction') end,
|
||||
desc = function()
|
||||
return l10n("This determines the direction in which the Questie Tracker grows when you add or remove Quests. For example, if you use the 'Up & Right' option then the ideal place for the Tracker should be in the lower left-hand corner of your screen. This allows the 'Sizer Mode: Auto' to push the Tracker Height and Width 'Up & Right' so the Tracker doesn't inadvertently cover up elements of your UI.")
|
||||
end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerSetpoint end,
|
||||
set = function(_, key)
|
||||
Questie.db.profile.trackerSetpoint = key
|
||||
QuestieTracker:ResetLocation()
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
Spacer_Sliders = QuestieOptionsUtils:Spacer(12),
|
||||
trackerHeightRatio = {
|
||||
type = "range",
|
||||
order = 13,
|
||||
name = function() return l10n('Tracker Height Ratio') end,
|
||||
desc = function() return l10n('The height of the Questie Tracker based on percentage of usable screen height. A setting of 100 percent would make the Tracker fill the players entire screen height.\n\nNOTE: This setting only applies while in Sizer Mode: Auto') end,
|
||||
width = 3,
|
||||
min = 20,
|
||||
max = 100,
|
||||
step = 1,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerHeightRatio * 100 end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerHeightRatio = value / 100
|
||||
if IsMouseButtonDown("LeftButton") and Questie.db.profile.TrackerHeight == 0 then
|
||||
TrackerBaseFrame.isSizing = true
|
||||
Questie.db.profile.trackerBackdropEnabled = true
|
||||
Questie.db.profile.trackerBorderEnabled = true
|
||||
Questie.db.profile.trackerBackdropFader = false
|
||||
QuestieTracker:UpdateFormatting()
|
||||
else
|
||||
TrackerBaseFrame.isSizing = false
|
||||
Questie.db.profile.trackerBackdropEnabled = Questie.db.profile.currentBackdropEnabled
|
||||
Questie.db.profile.trackerBorderEnabled = Questie.db.profile.currentBorderEnabled
|
||||
Questie.db.profile.trackerBackdropFader = Questie.db.profile.currentBackdropFader
|
||||
QuestieTracker:UpdateFormatting()
|
||||
end
|
||||
end
|
||||
},
|
||||
group_header = {
|
||||
type = "group",
|
||||
order = 14,
|
||||
inline = true,
|
||||
width = 0.5,
|
||||
name = function() return l10n('Tracker Header') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
args = {
|
||||
enableHeader = {
|
||||
type = "toggle",
|
||||
order = 1,
|
||||
width = 1.5,
|
||||
name = function() return l10n("Enable Tracker Header") end,
|
||||
desc = function() return l10n("When this is enabled the Tracker Header with the number of active quests and the Questie Icon will be permanently visible.\n\nWhen this is disabled the Questie Icon will fade in while your mouse is over the Tracker.") end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerHeaderEnabled end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerHeaderEnabled = value
|
||||
QuestieTracker:UpdateFormatting()
|
||||
end
|
||||
},
|
||||
moveHeaderToBottom = {
|
||||
type = "toggle",
|
||||
order = 2,
|
||||
width = 1.5,
|
||||
name = function() return l10n("Show Tracker Header At The Bottom") end,
|
||||
desc = function() return l10n("When this is enabled the Tracker Header and/or the Questie Icon will be moved to the bottom of the Questie Tracker and the sizer to the top.") end,
|
||||
disabled = function() return (not Questie.db.profile.trackerEnabled) end,
|
||||
get = function() return Questie.db.profile.moveHeaderToBottom end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.moveHeaderToBottom = value
|
||||
QuestieTracker:UpdateFormatting()
|
||||
end
|
||||
},
|
||||
alwaysShowTracker = {
|
||||
type = "toggle",
|
||||
order = 3,
|
||||
width = 1.5,
|
||||
name = function() return l10n("Show Header For Empty Tracker") end,
|
||||
desc = function() return l10n("When this is enabled the Tracker Header will be visible even when no quests are being tracked versus the Tracker being hidden completely.") end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.alwaysShowTracker end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.alwaysShowTracker = value
|
||||
if (Questie.db.profile.alwaysShowTracker == true) and (Questie.db.char.isTrackerExpanded == false) then
|
||||
Questie.db.char.isTrackerExpanded = true
|
||||
end
|
||||
QuestieTracker:UpdateFormatting()
|
||||
end
|
||||
},
|
||||
},
|
||||
},
|
||||
group_background = {
|
||||
type = "group",
|
||||
order = 15,
|
||||
inline = true,
|
||||
width = 0.5,
|
||||
name = function() return l10n('Tracker Background') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
args = {
|
||||
enableBackground = {
|
||||
type = "toggle",
|
||||
order = 1,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Enable Background') end,
|
||||
desc = function() return l10n('When this is checked, the Questie Tracker Background becomes visible.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerBackdropEnabled end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerBackdropEnabled = value
|
||||
Questie.db.profile.currentBackdropEnabled = value
|
||||
|
||||
if value == true and not Questie.db.profile.trackerBackdropFader then
|
||||
TrackerBaseFrame.baseFrame:SetBackdropColor(0, 0, 0, Questie.db.profile.trackerBackdropAlpha)
|
||||
else
|
||||
TrackerBaseFrame.baseFrame:SetBackdropColor(0, 0, 0, 0)
|
||||
end
|
||||
QuestieTracker:UpdateFormatting()
|
||||
end
|
||||
},
|
||||
enableBorder = {
|
||||
type = "toggle",
|
||||
order = 2,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Enable Border') end,
|
||||
desc = function() return l10n('When this is checked, the Questie Tracker Border becomes visible.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled or not Questie.db.profile.trackerBackdropEnabled end,
|
||||
get = function() return Questie.db.profile.trackerBorderEnabled end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerBorderEnabled = value
|
||||
Questie.db.profile.currentBorderEnabled = value
|
||||
|
||||
if value == true and not Questie.db.profile.trackerBackdropFader then
|
||||
TrackerBaseFrame.baseFrame:SetBackdropBorderColor(1, 1, 1, Questie.db.profile.trackerBackdropAlpha)
|
||||
else
|
||||
TrackerBaseFrame.baseFrame:SetBackdropBorderColor(1, 1, 1, 0)
|
||||
end
|
||||
QuestieTracker:UpdateFormatting()
|
||||
end
|
||||
},
|
||||
fadeTrackerBackdrop = {
|
||||
type = "toggle",
|
||||
order = 3,
|
||||
width = 1.5,
|
||||
name = function() return l10n('Fade Background') end,
|
||||
desc = function() return l10n('When this is checked, the Questie Tracker Backdrop and Border (if enabled) will fade and become transparent when not in use.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled or not Questie.db.profile.trackerBackdropEnabled end,
|
||||
get = function() return Questie.db.profile.trackerBackdropFader end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerBackdropFader = value
|
||||
Questie.db.profile.currentBackdropFader = value
|
||||
|
||||
if value == true then
|
||||
local fadeTicker
|
||||
local fadeTickerValue = 1
|
||||
fadeTicker = C_Timer.NewTicker(0.02, function()
|
||||
if fadeTickerValue <= 1 then
|
||||
fadeTickerValue = fadeTickerValue - 0.05
|
||||
|
||||
if fadeTickerValue < 0 then
|
||||
fadeTickerValue = 0
|
||||
fadeTicker:Cancel()
|
||||
end
|
||||
|
||||
if Questie.db.char.isTrackerExpanded then
|
||||
TrackerBaseFrame.baseFrame:SetBackdropColor(0, 0, 0, fadeTickerValue)
|
||||
|
||||
if Questie.db.profile.trackerBorderEnabled then
|
||||
TrackerBaseFrame.baseFrame:SetBackdropBorderColor(1, 1, 1, fadeTickerValue)
|
||||
end
|
||||
end
|
||||
else
|
||||
fadeTickerValue:Cancel()
|
||||
end
|
||||
end)
|
||||
end
|
||||
QuestieTracker:UpdateFormatting()
|
||||
end
|
||||
},
|
||||
questBackdropAlpha = {
|
||||
type = "range",
|
||||
order = 4,
|
||||
name = function() return l10n('Tracker Backdrop Alpha') end,
|
||||
desc = function() return l10n('The alpha level of the Questie Trackers backdrop. A setting of 100 percent is fully visible.') end,
|
||||
width = 3,
|
||||
min = 0,
|
||||
max = 100,
|
||||
step = 5,
|
||||
disabled = function() return not Questie.db.profile.trackerBackdropEnabled or not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerBackdropAlpha * 100 end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerBackdropAlpha = value / 100
|
||||
QuestieTracker:UpdateFormatting()
|
||||
end
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
group_fonts = {
|
||||
type = "group",
|
||||
order = 8,
|
||||
inline = true,
|
||||
width = 0.5,
|
||||
name = function() return l10n('Font Options'); end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
args = {
|
||||
fontSizeHeader = {
|
||||
type = "range",
|
||||
order = 1,
|
||||
name = function() return l10n("Font Size for Active Quests Header") end,
|
||||
desc = function() return l10n("The font size used for the Active Quests Header.") end,
|
||||
width = "double",
|
||||
min = 8,
|
||||
max = 26,
|
||||
step = 1,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled or not Questie.db.profile.trackerHeaderEnabled end,
|
||||
get = function() return Questie.db.profile.trackerFontSizeHeader end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerFontSizeHeader = value
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
fontHeader = {
|
||||
type = "select",
|
||||
dialogControl = 'LSM30_Font',
|
||||
order = 2,
|
||||
values = SharedMedia:HashTable("font"),
|
||||
style = 'dropdown',
|
||||
name = function() return l10n("Font for Active Quests Header") end,
|
||||
desc = function() return l10n("The font used for the Active Quests Header.") end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled or not Questie.db.profile.trackerHeaderEnabled end,
|
||||
get = function() return Questie.db.profile.trackerFontHeader or "Friz Quadrata TT" end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerFontHeader = value
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
fontSizeZone = {
|
||||
type = "range",
|
||||
order = 3,
|
||||
name = function() return l10n('Font Size for Zone Names') end,
|
||||
desc = function() return l10n('The font size used for zone names.') end,
|
||||
width = "double",
|
||||
min = 8,
|
||||
max = 26,
|
||||
step = 1,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerFontSizeZone end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerFontSizeZone = value
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
fontZone = {
|
||||
type = "select",
|
||||
dialogControl = 'LSM30_Font',
|
||||
order = 4,
|
||||
values = SharedMedia:HashTable("font"),
|
||||
style = 'dropdown',
|
||||
name = function() return l10n('Font for Zone Names') end,
|
||||
desc = function() return l10n('The font used for zone names.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerFontZone or "Friz Quadrata TT" end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerFontZone = value
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
fontSizeQuest = {
|
||||
type = "range",
|
||||
order = 5,
|
||||
name = function() return l10n('Font Size for Quest Titles') end,
|
||||
desc = function() return l10n("The font size used for Quest Titles.\n\nNOTE: Objective font size will auto adjust to less than or equal to Quest font size. This is necessary to avoid any text collisions and formatting abnormalities.") end,
|
||||
width = "double",
|
||||
min = 8,
|
||||
max = 26,
|
||||
step = 1,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerFontSizeQuest end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerFontSizeQuest = value
|
||||
if Questie.db.profile.trackerFontSizeObjective > value then
|
||||
Questie.db.profile.trackerFontSizeObjective = value
|
||||
end
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
fontQuest = {
|
||||
type = "select",
|
||||
dialogControl = 'LSM30_Font',
|
||||
order = 6,
|
||||
values = SharedMedia:HashTable("font"),
|
||||
style = 'dropdown',
|
||||
name = function() return l10n('Font for Quest Titles') end,
|
||||
desc = function() return l10n('The font used for Quest Titles.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerFontQuest or "Friz Quadrata TT" end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerFontQuest = value
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
fontSizeObjective = {
|
||||
type = "range",
|
||||
order = 7,
|
||||
name = function() return l10n('Font Size for Objectives') end,
|
||||
desc = function() return l10n("The font size used for Objectives.\n\nNOTE: Objective font size will auto adjust to less than or equal to Quest font size. This is necessary to avoid any text collisions and formatting abnormalities.") end,
|
||||
width = "double",
|
||||
min = 8,
|
||||
max = 26,
|
||||
step = 1,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerFontSizeObjective end,
|
||||
set = function(_, value)
|
||||
if Questie.db.profile.trackerFontSizeQuest < value then
|
||||
Questie.db.profile.trackerFontSizeObjective = Questie.db.profile.trackerFontSizeQuest
|
||||
else
|
||||
Questie.db.profile.trackerFontSizeObjective = value
|
||||
end
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
fontObjective = {
|
||||
type = "select",
|
||||
dialogControl = 'LSM30_Font',
|
||||
order = 8,
|
||||
values = SharedMedia:HashTable("font"),
|
||||
style = 'dropdown',
|
||||
name = function() return l10n('Font for Objectives') end,
|
||||
desc = function() return l10n('The font used for Objectives.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerFontObjective or "Friz Quadrata TT" end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerFontObjective = value
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
fontOutline = {
|
||||
type = "select",
|
||||
dialogControl = 'LSM30_Font',
|
||||
order = 9,
|
||||
width = 1.5,
|
||||
values = {
|
||||
["None"] = "",
|
||||
["Outline"] = "OUTLINE",
|
||||
["Monochrome"] = "MONOCHROME"
|
||||
},
|
||||
style = 'dropdown',
|
||||
name = function() return l10n('Outline for Zones, Titles, and Objectives') end,
|
||||
desc = function() return l10n('The outline used for Quest Zones, Titles, and Objectives in the Questie Tracker.') end,
|
||||
disabled = function() return not Questie.db.profile.trackerEnabled end,
|
||||
get = function() return Questie.db.profile.trackerFontOutline end,
|
||||
set = function(_, value)
|
||||
Questie.db.profile.trackerFontOutline = value
|
||||
QuestieTracker:Update()
|
||||
end
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
return trackerOptions
|
||||
end
|
||||
|
||||
_GetShortcuts = function()
|
||||
return {
|
||||
['left'] = l10n('Left Click'),
|
||||
['right'] = l10n('Right Click'),
|
||||
['shiftleft'] = l10n('Shift') .. " + " .. l10n('Left Click'),
|
||||
['shiftright'] = l10n('Shift') .. " + " .. l10n('Right Click'),
|
||||
['ctrlleft'] = l10n('Control') .. " + " .. l10n('Left Click'),
|
||||
['ctrlright'] = l10n('Control') .. " + " .. l10n('Right Click'),
|
||||
['altleft'] = l10n('Alt') .. " + " .. l10n('Left Click'),
|
||||
['altright'] = l10n('Alt') .. " + " .. l10n('Right Click'),
|
||||
['disabled'] = l10n('Disabled'),
|
||||
}
|
||||
end
|
||||
Reference in New Issue
Block a user