fixed handling of player at fake acid for EM engine
[rocksndiamonds.git] / src / game_em / emerald.h
index a74769fd9f08855bd2b788d1bab7e56d38e8644f..01219b9ea9726f4a9d743f70117ad05f8aced617 100644 (file)
@@ -112,6 +112,15 @@ enum
   Xfake_acid_7,
   Xfake_acid_8,
 
+  Xfake_acid_1_player,         /* newly added to EM engine */
+  Xfake_acid_2_player,
+  Xfake_acid_3_player,
+  Xfake_acid_4_player,
+  Xfake_acid_5_player,
+  Xfake_acid_6_player,
+  Xfake_acid_7_player,
+  Xfake_acid_8_player,
+
   Xgrass,
   Ygrass_nB,
   Ygrass_eB,
@@ -620,14 +629,14 @@ enum
 
 struct PLAYER
 {
+  int num;                     /* player number */
   int anim;
+
   int x;
   int y;
   int prev_x;
   int prev_y;
 
-  int num;                     /* player number */
-
   boolean exists;              /* flag if player exists in cave */
   boolean alive;               /* flag if player is alive */
 
@@ -637,13 +646,13 @@ struct PLAYER
 
   int last_move_dir;
 
-  int joy_n:1;
-  int joy_e:1;
-  int joy_s:1;
-  int joy_w:1;
-  int joy_snap:1;
-  int joy_drop:1;
-  int joy_stick:1;
+  boolean joy_n;
+  boolean joy_e;
+  boolean joy_s;
+  boolean joy_w;
+  boolean joy_snap;
+  boolean joy_drop;
+  boolean joy_stick;
 };
 
 struct LOGIC
@@ -674,34 +683,35 @@ struct LOGIC
   int magnify_score;           /* score for collecting magnifier */
   int exit_score;              /* score for entering exit */
 
-  int android_move_time;       /* android move reset time */
-  int android_clone_time;      /* android clone reset time */
-  int ball_time;               /* ball reset time */
-  int amoeba_time;             /* amoeba speed */
-  int wonderwall_time;         /* wonderwall time */
-  int wheel_time;              /* wheel reset time */
-  int wheel_x;                 /* wheel x pos */
-  int wheel_y;                 /* wheel y pos */
-  int lenses_time;             /* lenses reset time */
-  int magnify_time;            /* magnify reset time */
-  int wind_time;               /* wind reset time */
+  int android_move_time;       /* reset time for android movement */
+  int android_clone_time;      /* reset time for android cloning */
+  int ball_time;               /* reset time for ball activity */
+  int amoeba_time;             /* amoeba growth speed */
+  int wonderwall_time;         /* reset time for wonderwall activity */
+  int wheel_time;              /* reset time for wheel activity */
+  int wheel_x;                 /* wheel x position */
+  int wheel_y;                 /* wheel y position */
+  int lenses_time;             /* reset time for lenses activity */
+  int magnify_time;            /* reset time for magnifier activity */
+  int wind_time;               /* reset time for wind activity */
   int wind_direction;          /* wind direction */
 
-  int ball_random;             /* ball is random flag */
-  int ball_state;              /* ball active flag */
-  int wonderwall_state;                /* wonderwall active flag */
-  int wheel_cnt;               /* wheel counter */
-  int lenses_cnt;              /* lenses counter */
-  int magnify_cnt;             /* magnify counter */
-  int wind_cnt;                        /* wind time counter */
-
-  int android_move_cnt;                /* android move counter */
-  int android_clone_cnt;       /* android clone counter */
-  int ball_cnt;                        /* ball counter */
-  int ball_pos;                        /* ball array pos counter */
-  int eater_pos;               /* eater array pos */
-  int shine_cnt;               /* shine counter for emerald/diamond */
-
+  boolean ball_random;         /* flag if ball is random */
+  boolean ball_active;         /* flag if ball is already active */
+  boolean wonderwall_active;   /* flag if wonderwall is already active */
+
+  int wheel_cnt;               /* counter for wheel activity */
+  int lenses_cnt;              /* counter for lenses activity */
+  int magnify_cnt;             /* counter for magnifier activity */
+  int wind_cnt;                        /* counter for wind activity */
+  int android_move_cnt;                /* counter for android movement */
+  int android_clone_cnt;       /* counter for android cloning */
+  int ball_cnt;                        /* counter for ball activity */
+  int ball_pos;                        /* counter for ball array position */
+  int eater_pos;               /* counter for eater array position */
+  int shine_cnt;               /* counter for emerald/diamond shining */
+
+  int num_eater_arrays;                /* number of eater data arrays used */
   int num_ball_arrays;         /* number of ball data arrays used */
 
   int home_initial;            /* number of players (initial) */
@@ -709,6 +719,8 @@ struct LOGIC
                                /* 0 == all players at home */
 
   boolean testmode;            /* test mode */
+  boolean infinite;            /* flag for infinitely wide cave */
+  boolean infinite_true;       /* flag for truely infinitely wide cave */
   boolean killed_out_of_time;  /* kill player due to time out */
 
   int exit_x, exit_y;          /* kludge for playing player exit sound */