diff --git a/Generals/Code/GameEngine/Include/Common/Registry.h b/Generals/Code/GameEngine/Include/Common/Registry.h index a969c759e1..f068c5ba6d 100644 --- a/Generals/Code/GameEngine/Include/Common/Registry.h +++ b/Generals/Code/GameEngine/Include/Common/Registry.h @@ -30,6 +30,12 @@ #include +#if RTS_ZEROHOUR +/** + * Get a string from the original Generals Registry + */ +Bool GetStringFromGeneralsRegistry(AsciiString path, AsciiString key, AsciiString& val); +#endif /** * Get a string from the registry */ diff --git a/Generals/Code/GameEngine/Source/Common/System/registry.cpp b/Generals/Code/GameEngine/Source/Common/System/registry.cpp index d43fd9830d..1c56d4b9ec 100644 --- a/Generals/Code/GameEngine/Source/Common/System/registry.cpp +++ b/Generals/Code/GameEngine/Source/Common/System/registry.cpp @@ -115,9 +115,29 @@ Bool setUnsignedIntInRegistry( HKEY root, AsciiString path, AsciiString key, Uns return (returnValue == ERROR_SUCCESS); } +#if RTS_ZEROHOUR +Bool GetStringFromGeneralsRegistry(AsciiString path, AsciiString key, AsciiString& val) +{ + AsciiString fullPath = "SOFTWARE\\Electronic Arts\\EA Games\\Generals"; + + fullPath.concat(path); + DEBUG_LOG(("GetStringFromRegistry - looking in %s for key %s", fullPath.str(), key.str())); + if (getStringFromRegistry(HKEY_LOCAL_MACHINE, fullPath.str(), key.str(), val)) + { + return TRUE; + } + + return getStringFromRegistry(HKEY_CURRENT_USER, fullPath.str(), key.str(), val); +} +#endif + Bool GetStringFromRegistry(AsciiString path, AsciiString key, AsciiString& val) { +#if RTS_GENERALS AsciiString fullPath = "SOFTWARE\\Electronic Arts\\EA Games\\Generals"; +#elif RTS_ZEROHOUR + AsciiString fullPath = "SOFTWARE\\Electronic Arts\\EA Games\\Command and Conquer Generals Zero Hour"; +#endif fullPath.concat(path); DEBUG_LOG(("GetStringFromRegistry - looking in %s for key %s", fullPath.str(), key.str())); @@ -131,7 +151,11 @@ Bool GetStringFromRegistry(AsciiString path, AsciiString key, AsciiString& val) Bool GetUnsignedIntFromRegistry(AsciiString path, AsciiString key, UnsignedInt& val) { +#if RTS_GENERALS AsciiString fullPath = "SOFTWARE\\Electronic Arts\\EA Games\\Generals"; +#elif RTS_ZEROHOUR + AsciiString fullPath = "SOFTWARE\\Electronic Arts\\EA Games\\Command and Conquer Generals Zero Hour"; +#endif fullPath.concat(path); DEBUG_LOG(("GetUnsignedIntFromRegistry - looking in %s for key %s", fullPath.str(), key.str())); @@ -146,6 +170,7 @@ Bool GetUnsignedIntFromRegistry(AsciiString path, AsciiString key, UnsignedInt& AsciiString GetRegistryLanguage(void) { static Bool cached = FALSE; + // NOTE: static causes a memory leak, but we have to keep it because the value is cached. static AsciiString val = "english"; if (cached) { return val; diff --git a/GeneralsMD/Code/GameEngine/Include/Common/Registry.h b/GeneralsMD/Code/GameEngine/Include/Common/Registry.h index 3b6ffe8ea9..20ecd7cc67 100644 --- a/GeneralsMD/Code/GameEngine/Include/Common/Registry.h +++ b/GeneralsMD/Code/GameEngine/Include/Common/Registry.h @@ -30,10 +30,12 @@ #include +#if RTS_ZEROHOUR /** * Get a string from the original Generals Registry */ Bool GetStringFromGeneralsRegistry(AsciiString path, AsciiString key, AsciiString& val); +#endif /** * Get a string from the registry */ diff --git a/GeneralsMD/Code/GameEngine/Source/Common/System/registry.cpp b/GeneralsMD/Code/GameEngine/Source/Common/System/registry.cpp index afe2c92e82..5071c76108 100644 --- a/GeneralsMD/Code/GameEngine/Source/Common/System/registry.cpp +++ b/GeneralsMD/Code/GameEngine/Source/Common/System/registry.cpp @@ -115,6 +115,7 @@ Bool setUnsignedIntInRegistry( HKEY root, AsciiString path, AsciiString key, Uns return (returnValue == ERROR_SUCCESS); } +#if RTS_ZEROHOUR Bool GetStringFromGeneralsRegistry(AsciiString path, AsciiString key, AsciiString& val) { AsciiString fullPath = "SOFTWARE\\Electronic Arts\\EA Games\\Generals"; @@ -128,10 +129,15 @@ Bool GetStringFromGeneralsRegistry(AsciiString path, AsciiString key, AsciiStrin return getStringFromRegistry(HKEY_CURRENT_USER, fullPath.str(), key.str(), val); } +#endif Bool GetStringFromRegistry(AsciiString path, AsciiString key, AsciiString& val) { +#if RTS_GENERALS + AsciiString fullPath = "SOFTWARE\\Electronic Arts\\EA Games\\Generals"; +#elif RTS_ZEROHOUR AsciiString fullPath = "SOFTWARE\\Electronic Arts\\EA Games\\Command and Conquer Generals Zero Hour"; +#endif fullPath.concat(path); DEBUG_LOG(("GetStringFromRegistry - looking in %s for key %s", fullPath.str(), key.str())); @@ -145,7 +151,11 @@ Bool GetStringFromRegistry(AsciiString path, AsciiString key, AsciiString& val) Bool GetUnsignedIntFromRegistry(AsciiString path, AsciiString key, UnsignedInt& val) { +#if RTS_GENERALS + AsciiString fullPath = "SOFTWARE\\Electronic Arts\\EA Games\\Generals"; +#elif RTS_ZEROHOUR AsciiString fullPath = "SOFTWARE\\Electronic Arts\\EA Games\\Command and Conquer Generals Zero Hour"; +#endif fullPath.concat(path); DEBUG_LOG(("GetUnsignedIntFromRegistry - looking in %s for key %s", fullPath.str(), key.str()));