fixed re-opening request door after stopping network game
[rocksndiamonds.git] / src / tape.c
index fa73f3f99c64b43c55421faba707a68cdc5caa82..1e072cd4ffa567c9543e5999d10db07c52ce3eaf 100644 (file)
@@ -1079,12 +1079,18 @@ void TapeQuickLoad()
   }
 }
 
-boolean InsertSolutionTape()
+boolean hasSolutionTape()
 {
+  boolean tape_file_exists = fileExists(getSolutionTapeFilename(level_nr));
   boolean level_has_tape = (level.game_engine_type == GAME_ENGINE_TYPE_SP &&
                            level.native_sp_level->demo.is_available);
 
-  if (!fileExists(getSolutionTapeFilename(level_nr)) && !level_has_tape)
+  return (tape_file_exists || level_has_tape);
+}
+
+boolean InsertSolutionTape()
+{
+  if (!hasSolutionTape())
   {
     Request("No solution tape for this level!", REQ_CONFIRM);
 
@@ -1311,7 +1317,8 @@ void CreateTapeButtons()
 
   for (i = 0; i < NUM_TAPE_BUTTONS; i++)
   {
-    struct GraphicInfo *gfx = &graphic_info[tapebutton_info[i].graphic];
+    int graphic = tapebutton_info[i].graphic;
+    struct GraphicInfo *gfx = &graphic_info[graphic];
     struct XY *pos = tapebutton_info[i].pos;
     struct GadgetInfo *gi;
     int gd_x = gfx->src_x;
@@ -1321,6 +1328,7 @@ void CreateTapeButtons()
     int id = i;
 
     gi = CreateGadget(GDI_CUSTOM_ID, id,
+                     GDI_IMAGE_ID, graphic,
                      GDI_INFO_TEXT, tapebutton_info[i].infotext,
                      GDI_X, VX + pos->x,
                      GDI_Y, VY + pos->y,