Skip to main content

Configuration System

Aurora provides a simple configuration system for reading and writing settings.

Accessing Values

Reading Values


-- Read a value (returns default if not set)
local value = Aurora.Config:Read("myFeature.enabled")

Writing Values

-- Save a value
Aurora.Config:Write("myFeature.enabled", true)

-- Save multiple values
Aurora.Config:Write("combat.minHealth", 50)
Aurora.Config:Write("combat.maxRange", 40)

Setting Defaults

-- Set default values (used when no saved value exists)
Aurora.Config:SetDefault("myFeature.enabled", false)
Aurora.Config:SetDefault("combat.minHealth", 60)
tip

Always set defaults for your configuration values to ensure your addon works correctly even before the user changes any settings.

Setting Defaults

Always set defaults for your configuration values:

-- Set defaults when initializing your addon
Aurora.Config:SetDefault("combat.autoTarget", true)
Aurora.Config:SetDefault("combat.minHealth", 50)
Aurora.Config:SetDefault("ui.scale", 1.0)
tip

Setting defaults ensures your addon has fallback values if no user configuration exists.

Reading Configuration

-- Read with automatic default fallback
local autoTarget = Aurora.Config:Read("combat.autoTarget")
local minHealth = Aurora.Config:Read("combat.minHealth")

-- Get all settings
local allSettings = Aurora.Config:GetAll()
for key, value in pairs(allSettings) do
print(key, value)
end

Writing Configuration

-- Write single values
Aurora.Config:Write("combat.autoTarget", false)
Aurora.Config:Write("ui.scale", 1.2)

-- Write multiple related settings
Aurora.Config:Write("spellQueue.enabled", true)
Aurora.Config:Write("spellQueue.window", 400)

Profile Integration

The configuration system automatically integrates with Aurora's profile system:

  1. Character-Specific Settings
-- Saved as: configs/Aurora/AuroraGUISettings[CharacterName][ServerName].json
  1. Named Profile Settings
-- Saved as: configs/Aurora/AuroraGUISettings[CharacterName][ServerName] - [ProfileName].json

Best Practices

  1. Organize Keys Hierarchically
-- Good: Organized and clear
Aurora.Config:Write("healing.tanks.minHealth", 60)
Aurora.Config:Write("healing.raid.minHealth", 80)

-- Avoid: Flat and unclear
Aurora.Config:Write("tankMinHealth", 60)
Aurora.Config:Write("raidMinHealth", 80)
  1. Set Defaults Early
local function InitializeDefaults()
Aurora.Config:SetDefault("feature.enabled", false)
Aurora.Config:SetDefault("feature.threshold", 50)
end
  1. Use Consistent Keys
-- Define keys as constants
local CONFIG_KEYS = {
ENABLED = "feature.enabled",
THRESHOLD = "feature.threshold"
}

-- Use constants for consistency
Aurora.Config:Read(CONFIG_KEYS.ENABLED)
Aurora.Config:Write(CONFIG_KEYS.THRESHOLD, 75)
  1. Handle Loading Errors
local function SafeLoadConfig(key, default)
local value = Aurora.Config:Read(key)
if value == nil then
print("Warning: Failed to load config for " .. key)
return default
end
return value
end