fixed bug when using Shift+click (IntelliDraw) in editor using empty space
[rocksndiamonds.git] / src / game.h
index 553ec4b7498b516879a041fafb2f736e304189f7..5a96d4fc630cb23fc67d253984b1ec7b8afdfe8b 100644 (file)
@@ -186,10 +186,29 @@ struct GameInfo
   int belt_dir_nr[4];
   int switchgate_pos;
   int wind_direction;
+
   boolean explosions_delayed;
   boolean envelope_active;
   boolean no_time_limit;       // (variable only in very special case)
 
+  int score;
+  int score_final;
+
+  int health;
+  int health_final;
+
+  int gems_still_needed;
+  int sokoban_fields_still_needed;
+  int sokoban_objects_still_needed;
+  int lights_still_needed;
+  int players_still_needed;
+  int friends_still_needed;
+
+  int robot_wheel_x, robot_wheel_y;
+  int exit_x, exit_y;
+
+  boolean all_players_gone;
+
   // values for the new EMC elements
   int lenses_time_left;
   int magnify_time_left;
@@ -221,6 +240,20 @@ struct GameInfo
 
   // values for game engine snapshot control
   struct GameSnapshotInfo snapshot;
+
+  // values for handling states for solved level and game over
+  boolean LevelSolved;
+  boolean GamePlayed;
+  boolean GameOver;
+
+  boolean LevelSolved_GameWon;
+  boolean LevelSolved_GameEnd;
+  boolean LevelSolved_SaveTape;
+  boolean LevelSolved_SaveScore;
+
+  int LevelSolved_CountingTime;
+  int LevelSolved_CountingScore;
+  int LevelSolved_CountingHealth;
 };
 
 struct PlayerInfo
@@ -234,6 +267,7 @@ struct PlayerInfo
 
   boolean killed;              // player maybe present/active, but killed
   boolean reanimated;          // player maybe killed, but reanimated
+  boolean buried;              // player finally killed and removed
 
   int index_nr;                        // player number (0 to 3)
   int index_bit;               // player number bit (1 << 0 to 1 << 3)
@@ -241,12 +275,12 @@ struct PlayerInfo
   int client_nr;               // network client identifier
 
   byte action;                 // action from local input device
-  byte mapped_action;          // action mapped from device to player
   byte effective_action;       /* action acknowledged from network server
                                   or summarized over all configured input
                                   devices when in single player mode */
   byte programmed_action;      /* action forced by game itself (like moving
                                   through doors); overrides other actions */
+  byte snap_action;            // action from TAS snap keys
 
   struct MouseActionInfo mouse_action;          // (used by MM engine only)
   struct MouseActionInfo effective_mouse_action; // (used by MM engine only)
@@ -268,17 +302,6 @@ struct PlayerInfo
 
   boolean gravity;
 
-  boolean LevelSolved, GameOver;
-
-  boolean LevelSolved_GameWon;
-  boolean LevelSolved_GameEnd;
-  boolean LevelSolved_SaveTape;
-  boolean LevelSolved_SaveScore;
-
-  int LevelSolved_CountingTime;
-  int LevelSolved_CountingScore;
-  int LevelSolved_CountingHealth;
-
   int last_move_dir;
 
   boolean is_active;
@@ -340,17 +363,6 @@ struct PlayerInfo
 
   int step_counter;
 
-  int score;
-  int score_final;
-
-  int health;
-  int health_final;
-
-  int gems_still_needed;
-  int sokobanfields_still_needed;
-  int lights_still_needed;
-  int players_still_needed;
-  int friends_still_needed;
   int key[MAX_NUM_KEYS];
   int num_white_keys;
   int dynabomb_count, dynabomb_size, dynabombs_left, dynabomb_xl;