replaced stop/play buttons in game panel with save/load buttons
[rocksndiamonds.git] / src / game.h
index 86c26eeb9c90b2758ed9b3f10d587ba6aaab380f..3e62cf4d983ece67595577c665f65e67347dafe4 100644 (file)
 /* (not included here due to collisions with Emerald Mine engine definitions) */
 /* #include "main.h" */
 
-#define MAX_INVENTORY_SIZE     1000
+#define MAX_INVENTORY_SIZE             1000
 
-#define STD_NUM_KEYS           4
-#define MAX_NUM_KEYS           8
+#define STD_NUM_KEYS                   4
+#define MAX_NUM_KEYS                   8
 
-#define NUM_BELTS              4
-#define NUM_BELT_PARTS         3
+#define NUM_BELTS                      4
+#define NUM_BELT_PARTS                 3
+
+#define NUM_PANEL_INVENTORY            8
+#define NUM_PANEL_GRAPHICS             8
+#define NUM_PANEL_ELEMENTS             8
+#define NUM_PANEL_CE_SCORE             8
+
+#define STR_SNAPSHOT_MODE_OFF          "off"
+#define STR_SNAPSHOT_MODE_EVERY_STEP   "every_step"
+#define STR_SNAPSHOT_MODE_EVERY_MOVE   "every_move"
+#define STR_SNAPSHOT_MODE_DEFAULT      STR_SNAPSHOT_MODE_EVERY_MOVE
+
+#define SNAPSHOT_MODE_OFF              0
+#define SNAPSHOT_MODE_EVERY_STEP       1
+#define SNAPSHOT_MODE_EVERY_MOVE       2
+#define SNAPSHOT_MODE_DEFAULT          SNAPSHOT_MODE_EVERY_MOVE
 
-#define NUM_PANEL_INVENTORY    8
-#define NUM_PANEL_GRAPHICS     8
-#define NUM_PANEL_ELEMENTS     8
-#define NUM_PANEL_CE_SCORE     8
 
 struct GamePanelInfo
 {
@@ -90,12 +101,23 @@ struct GameButtonInfo
   struct XY pause;
   struct XY play;
 
+  struct XY undo;
+  struct XY redo;
+
+  struct XY save;
+  struct XY load;
+
   struct XY sound_music;
   struct XY sound_loops;
   struct XY sound_simple;
+};
 
-  struct XY save;
-  struct XY load;
+struct GameSnapshotInfo
+{
+  int mode;
+
+  byte last_action[MAX_PLAYERS];
+  boolean changed_action;
 };
 
 struct GameInfo
@@ -172,6 +194,9 @@ struct GameInfo
 
   /* values for random number generator initialization after snapshot */
   unsigned int num_random_calls;
+
+  /* values for game engine snapshot control */
+  struct GameSnapshotInfo snapshot;
 };
 
 struct PlayerInfo
@@ -346,13 +371,19 @@ void RequestQuitGame(boolean);
 unsigned int InitEngineRandom_RND(int);
 unsigned int RND(int);
 
-void FreeEngineSnapshot();
-void LoadEngineSnapshot();
-void SaveEngineSnapshot();
-boolean CheckEngineSnapshot();
+void FreeEngineSnapshotSingle();
+void FreeEngineSnapshotList();
+void LoadEngineSnapshotSingle();
+void SaveEngineSnapshotSingle();
+boolean SaveEngineSnapshotToList();
+void SaveEngineSnapshotToListInitial();
+boolean CheckEngineSnapshotSingle();
+boolean CheckEngineSnapshotList();
 
 void CreateGameButtons();
 void FreeGameButtons();
+void MapUndoRedoButtons();
+void UnmapUndoRedoButtons();
 void MapGameButtons();
 void UnmapGameButtons();
 void RedrawGameButtons();