v9.7.2: Ebonhold Database integration and core logic refinements

This commit is contained in:
Xurkon
2026-02-14 21:13:44 -06:00
parent 0a2cc15641
commit 6ef85d4e2d
573 changed files with 1751730 additions and 2 deletions
@@ -0,0 +1,200 @@
-------------------------
--Import modules.
-------------------------
---@type QuestieQuest
local QuestieQuest = QuestieLoader:ImportModule("QuestieQuest");
---@type QuestieOptions
local QuestieOptions = QuestieLoader:ImportModule("QuestieOptions");
---@type QuestieOptionsDefaults
local QuestieOptionsDefaults = QuestieLoader:ImportModule("QuestieOptionsDefaults");
---@type QuestieOptionsUtils
local QuestieOptionsUtils = QuestieLoader:ImportModule("QuestieOptionsUtils");
---@type QuestieDBMIntegration
local QuestieDBMIntegration = QuestieLoader:ImportModule("QuestieDBMIntegration");
---@type l10n
local l10n = QuestieLoader:ImportModule("l10n")
QuestieOptions.tabs.dbm = {...}
local optionsDefaults = QuestieOptionsDefaults:Load()
--TODO, hid hud tab if DBMHudMap global doesn't exist? Or at very least gray out options?
--dbmHUDEnable, dbmHUDShowAlert, DBMHUDZoom, dbmHUDRadius, dbmHUDShowQuest, dbmHUDShowSlay, dbmHUDShowLoot, dbmHUDShowInteract
function QuestieOptions.tabs.dbm:Initialize()
return {
name = function() return l10n('DBM HUD'); end,
type = "group",
disabled = function() if DBM and DBM.HudMap then return false else return true end end,
hidden = function() if DBM and DBM.HudMap then return false else return true end end,
order = 6,
args = {
info_prespacer = QuestieOptionsUtils:Spacer(0),
info_text = {
type = "description",
order = 0.1,
name = function() return Questie:Colorize(l10n('The DBM HUD integrates with the addon DeadlyBossMods to show a radar of objective icons on your entire screen. Enabling this feature usually requires a /reload to take effect.'), 'gray'); end,
fontSize = "medium",
},
info_postspacer = QuestieOptionsUtils:Spacer(0.2),
hud_options = {
type = "header",
order = 1,
name = function() return l10n('DBM HUD'); end,
},
dbmHUDEnable = {
type = "toggle",
order = 1.1,
name = function() return l10n('Show DBM HUD'); end,
desc = function() return l10n('Enable or disable the DBM Heads Up Display (HUD) overlay for showing map objects.'); end,
width = "full",
get = function(info) return QuestieOptions:GetProfileValue(info); end,
set = function (info, value)
QuestieOptions:SetProfileValue(info, value)
if value then
QuestieDBMIntegration:EnableHUD()
--Hud Integration is completely innert when disabled, so QuestieDBMIntegration:SoftReset() cannot be used since it has no local tables
--Questies SmoothReset must be used after enabling hud so that HUD can build it's own tables when initial icons get added
QuestieQuest:SmoothReset()
else
QuestieDBMIntegration:ClearAll(true)--Passing true unregisters events and completely disables HUD activity after the ClearAll
end
end,
},
dbmHUDShowAlert = {
type = "toggle",
order = 1.2,
name = function() return l10n('Enable proximity visual for HUD icons'); end,
desc = function() return l10n('Changes the color of a HUD icon to red when you are near it.'); end,
width = "full",
disabled = function() return not Questie.db.profile.dbmHUDEnable end,
get = function(info) return QuestieOptions:GetProfileValue(info); end,
set = function (info, value)
QuestieOptions:SetProfileValue(info, value)
QuestieDBMIntegration:SoftReset()
end,
},
DBMHUDRefresh = {
type = "range",
disabled = function()
if not Questie.db.profile.dbmHUDEnable then
return true
elseif DBM and DBM.HudMap and not DBM.HudMap.Version then
return true
else
return false
end
end,
order = 1.3,
name = function() return l10n('Refresh rate for HUD (Requires turning HUD off/on)'); end,
desc = function() return l10n('Adjusts the fresh rate for HUD Icons which affects how often UI refreshes their position. (Default: %s)', optionsDefaults.profile.DBMHUDRefresh); end,
width = "double",
min = 0.01,
max = 0.05,
step = 0.01,
get = function(info) return QuestieOptions:GetProfileValue(info); end,
set = function (info, value)
QuestieOptions:SetProfileValue(info, value)
QuestieDBMIntegration:ChangeRefreshRate(value)
end,
},
Spacer_A = QuestieOptionsUtils:Spacer(1.9),
mapnote_options = {
type = "header",
order = 2,
name = function() return l10n('Size & Scale Options'); end,
},
Spacer_B = QuestieOptionsUtils:Spacer(2.1),
DBMHUDZoom = {
type = "range",
order = 2.2,
name = function() return l10n('Global zoom level for HUD Icons'); end,
desc = function() return l10n('Adjusts the zoom level for HUD Icons which affects how close in or how far out you see them. (Default: %s)', optionsDefaults.profile.DBMHUDZoom); end,
width = "double",
min = 40,
max = 200,
step = 20,
disabled = function() return not Questie.db.profile.dbmHUDEnable end,
get = function(info) return QuestieOptions:GetProfileValue(info); end,
set = function (info, value)
QuestieOptions:SetProfileValue(info, value)
QuestieDBMIntegration:ChangeZoomLevel(value)
end,
},
dbmHUDRadius = {
type = "range",
order = 2.3,
name = function() return l10n('Global radius/size for HUD Icons'); end,
desc = function() return l10n('Adjusts the size of the icons that appear on the DBM HUD. (Default: %s)', optionsDefaults.profile.dbmHUDRadius); end,
width = "double",
min = 1,
max = 5,
step = 0.5,
disabled = function() return not Questie.db.profile.dbmHUDEnable end,
get = function(info) return QuestieOptions:GetProfileValue(info); end,
set = function (info, value)
QuestieOptions:SetProfileValue(info, value)
QuestieDBMIntegration:SoftReset()
end,
},
Spacer_C = QuestieOptionsUtils:Spacer(2.9),
fade_options = {
type = "header",
order = 3,
name = function() return l10n('Filter Options'); end,
},
dbmHUDShowQuest = {
type = "toggle",
order = 3.1,
name = function() return l10n('Show quest giver icons'); end,
desc = function() return l10n('Toggles whether or not available/complete quest icons appear on the DBM HUD. (Default: %s)', optionsDefaults.profile.dbmHUDShowQuest); end,
width = "full",
disabled = function() return not Questie.db.profile.dbmHUDEnable end,
get = function(info) return QuestieOptions:GetProfileValue(info); end,
set = function (info, value)
QuestieOptions:SetProfileValue(info, value)
QuestieDBMIntegration:SoftReset()
end,
},
dbmHUDShowSlay = {
type = "toggle",
order = 3.2,
name = function() return l10n('Show slay icons'); end,
desc = function() return l10n('Toggles whether or not slay icons appear on the DBM HUD. (Default: %s)', optionsDefaults.profile.dbmHUDShowSlay); end,
width = "full",
disabled = function() return not Questie.db.profile.dbmHUDEnable end,
get = function(info) return QuestieOptions:GetProfileValue(info); end,
set = function (info, value)
QuestieOptions:SetProfileValue(info, value)
QuestieDBMIntegration:SoftReset()
end,
},
dbmHUDShowLoot = {
type = "toggle",
order = 3.3,
name = function() return l10n('Show loot icons'); end,
desc = function() return l10n('Toggles whether or not loot icons appear on the DBM HUD. (Default: %s)', optionsDefaults.profile.dbmHUDShowLoot); end,
width = "full",
disabled = function() return not Questie.db.profile.dbmHUDEnable end,
get = function(info) return QuestieOptions:GetProfileValue(info); end,
set = function (info, value)
QuestieOptions:SetProfileValue(info, value)
QuestieDBMIntegration:SoftReset()
end,
},
dbmHUDShowInteract = {
type = "toggle",
order = 3.4,
name = function() return l10n('Show object interact icons'); end,
desc = function() return l10n('Toggles whether or not object (gear) icons appear on the DBM HUD. (Default: %s)', optionsDefaults.profile.dbmHUDShowInteract); end,
width = "full",
disabled = function() return not Questie.db.profile.dbmHUDEnable end,
get = function(info) return QuestieOptions:GetProfileValue(info); end,
set = function (info, value)
QuestieOptions:SetProfileValue(info, value)
QuestieDBMIntegration:SoftReset()
end,
},
},
}
end