foxygit / doom Log in
commit 42e8b05aa46936ada3de4ee68c6dc005fccadfb4
Author:     Thomas A. Birkel <capnclever@gmail.com>
AuthorDate: Fri Oct 21 04:55:50 2016 -0400
Commit:     Thomas A. Birkel <capnclever@gmail.com>
CommitDate: Fri Oct 21 04:55:50 2016 -0400

    Update branch with requested changes, fourth pass

    Clean up bit checks, add defines to clarify usage
---
 src/heretic/g_game.c | 26 +++++++++++++++-----------
 src/hexen/g_game.c   | 25 ++++++++++++++-----------
 2 files changed, 29 insertions(+), 22 deletions(-)

diff --git a/src/heretic/g_game.c b/src/heretic/g_game.c
index f78da0ed..153acac7 100644
--- a/src/heretic/g_game.c
+++ b/src/heretic/g_game.c
@@ -1652,6 +1652,9 @@ void G_InitNew(skill_t skill, int episode, int map)
 */

 #define DEMOMARKER      0x80
+#define DEMOHEADER_RESPAWN    0x20
+#define DEMOHEADER_LONGTICS   0x10
+#define DEMOHEADER_NOMONSTERS 0x02

 void G_ReadDemoTiccmd(ticcmd_t * cmd)
 {
@@ -1791,17 +1794,18 @@ void G_RecordDemo(skill_t skill, int numplayers, int episode, int map,
     *demo_p = 1; // assume player one exists
     if (respawnparm)
     {
-        *demo_p += 32;
+        *demo_p |= DEMOHEADER_RESPAWN;
     }
     if (longtics)
     {
-        *demo_p += 16;
+        *demo_p |= DEMOHEADER_LONGTICS;
     }
     if (nomonsters)
     {
-        *demo_p += 2;
+        *demo_p |= DEMOHEADER_NOMONSTERS;
     }
     demo_p++;
+    demo_p++;

     for (i = 1; i < MAXPLAYERS; i++)
         *demo_p++ = playeringame[i];
@@ -1838,12 +1842,12 @@ void G_DoPlayDemo(void)
     map = *demo_p++;

     // Read special parameter bits: see G_RecordDemo() for details.
-    respawnparm = *demo_p & 32;
-    longtics    = *demo_p & 16;
-    nomonsters  = *demo_p & 2;
+    respawnparm = (*demo_p & DEMOHEADER_RESPAWN) != 0;
+    longtics    = (*demo_p & DEMOHEADER_LONGTICS) != 0;
+    nomonsters  = (*demo_p & DEMOHEADER_NOMONSTERS) != 0;

     for (i = 0; i < MAXPLAYERS; i++)
-        playeringame[i] = *demo_p++;
+        playeringame[i] = (*demo_p++) != 0;

     precache = false;           // don't spend a lot of time in loadlevel
     G_InitNew(skill, episode, map);
@@ -1872,13 +1876,13 @@ void G_TimeDemo(char *name)
     map = *demo_p++;

     // Read special parameter bits: see G_RecordDemo() for details.
-    respawnparm = *demo_p & 32;
-    longtics    = *demo_p & 16;
-    nomonsters  = *demo_p & 2;
+    respawnparm = (*demo_p & DEMOHEADER_RESPAWN) != 0;
+    longtics    = (*demo_p & DEMOHEADER_LONGTICS) != 0;
+    nomonsters  = (*demo_p & DEMOHEADER_NOMONSTERS) != 0;

     for (i = 0; i < MAXPLAYERS; i++)
     {
-        playeringame[i] = *demo_p++;
+        playeringame[i] = (*demo_p++) != 0;
     }

     G_InitNew(skill, episode, map);
diff --git a/src/hexen/g_game.c b/src/hexen/g_game.c
index ad8539bc..270b4d08 100644
--- a/src/hexen/g_game.c
+++ b/src/hexen/g_game.c
@@ -1811,6 +1811,9 @@ void G_InitNew(skill_t skill, int episode, int map)
 */

 #define DEMOMARKER      0x80
+#define DEMOHEADER_RESPAWN    0x20
+#define DEMOHEADER_LONGTICS   0x10
+#define DEMOHEADER_NOMONSTERS 0x02

 void G_ReadDemoTiccmd(ticcmd_t * cmd)
 {
@@ -1951,15 +1954,15 @@ void G_RecordDemo(skill_t skill, int numplayers, int episode, int map,
     *demo_p = 1; // assume player one exists
     if (respawnparm)
     {
-        *demo_p += 32;
+        *demo_p |= DEMOHEADER_RESPAWN;
     }
     if (longtics)
     {
-        *demo_p += 16;
+        *demo_p |= DEMOHEADER_LONGTICS;
     }
     if (nomonsters)
     {
-        *demo_p += 2;
+        *demo_p |= DEMOHEADER_NOMONSTERS;
     }
     demo_p++;
     *demo_p++ = PlayerClass[0];
@@ -2002,13 +2005,13 @@ void G_DoPlayDemo(void)
     map = *demo_p++;

     // Read special parameter bits: see G_RecordDemo() for details.
-    respawnparm = *demo_p & 32;
-    longtics    = *demo_p & 16;
-    nomonsters  = *demo_p & 2;
+    respawnparm = (*demo_p & DEMOHEADER_RESPAWN) != 0;
+    longtics    = (*demo_p & DEMOHEADER_LONGTICS) != 0;
+    nomonsters  = (*demo_p & DEMOHEADER_NOMONSTERS) != 0;

     for (i = 0; i < maxplayers; i++)
     {
-        playeringame[i] = *demo_p++;
+        playeringame[i] = (*demo_p++) != 0;
         PlayerClass[i] = *demo_p++;
     }

@@ -2042,13 +2045,13 @@ void G_TimeDemo(char *name)
     map = *demo_p++;

     // Read special parameter bits: see G_RecordDemo() for details.
-    respawnparm = *demo_p & 32;
-    longtics    = *demo_p & 16;
-    nomonsters  = *demo_p & 2;
+    respawnparm = (*demo_p & DEMOHEADER_RESPAWN) != 0;
+    longtics    = (*demo_p & DEMOHEADER_LONGTICS) != 0;
+    nomonsters  = (*demo_p & DEMOHEADER_NOMONSTERS) != 0;

     for (i = 0; i < maxplayers; i++)
     {
-        playeringame[i] = *demo_p++;
+        playeringame[i] = (*demo_p++) != 0;
         PlayerClass[i] = *demo_p++;
     }