added step-based engine snapshots to undo/redo game steps (continued)
[rocksndiamonds.git] / src / tape.c
index 342f346df3703fabf00f668a17c19b528d67f162..a14690d3b23daaf4c7bf1c5150699ff945ef66c3 100644 (file)
@@ -195,7 +195,7 @@ static void DrawVideoDisplay_Graphics(unsigned int state, unsigned int value)
   static struct
   {
     int graphic;
-    struct Rect *pos;
+    struct XY *pos;
   }
   video_pos[NUM_TAPE_FUNCTIONS][NUM_TAPE_FUNCTION_PARTS] =
   {
@@ -253,7 +253,7 @@ static void DrawVideoDisplay_Graphics(unsigned int state, unsigned int value)
       for (j = 0; j < NUM_TAPE_FUNCTION_PARTS; j++)    /* label or symbol */
       {
        int graphic = video_pos[i][j].graphic;
-       struct Rect *pos = video_pos[i][j].pos;
+       struct XY *pos = video_pos[i][j].pos;
 
        if (graphic == -1 ||
            pos->x == -1 ||
@@ -740,9 +740,14 @@ void TapeTogglePause(boolean toggle_manual)
       TapeAppendRecording();
 
       if (!CheckEngineSnapshot())
-       SaveEngineSnapshot();
+       SaveEngineSnapshotSingle();
     }
   }
+
+  if (tape.pausing)
+    MapUndoRedoButtons();
+  else
+    MapStopPlayButtons();
 }
 
 void TapeStartPlaying()
@@ -1002,7 +1007,7 @@ void TapeQuickSave()
   }
 
   if (SaveTapeChecked(tape.level_nr))
-    SaveEngineSnapshot();
+    SaveEngineSnapshotSingle();
 }
 
 void TapeQuickLoad()
@@ -1031,7 +1036,7 @@ void TapeQuickLoad()
   {
     TapeStartGamePlaying();
 
-    LoadEngineSnapshot();
+    LoadEngineSnapshotSingle();
 
     DrawCompleteVideoDisplay();
 
@@ -1217,7 +1222,7 @@ void AutoPlayTape()
 static struct
 {
   int graphic;
-  struct Rect *pos;
+  struct XY *pos;
   int gadget_id;
   char *infotext;
 } tapebutton_info[NUM_TAPE_BUTTONS] =
@@ -1256,7 +1261,7 @@ void CreateTapeButtons()
   for (i = 0; i < NUM_TAPE_BUTTONS; i++)
   {
     struct GraphicInfo *gfx = &graphic_info[tapebutton_info[i].graphic];
-    struct Rect *pos = tapebutton_info[i].pos;
+    struct XY *pos = tapebutton_info[i].pos;
     struct GadgetInfo *gi;
     int gd_x = gfx->src_x;
     int gd_y = gfx->src_y;