-/***********************************************************
-* Rocks'n'Diamonds -- McDuffin Strikes Back! *
-*----------------------------------------------------------*
-* (c) 1995-2006 Artsoft Entertainment *
-* Holger Schemel *
-* Detmolder Strasse 189 *
-* 33604 Bielefeld *
-* Germany *
-* e-mail: info@artsoft.org *
-*----------------------------------------------------------*
-* game.h *
-***********************************************************/
+// ============================================================================
+// Rocks'n'Diamonds - McDuffin Strikes Back!
+// ----------------------------------------------------------------------------
+// (c) 1995-2014 by Artsoft Entertainment
+// Holger Schemel
+// info@artsoft.org
+// http://www.artsoft.org/
+// ----------------------------------------------------------------------------
+// game.h
+// ============================================================================
#ifndef GAME_H
#define GAME_H
/* (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_EVERY_COLLECT "every_collect"
+#define STR_SNAPSHOT_MODE_DEFAULT STR_SNAPSHOT_MODE_OFF
+
+#define SNAPSHOT_MODE_OFF 0
+#define SNAPSHOT_MODE_EVERY_STEP 1
+#define SNAPSHOT_MODE_EVERY_MOVE 2
+#define SNAPSHOT_MODE_EVERY_COLLECT 3
+#define SNAPSHOT_MODE_DEFAULT SNAPSHOT_MODE_OFF
-#define NUM_PANEL_INVENTORY 8
-#define NUM_PANEL_GRAPHICS 8
-#define NUM_PANEL_ELEMENTS 8
-#define NUM_PANEL_CE_SCORE 8
-#if 1
struct GamePanelInfo
{
struct TextPosInfo level_number;
struct GameButtonInfo
{
- struct Rect stop;
- struct Rect pause;
- struct Rect play;
- struct Rect sound_music;
- struct Rect sound_loops;
- struct Rect sound_simple;
-};
+ struct XY stop;
+ struct XY pause;
+ struct XY play;
-#else
+ struct XY undo;
+ struct XY redo;
-struct GamePanelInfo
+ struct XY save;
+ struct XY pause2;
+ struct XY load;
+
+ struct XY sound_music;
+ struct XY sound_loops;
+ struct XY sound_simple;
+};
+
+struct GameSnapshotInfo
{
- struct XY level;
- struct XY gems;
- struct XY inventory;
- struct XY keys;
- struct XY score;
- struct XY time;
+ int mode;
+
+ byte last_action[MAX_PLAYERS];
+ boolean changed_action;
+ boolean collected_item;
};
-#endif
struct GameInfo
{
struct GameButtonInfo button;
/* values for graphics engine customization */
+ int graphics_engine_version;
boolean use_native_emc_graphics_engine;
boolean use_native_sp_graphics_engine;
boolean use_masked_pushing;
/* values for random number generator initialization after snapshot */
unsigned int num_random_calls;
+
+ /* values for game engine snapshot control */
+ struct GameSnapshotInfo snapshot;
};
struct PlayerInfo
void GameActions(void);
void GameActions_EM_Main();
void GameActions_SP_Main();
+void GameActions_RND_Main();
void GameActions_RND();
void ScrollLevel(int, int);
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();