I'd like to use metatables for default settings, but I never got it to work. Instead, I do a version check at VARIABLES_LOADED, and if the user has an older version, I do something like this:
Code:
function MyAddOn.AddNewSettings(settings, defaults)
for k, v in pairs(defaults) do
if ( not settings[k] ) then
if ( type(v) == "table" ) then
settings[k] = {};
settings[k] = MyAddOn.AddNewSettings(settings[k], defaults[k]);
else
settings[k] = v;
end
elseif ( type(v) == "table" ) then
settings[k] = MyAddOn.AddNewSettings(settings[k], defaults[k]);
end
end
return settings;
end
It goes through the settings table and adds any new ones that may have appeared in more recent versions.