v9.7.2: Ebonhold Database integration and core logic refinements
This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
---@class QuestieOptions
|
||||
local QuestieOptions = QuestieLoader:CreateModule("QuestieOptions");
|
||||
-------------------------
|
||||
--Import modules.
|
||||
-------------------------
|
||||
---@type QuestieQuest
|
||||
local QuestieQuest = QuestieLoader:ImportModule("QuestieQuest");
|
||||
---@type QuestieJourney
|
||||
local QuestieJourney = QuestieLoader:ImportModule("QuestieJourney");
|
||||
---@type l10n
|
||||
local l10n = QuestieLoader:ImportModule("l10n")
|
||||
---@type QuestieCombatQueue
|
||||
local QuestieCombatQueue = QuestieLoader:ImportModule("QuestieCombatQueue")
|
||||
|
||||
QuestieOptions.tabs = { ... }
|
||||
QuestieConfigFrame = nil
|
||||
|
||||
local AceGUI = LibStub("AceGUI-3.0")
|
||||
local AceConfigDialog = LibStub("AceConfigDialog-3.0")
|
||||
|
||||
-- Forward declaration
|
||||
local _CreateOptionsTable
|
||||
|
||||
---Initializes the frames for the options menu
|
||||
function QuestieOptions:Initialize()
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieOptions]: Initializing...")
|
||||
|
||||
local optionsTable = _CreateOptionsTable()
|
||||
|
||||
coroutine.yield()
|
||||
|
||||
LibStub("AceConfig-3.0"):RegisterOptionsTable("Questie", optionsTable)
|
||||
AceConfigDialog:AddToBlizOptions("Questie", "Questie");
|
||||
|
||||
coroutine.yield()
|
||||
|
||||
---@type AceGUIFrame, AceGUIFrame
|
||||
local configFrame = AceGUI:Create("Frame")
|
||||
|
||||
configFrame:Hide()
|
||||
coroutine.yield()
|
||||
|
||||
AceConfigDialog:SetDefaultSize("Questie", 640, 700)
|
||||
AceConfigDialog:Open("Questie", configFrame) -- load the options into configFrame
|
||||
configFrame:SetLayout("Fill")
|
||||
configFrame:EnableResize(false)
|
||||
QuestieCompat.SetResizeBounds(configFrame.frame, 550, 400)
|
||||
|
||||
configFrame:Hide()
|
||||
coroutine.yield()
|
||||
|
||||
local journeyButton = CreateFrame("Button", nil, configFrame.frame, "UIPanelButtonTemplate")
|
||||
journeyButton:SetSize(140, 24)
|
||||
journeyButton:SetPoint("TOPRIGHT", configFrame.frame, "TOPRIGHT", -50, -13)
|
||||
journeyButton:SetText(l10n('My Journey'))
|
||||
journeyButton:SetScript("OnClick", function()
|
||||
QuestieCombatQueue:Queue(function()
|
||||
QuestieJourney:ToggleJourneyWindow()
|
||||
QuestieOptions:OpenConfigWindow()
|
||||
end)
|
||||
end)
|
||||
|
||||
configFrame:Hide()
|
||||
coroutine.yield()
|
||||
|
||||
QuestieConfigFrame = configFrame
|
||||
table.insert(UISpecialFrames, "QuestieConfigFrame")
|
||||
|
||||
Questie:Debug(Questie.DEBUG_DEVELOP, "[QuestieOptions]: Initialization done")
|
||||
end
|
||||
|
||||
-- Generic function to hide the config frame.
|
||||
function QuestieOptions:HideFrame()
|
||||
if QuestieConfigFrame and QuestieConfigFrame:IsShown() then
|
||||
QuestieConfigFrame:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
-- Open the configuration window
|
||||
function QuestieOptions:OpenConfigWindow()
|
||||
if not QuestieConfigFrame:IsShown() then
|
||||
PlaySound(882)
|
||||
-- AceConfigDialog:Open("Questie", QuestieConfigFrame)
|
||||
QuestieConfigFrame:Show()
|
||||
else
|
||||
QuestieConfigFrame:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
-- get option value
|
||||
function QuestieOptions:GetProfileValue(info)
|
||||
return Questie.db.profile[info[#info]]
|
||||
end
|
||||
|
||||
-- set option value
|
||||
function QuestieOptions:SetProfileValue(info, value)
|
||||
if debug and Questie.db.profile[info[#info]] ~= value then
|
||||
Questie:Debug(Questie.DEBUG_SPAM, "DEBUG: global option", info[#info], "changed from '" .. tostring(Questie.db.profile[info[#info]]) .. "' to '" .. tostring(value) .. "'")
|
||||
end
|
||||
Questie.db.profile[info[#info]] = value
|
||||
end
|
||||
|
||||
function QuestieOptions:ClusterRedraw()
|
||||
Questie:Debug(Questie.DEBUG_INFO, "Clustering changed, redrawing!")
|
||||
--Redraw clusters here
|
||||
QuestieQuest:SmoothReset();
|
||||
end
|
||||
|
||||
---@return table
|
||||
_CreateOptionsTable = function()
|
||||
local general_tab = QuestieOptions.tabs.general:Initialize()
|
||||
coroutine.yield()
|
||||
--local social_tab = QuestieOptions.tabs.social:Initialize()
|
||||
--coroutine.yield()
|
||||
--local minimap_tab = QuestieOptions.tabs.minimap:Initialize()
|
||||
--coroutine.yield()
|
||||
--local map_tab = QuestieOptions.tabs.map:Initialize()
|
||||
--coroutine.yield()
|
||||
local icons_tab = QuestieOptions.tabs.icons:Initialize()
|
||||
coroutine.yield()
|
||||
local tracker_tab = QuestieOptions.tabs.tracker:Initialize()
|
||||
coroutine.yield()
|
||||
local auto_tab = QuestieOptions.tabs.auto:Initialize()
|
||||
coroutine.yield()
|
||||
--local tooltip_tab = QuestieOptions.tabs.tooltip:Initialize()
|
||||
--coroutine.yield()
|
||||
--local sounds_tab = QuestieOptions.tabs.sounds:Initialize()
|
||||
--coroutine.yield()
|
||||
local nameplate_tab = QuestieOptions.tabs.nameplate:Initialize()
|
||||
coroutine.yield()
|
||||
local dbm_hud_tab = QuestieOptions.tabs.dbm:Initialize()
|
||||
coroutine.yield()
|
||||
local advanced_tab = QuestieOptions.tabs.advanced:Initialize()
|
||||
coroutine.yield()
|
||||
return {
|
||||
name = "Questie",
|
||||
handler = Questie,
|
||||
type = "group",
|
||||
childGroups = "tab",
|
||||
args = {
|
||||
general_tab = general_tab,
|
||||
--social_tab = social_tab,
|
||||
--minimap_tab = minimap_tab,
|
||||
--map_tab = map_tab,
|
||||
icons_tab = icons_tab,
|
||||
tracker_tab = tracker_tab,
|
||||
auto_tab = auto_tab,
|
||||
--tooltip_tab = tooltip_tab,
|
||||
--sounds_tab = sounds_tab,
|
||||
nameplate_tab = nameplate_tab,
|
||||
dbm_hud_tab = dbm_hud_tab,
|
||||
advanced_tab = advanced_tab,
|
||||
profiles_tab = LibStub("AceDBOptions-3.0"):GetOptionsTable(Questie.db)
|
||||
}
|
||||
}
|
||||
end
|
||||
Reference in New Issue
Block a user