foxygit / doom Log in
commit 19659f3eab0614465577ac71731b4bdce67ce30c
Author:     Fabian Greffrath <fabian@greffrath.com>
AuthorDate: Mon Mar 23 12:12:08 2015 +0100
Commit:     Fabian Greffrath <fabian@greffrath.com>
CommitDate: Mon Mar 23 12:12:08 2015 +0100

    maintain an explicit switch list for the demo version

    instead of interating through the list for the full version
    and letting missing texture lumps slip through.
---
 src/hexen/p_switch.c | 30 ++++++++++++++++++++++--------
 1 file changed, 22 insertions(+), 8 deletions(-)

diff --git a/src/hexen/p_switch.c b/src/hexen/p_switch.c
index 92bd0be4..a90269a7 100644
--- a/src/hexen/p_switch.c
+++ b/src/hexen/p_switch.c
@@ -25,7 +25,14 @@
 //      CHANGE THE TEXTURE OF A WALL SWITCH TO ITS OPPOSITE
 //
 //==================================================================
-switchlist_t alphSwitchList[] = {
+switchlist_t alphSwitchListDemo[] = {
+    {"SW_1_UP", "SW_1_DN", SFX_SWITCH1},
+    {"SW_2_UP", "SW_2_DN", SFX_SWITCH1},
+    {"SW52_OFF", "SW52_ON", SFX_SWITCH2},
+    {"\0", "\0", 0}
+};
+
+switchlist_t alphSwitchListFull[] = {
     {"SW_1_UP", "SW_1_DN", SFX_SWITCH1},
     {"SW_2_UP", "SW_2_DN", SFX_SWITCH1},
     {"VALVE1", "VALVE2", SFX_VALVE_TURN},
@@ -39,6 +46,8 @@ switchlist_t alphSwitchList[] = {
     {"\0", "\0", 0}
 };

+switchlist_t *alphSwitchList = NULL;
+
 int switchlist[MAXSWITCHES * 2];
 int numswitches;
 button_t buttonlist[MAXBUTTONS];
@@ -58,6 +67,18 @@ void P_InitSwitchList(void)
     int i;
     int index;

+    if (!alphSwitchList)
+    {
+        if (gamemode == shareware)
+        {
+            alphSwitchList = alphSwitchListDemo;
+        }
+        else
+        {
+            alphSwitchList = alphSwitchListFull;
+        }
+    }
+
     for (index = 0, i = 0; i < MAXSWITCHES; i++)
     {
         if (!alphSwitchList[i].soundID)
@@ -66,13 +87,6 @@ void P_InitSwitchList(void)
             switchlist[index] = -1;
             break;
         }
-
-        if (R_CheckTextureNumForName(alphSwitchList[i].name1) == -1 &&
-            gamemode == shareware)
-        {
-            continue;
-        }
-
         switchlist[index++] = R_TextureNumForName(alphSwitchList[i].name1);
         switchlist[index++] = R_TextureNumForName(alphSwitchList[i].name2);
     }