foxygit / doom Log in
commit 8c7078eca9a086f50002d5b84a0b8e80a9d36070
Author:     Simon Howard <fraggle@gmail.com>
AuthorDate: Thu Jul 31 20:06:42 2008 +0000
Commit:     Simon Howard <fraggle@gmail.com>
CommitDate: Thu Jul 31 20:06:42 2008 +0000

    Automatically load chex.deh on startup if playing in chex mode.

    Subversion-branch: /trunk/chocolate-doom
    Subversion-revision: 1165
---
 src/d_main.c   | 17 +++++++++++++++++
 src/deh_main.c | 13 ++++++++-----
 src/deh_main.h |  1 +
 src/i_system.c |  2 +-
 4 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/src/d_main.c b/src/d_main.c
index 6b90d57e..9aa85f9c 100644
--- a/src/d_main.c
+++ b/src/d_main.c
@@ -770,6 +770,22 @@ void PrintGameVersion(void)
     }
 }

+// Load the Chex Quest dehacked file, if we are in Chex mode.
+
+static void LoadChexDeh(void)
+{
+    if (gameversion == exe_chex)
+    {
+        if (!DEH_LoadFile("chex.deh"))
+        {
+            I_Error("Unable to find Chex Quest dehacked file (chex.deh).\n"
+                    "The dehacked file is required in order to emulate\n"
+                    "chex.exe correctly.  Please download it from the\n"
+                    "/idgames repository.");
+        }
+    }
+}
+
 //
 // D_DoomMain
 //
@@ -1200,6 +1216,7 @@ void D_DoomMain (void)

     D_IdentifyVersion();
     InitGameVersion();
+    LoadChexDeh();
     D_SetGameDescription();
     D_SetSaveGameDir();

diff --git a/src/deh_main.c b/src/deh_main.c
index 3ace70e5..b70a3384 100644
--- a/src/deh_main.c
+++ b/src/deh_main.c
@@ -351,21 +351,25 @@ static void DEH_ParseContext(deh_context_t *context)

 // Parses a dehacked file

-static void DEH_ParseFile(char *filename)
+int DEH_LoadFile(char *filename)
 {
     deh_context_t *context;

+    printf(" loading %s\n", filename);
+
     context = DEH_OpenFile(filename);

     if (context == NULL)
     {
-        fprintf(stderr, "DEH_ParseFile: Unable to open %s\n", filename);
-        return;
+        fprintf(stderr, "DEH_LoadFile: Unable to open %s\n", filename);
+        return 0;
     }

     DEH_ParseContext(context);

     DEH_CloseFile(context);
+
+    return 1;
 }

 // Checks the command line for -deh argument
@@ -393,8 +397,7 @@ void DEH_Init(void)
         while (p < myargc && myargv[p][0] != '-')
         {
             filename = D_TryFindWADByName(myargv[p]);
-            printf(" loading %s\n", filename);
-            DEH_ParseFile(filename);
+            DEH_LoadFile(filename);
             ++p;
         }
     }
diff --git a/src/deh_main.h b/src/deh_main.h
index 01f82b83..388c56de 100644
--- a/src/deh_main.h
+++ b/src/deh_main.h
@@ -39,6 +39,7 @@
 #define DEH_VANILLA_NUMSFX 107

 void DEH_Init(void);
+int DEH_LoadFile(char *filename);

 boolean DEH_ParseAssignment(char *line, char **variable_name, char **value);

diff --git a/src/i_system.c b/src/i_system.c
index 09e211fd..fe596a60 100644
--- a/src/i_system.c
+++ b/src/i_system.c
@@ -225,7 +225,7 @@ void I_Error (char *error, ...)

     // Message first.
     va_start(argptr, error);
-    fprintf(stderr, "Error: ");
+    fprintf(stderr, "\nError: ");
     vfprintf(stderr, error, argptr);
     fprintf(stderr, "\n");
     va_end(argptr);