Hi,
I wonder whether the logic in
CBRegistry::ReadString(const AnsiString& subKey, const AnsiString& key, const AnsiString& init)
is actually correct, w.r.t. the order of the values of both xml files being checked for the matching key:
ret = GetValue(m_LocalValues, subKey, key, found);
if (!found) ret = GetValue(m_Values, subKey, key, found);
The settings.xml that will be read into the "m_LocalValues" map is a "readonly" version (e.g. one that you might distribute with the game), because these values will never be written to nor saved.
The settings.xml that will be read into "m_Values", however, is the one where values are updated and that is saved for every user/player.
If an item is present in both maps, a user-defined redefinition should override the read-only "default". If I read the code of the original WME correctly, there it is done as I would expect, checking "HKEY_CURRENT_USER" before "HKEY_LOCAL_MACHINE" when reading, and writing always to "HKEY_CURRENT_USER". But in WMELite it is reversed. Is this intended behaviour or can I savely reverse this? (BTW I would then change the wording for the "local" values/settings, to clarify these are read-only global defaults).