added game engine support for playing native Boulder Dash levels
[rocksndiamonds.git] / src / game.h
index 653a6454722ac39dfc79b2cb22c8184ed095bda2..83c7f00cfd5ab151e93649aa8ae9f56579e26431 100644 (file)
 #define STR_SNAPSHOT_MODE_EVERY_COLLECT        "every_collect"
 #define STR_SNAPSHOT_MODE_DEFAULT      STR_SNAPSHOT_MODE_OFF
 
+#define STR_SCORES_TYPE_LOCAL_ONLY      "local_scores_only"
+#define STR_SCORES_TYPE_SERVER_ONLY     "server_scores_only"
+#define STR_SCORES_TYPE_LOCAL_AND_SERVER "local_and_server_scores"
+#define STR_SCORES_TYPE_DEFAULT                 STR_SCORES_TYPE_LOCAL_AND_SERVER
+
 #define SNAPSHOT_MODE_OFF              0
 #define SNAPSHOT_MODE_EVERY_STEP       1
 #define SNAPSHOT_MODE_EVERY_MOVE       2
@@ -47,6 +52,9 @@ struct GamePanelInfo
 {
   struct TextPosInfo level_number;
   struct TextPosInfo gems;
+  struct TextPosInfo gems_total;
+  struct TextPosInfo gems_collected;
+  struct TextPosInfo gems_score;
   struct TextPosInfo inventory_count;
   struct TextPosInfo inventory_first[NUM_PANEL_INVENTORY];
   struct TextPosInfo inventory_last[NUM_PANEL_INVENTORY];
@@ -118,6 +126,8 @@ struct GameButtonInfo
   struct XY pause2;
   struct XY load;
 
+  struct XY restart;
+
   struct XY sound_music;
   struct XY sound_loops;
   struct XY sound_simple;
@@ -126,12 +136,15 @@ struct GameButtonInfo
   struct XY panel_pause;
   struct XY panel_play;
 
+  struct XY panel_restart;
+
   struct XY panel_sound_music;
   struct XY panel_sound_loops;
   struct XY panel_sound_simple;
 
   struct XY touch_stop;
   struct XY touch_pause;
+  struct XY touch_restart;
 };
 
 struct GameSnapshotInfo
@@ -153,14 +166,21 @@ struct GameInfo
 
   // values for graphics engine customization
   int graphics_engine_version;
+  boolean use_native_bd_graphics_engine;
   boolean use_native_emc_graphics_engine;
   boolean use_native_sp_graphics_engine;
   boolean use_masked_pushing;
   boolean use_masked_elements;
+  boolean use_masked_elements_initial;
+  int forced_scroll_x;
+  int forced_scroll_y;
   int forced_scroll_delay_value;
   int scroll_delay_value;
   int tile_size;
 
+  // values for sound engine customization
+  boolean use_native_bd_sound_engine;
+
   // constant within running game
   int engine_version;
   int emulation;
@@ -197,7 +217,8 @@ struct GameInfo
 
   boolean explosions_delayed;
   boolean envelope_active;
-  boolean no_time_limit;       // (variable only in very special case)
+  boolean no_level_time_limit; // (variable only in very special case)
+  boolean time_limit;          // forced by levelset config or setup option
 
   int time_final;              // time (in seconds) or steps left or played
   int score_time_final;                // time (in frames) or steps played
@@ -235,12 +256,8 @@ struct GameInfo
   // values for special game initialization control
   boolean restart_level;
 
-  // trigger message to ask for restarting the game
-  char *restart_game_message;
-
   // values for special request dialog control
   boolean request_active;
-  boolean request_active_or_moving;
 
   // values for special game control
   int centered_player_nr;
@@ -270,6 +287,8 @@ struct GameInfo
   int LevelSolved_CountingTime;
   int LevelSolved_CountingScore;
   int LevelSolved_CountingHealth;
+
+  boolean RestartGameRequested;
 };
 
 struct PlayerInfo
@@ -372,7 +391,7 @@ struct PlayerInfo
   int push_delay;
   int push_delay_value;
 
-  unsigned int actual_frame_counter;
+  DelayCounter actual_frame_counter;
 
   int drop_delay;
   int drop_pressed_delay;
@@ -420,13 +439,16 @@ void GameEnd(void);
 void MergeServerScore(void);
 
 void InitPlayerGfxAnimation(struct PlayerInfo *, int, int);
+
 void Moving2Blocked(int, int, int *, int *);
 void Blocked2Moving(int, int, int *, int *);
+
 void DrawDynamite(int, int);
 
 void StartGameActions(boolean, boolean, int);
 
 void GameActions(void);
+void GameActions_BD_Main(void);
 void GameActions_EM_Main(void);
 void GameActions_SP_Main(void);
 void GameActions_MM_Main(void);
@@ -448,9 +470,10 @@ void RaiseScoreElement(int);
 
 void RequestQuitGameExt(boolean, boolean, char *);
 void RequestQuitGame(boolean);
-void RequestRestartGame(char *);
-void CheckGameOver(void);
 
+boolean CheckRestartGame(void);
+boolean checkGameRunning(void);
+boolean checkGamePlaying(void);
 boolean checkGameSolved(void);
 boolean checkGameFailed(void);
 boolean checkGameEnded(void);
@@ -470,8 +493,8 @@ boolean CheckEngineSnapshotList(void);
 
 void CreateGameButtons(void);
 void FreeGameButtons(void);
+void MapLoadSaveButtons(void);
 void MapUndoRedoButtons(void);
-void UnmapUndoRedoButtons(void);
 void ModifyPauseButtons(void);
 void MapGameButtons(void);
 void UnmapGameButtons(void);