added flag for open request door after request (not used yet)
authorHolger Schemel <holger.schemel@virtion.de>
Mon, 6 Jan 2025 19:39:45 +0000 (20:39 +0100)
committerHolger Schemel <holger.schemel@virtion.de>
Mon, 6 Jan 2025 19:39:46 +0000 (20:39 +0100)
src/game.c
src/game.h
src/tools.c

index dd3106ca2faeb63d4ede89132b33e67d0ca6d9cd..8ff8c6927348e0d2e007344315bdc7f3a2ad67d4 100644 (file)
@@ -4755,6 +4755,7 @@ void InitGame(void)
   }
 
   game.restart_level = FALSE;
+  game.request_open = FALSE;
   game.request_active = FALSE;
   game.envelope_active = FALSE;
   game.any_door_active = FALSE;
index d481847844dc825592c5fb9c31e9934c9de61e0d..713eb8c96cb60bd53d49b7d4bc4e3516acbf825f 100644 (file)
@@ -257,6 +257,7 @@ struct GameInfo
   boolean restart_level;
 
   // values for special request dialog control
+  boolean request_open;
   boolean request_active;
   boolean envelope_active;
   boolean any_door_active;
index 9f14372660196030446045c09a2a937aa28e6d54..1053e80757a6dddca52c09b7d80137ac02ac596b 100644 (file)
@@ -5058,6 +5058,12 @@ static int RequestDoor(char *text, unsigned int req_state)
     if (((old_door_state & DOOR_OPEN_1) && !(req_state & REQ_STAY_CLOSED)) ||
        (req_state & REQ_REOPEN))
       OpenDoor(DOOR_OPEN_1 | DOOR_COPY_BACK);
+
+    game.request_open = FALSE;
+  }
+  else
+  {
+    game.request_open = TRUE;
   }
 
   return result;
@@ -5339,6 +5345,9 @@ unsigned int CloseDoor(unsigned int door_state)
     door_state &= ~DOOR_NO_COPY_BACK;
   }
 
+  if (door_state & DOOR_CLOSE_1)
+    game.request_open = FALSE;
+
   return MoveDoor(door_state);
 }