summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/d_iwad.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/d_iwad.c b/src/d_iwad.c
index 320ee835..8f2078c9 100644
--- a/src/d_iwad.c
+++ b/src/d_iwad.c
@@ -140,6 +140,24 @@ static char *collectors_edition_subdirs[] =
"Ultimate Doom",
};
+// Location where Steam is installed
+
+static registry_value_t steam_install_location =
+{
+ HKEY_LOCAL_MACHINE,
+ "Software\\Valve\\Steam",
+ "InstallPath",
+};
+
+// Subdirs of the steam install directory where IWADs are found
+
+static char *steam_install_subdirs[] =
+{
+ "steamapps\\common\\doom 2",
+ "steamapps\\common\\ultimate doom",
+ "steamapps\\common\\final doom\\base",
+};
+
static char *GetRegistryString(registry_value_t *reg_val)
{
HKEY key;
@@ -251,6 +269,41 @@ static void CheckCollectorsEdition(void)
free(install_path);
}
+
+// Check for Doom downloaded via Steam
+
+static void CheckSteamEdition(void)
+{
+ char *install_path;
+ char *subpath;
+ int i;
+
+ install_path = GetRegistryString(&steam_install_location);
+
+ if (install_path == NULL)
+ {
+ return;
+ }
+
+ for (i=0; i<arrlen(steam_install_subdirs); ++i)
+ {
+ subpath = malloc(strlen(install_path)
+ + strlen(steam_install_subdirs[i]) + 5);
+
+ sprintf(subpath, "%s%s", install_path, steam_install_subdirs[i]);
+
+ if (M_FileExists(subpath))
+ {
+ AddIWADDir(subpath);
+ }
+ else
+ {
+ free(subpath);
+ }
+ }
+}
+
+
#endif
static struct
@@ -417,6 +470,7 @@ static void BuildIWADDirList(void)
CheckUninstallStrings();
CheckCollectorsEdition();
+ CheckSteamEdition();
#else