foxygit / doom Log in
commit b05a3f9448a690bf1d6805ed20081227921f64d9
Author:     Simon Howard <fraggle@gmail.com>
AuthorDate: Thu Sep 25 20:00:31 2008 +0000
Commit:     Simon Howard <fraggle@gmail.com>
CommitDate: Thu Sep 25 20:00:31 2008 +0000

    Remove ExtendedWAD variable; use gamemode == retail.

    Subversion-branch: /branches/raven-branch
    Subversion-revision: 1286
---
 src/heretic/am_map.c  | 14 +++++++++++++-
 src/heretic/d_main.c  | 15 +++++++--------
 src/heretic/in_lude.c |  2 +-
 src/heretic/m_misc.c  | 47 +++++++++++++----------------------------------
 src/heretic/mn_menu.c |  3 ++-
 5 files changed, 36 insertions(+), 45 deletions(-)

diff --git a/src/heretic/am_map.c b/src/heretic/am_map.c
index 923c4fbd..ec003c0f 100644
--- a/src/heretic/am_map.c
+++ b/src/heretic/am_map.c
@@ -1453,6 +1453,8 @@ void AM_drawCrosshair(int color)

 void AM_Drawer(void)
 {
+    int numepisodes;
+
     if (!automapactive)
         return;

@@ -1471,7 +1473,17 @@ void AM_Drawer(void)
     {
         AM_drawkeys();
     }
-    if ((gameepisode < (ExtendedWAD ? 6 : 4)) && gamemap < 10)
+
+    if (gamemode == retail)
+    {
+        numepisodes = 5;
+    }
+    else
+    {
+        numepisodes = 3;
+    }
+
+    if (gameepisode <= numepisodes && gamemap < 10)
     {
         MN_DrTextA(LevelNames[(gameepisode - 1) * 9 + gamemap - 1], 20, 145);
     }
diff --git a/src/heretic/d_main.c b/src/heretic/d_main.c
index 54d51238..309079b6 100644
--- a/src/heretic/d_main.c
+++ b/src/heretic/d_main.c
@@ -39,7 +39,6 @@

 GameMission_t gamemission = heretic;
 GameMode_t gamemode = indetermined;
-boolean ExtendedWAD = false;    // true if episodes 4 and 5 present

 boolean nomonsters;             // checkparm of -nomonsters
 boolean respawnparm;            // checkparm of -respawn
@@ -926,18 +925,18 @@ void D_DoomMain(void)
     }

     if (W_CheckNumForName("E2M1") == -1)
-    {                           // Can't find episode 2 maps, must be the shareware WAD
+    {
         gamemode = shareware;
     }
+    else if (W_CheckNumForName("EXTENDED") != -1)
+    {
+        // Presence of the EXTENDED lump indicates the retail version
+
+        gamemode = retail;
+    }
     else
     {
         gamemode = registered;
-
-        // Is this the extended WAD?
-        if (W_CheckNumForName("EXTENDED") != -1)
-        {
-            ExtendedWAD = true;
-        }
     }

 #ifdef __WATCOMC__
diff --git a/src/heretic/in_lude.c b/src/heretic/in_lude.c
index c64bd55b..38c84631 100644
--- a/src/heretic/in_lude.c
+++ b/src/heretic/in_lude.c
@@ -734,7 +734,7 @@ void IN_DrawSingleStats(void)
         sounds++;
     }

-    if (!ExtendedWAD || gameepisode < 4)
+    if (gamemode != retail || gameepisode <= 3)
     {
         IN_DrTextB("TIME", 85, 160);
         IN_DrawTime(155, 160, hours, minutes, seconds);
diff --git a/src/heretic/m_misc.c b/src/heretic/m_misc.c
index ceb56cfb..39674e4b 100644
--- a/src/heretic/m_misc.c
+++ b/src/heretic/m_misc.c
@@ -48,42 +48,21 @@ boolean M_ValidEpisodeMap(int episode, int map)
     {
         return false;
     }
-    if (gamemode == shareware)
-    {                           // Shareware version checks
-        if (episode != 1)
-        {
-            return false;
-        }
-    }
-    else if (ExtendedWAD)
-    {                           // Extended version checks
-        if (episode == 6)
-        {
-            if (map > 3)
-            {
-                return false;
-            }
-        }
-        else if (episode > 5)
-        {
-            return false;
-        }
-    }
-    else
-    {                           // Registered version checks
-        if (episode == 4)
-        {
-            if (map != 1)
-            {
-                return false;
-            }
-        }
-        else if (episode > 3)
-        {
+
+    switch (gamemode)
+    {
+        case shareware:
+            return episode == 1;
+
+        case retail:
+            return episode <= 5 || (episode == 6 && map <= 3);
+
+        case registered:
+            return episode <= 3 || (episode == 4 && map == 1);
+
+        default:
             return false;
-        }
     }
-    return true;
 }

 //---------------------------------------------------------------------------
diff --git a/src/heretic/mn_menu.c b/src/heretic/mn_menu.c
index 716282d6..f295c076 100644
--- a/src/heretic/mn_menu.c
+++ b/src/heretic/mn_menu.c
@@ -303,7 +303,8 @@ void MN_Init(void)
     MenuActive = false;
     messageson = true;
     SkullBaseLump = W_GetNumForName("M_SKL00");
-    if (ExtendedWAD)
+
+    if (gamemode == retail)
     {                           // Add episodes 4 and 5 to the menu
         EpisodeMenu.itemCount = 5;
         EpisodeMenu.y -= ITEM_HEIGHT;