rnd-20070104-2-src
[rocksndiamonds.git] / src / game.h
index f855387a33568ae19c90942a786a34a60e9c2232..cf5d2c285b993d93f79c0394cbd7ab29c170bf73 100644 (file)
@@ -1,7 +1,7 @@
 /***********************************************************
 * Rocks'n'Diamonds -- McDuffin Strikes Back!               *
 *----------------------------------------------------------*
-* (c) 1995-2002 Artsoft Entertainment                      *
+* (c) 1995-2006 Artsoft Entertainment                      *
 *               Holger Schemel                             *
 *               Detmolder Strasse 189                      *
 *               33604 Bielefeld                            *
@@ -67,13 +67,11 @@ struct GameInfo
   boolean explosions_delayed;
   boolean envelope_active;
 
-#if 1
   /* values for the new EMC elements */
   int lenses_time_left;
   int magnify_time_left;
   boolean ball_state;
   int ball_content_nr;
-#endif
 
   /* values for player idle animation (no effect on engine) */
   int player_boring_delay_fixed;
@@ -88,6 +86,9 @@ struct GameInfo
   int centered_player_nr;
   int centered_player_nr_next;
   boolean set_centered_player;
+
+  /* values for random number generator initialization after snapshot */
+  unsigned long num_random_calls;
 };
 
 struct PlayerInfo
@@ -95,6 +96,7 @@ struct PlayerInfo
   boolean present;             /* player present in level playfield */
   boolean connected;           /* player connected (locally or via network) */
   boolean active;              /* player present and connected */
+  boolean killed;              /* player maybe present/active, but killed */
 
   int index_nr;                        /* player number (0 to 3) */
   int index_bit;               /* player number bit (1 << 0 to 1 << 3) */
@@ -185,6 +187,8 @@ struct PlayerInfo
   int step_counter;
 
   int score;
+  int score_final;
+
   int gems_still_needed;
   int sokobanfields_still_needed;
   int lights_still_needed;
@@ -199,9 +203,8 @@ struct PlayerInfo
   int inventory_size;
 };
 
-
 extern struct GameInfo         game;
-extern struct PlayerInfo       stored_player[], *local_player;
+extern struct PlayerInfo       stored_player[MAX_PLAYERS], *local_player;
 
 
 #ifdef DEBUG
@@ -238,8 +241,18 @@ void PlayLevelSound_EM(int, int, int, int);
 
 void RaiseScore(int);
 void RaiseScoreElement(int);
+
+void RequestQuitGameExt(boolean, boolean, char *);
 void RequestQuitGame(boolean);
 
+unsigned int InitEngineRandom_RND(long);
+unsigned int RND(int);
+
+void FreeEngineSnapshot();
+void LoadEngineSnapshot();
+void SaveEngineSnapshot();
+boolean CheckEngineSnapshot();
+
 void CreateGameButtons();
 void FreeGameButtons();
 void UnmapGameButtons();