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:
- Character-Specific Settings
-- Saved as: configs/Aurora/AuroraGUISettings[CharacterName][ServerName].json
- Named Profile Settings
-- Saved as: configs/Aurora/AuroraGUISettings[CharacterName][ServerName] - [ProfileName].json
Best Practices
- 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)
- Set Defaults Early
local function InitializeDefaults()
Aurora.Config:SetDefault("feature.enabled", false)
Aurora.Config:SetDefault("feature.threshold", 50)
end
- 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)
- 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