moved initial cave data to level structure for EM engine
[rocksndiamonds.git] / src / game_em / emerald.h
index 4e2d8ab99a875eddc5a1c0e07be491f59192f33c..8e17761d8785402c1b32625cedcbf1b7565837c7 100644 (file)
@@ -60,9 +60,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 /*
   -----------------------------------------------------------------------------
   definition of elements used in the Emerald Mine Club engine;
-  the element names have the following properties:
+  the element names (mostly) have the following properties:
   - elements that start with 'X' can be stored in a level file
-  - elements that start with 'Y' indicate moving elements
+  - elements that start with 'Y' indicate moving or active elements
   - elements that end with 'B' are the "backside" of moving elements
   -----------------------------------------------------------------------------
 */
@@ -370,16 +370,16 @@ enum
   Ydrip_2_sB,
 
   Xwonderwall,
-  XwonderwallB,
+  Ywonderwall,
 
   Xwheel,
-  XwheelB,
+  Ywheel,
 
   Xswitch,
-  XswitchB,
+  Yswitch,
 
   Xbumper,
-  XbumperB,
+  Ybumper,
 
   Xacid_nw,
   Xacid_ne,
@@ -388,13 +388,13 @@ enum
   Xacid_se,
 
   Xfake_blank,
-  Xfake_blankB,
+  Yfake_blank,
 
   Xfake_grass,
-  Xfake_grassB,
+  Yfake_grass,
 
   Xfake_amoeba,                        /* dripper */
-  Xfake_amoebaB,
+  Yfake_amoeba,
 
   Xlenses,
 
@@ -620,10 +620,6 @@ enum
 
 struct LEVEL
 {
-  int home_initial;            /* number of players (initial) */
-  int home;                    /* number of players not yet at home */
-                               /* 0 == all players at home */
-
   int width;                   /* playfield width */
   int height;                  /* playfield height */
 
@@ -632,12 +628,13 @@ struct LEVEL
   int right;                   /* playfield right edge */
   int bottom;                  /* playfield bottom edge */
 
+  int player_x[MAX_PLAYERS];   /* player x pos */
+  int player_y[MAX_PLAYERS];   /* player y pos */
+
   int time_seconds;            /* available time (seconds) */
   int time_initial;            /* available time (initial) */
   int time;                    /* time remaining (runtime) */
 
-  boolean killed_out_of_time;  /* kill player due to time out */
-
   int required_initial;                /* emeralds needed (initial) */
   int required;                        /* emeralds needed (runtime) */
 
@@ -695,13 +692,23 @@ struct LEVEL
   int wonderwall_state;                /* wonderwall active flag */
   int wonderwall_time_initial; /* wonderwall time (initial) */
   int wonderwall_time;         /* wonderwall time */
-  short eater_array[8][9];     /* eater data */
-  short ball_array[8][8];      /* ball data */
-  short android_array[TILE_MAX];/* android clone table */
+
   int num_ball_arrays;         /* number of ball data arrays used */
 
+  int home_initial;            /* number of players (initial) */
+  int home;                    /* number of players not yet at home */
+                               /* 0 == all players at home */
+
+  boolean killed_out_of_time;  /* kill player due to time out */
+
   int exit_x, exit_y;          /* kludge for playing player exit sound */
 
+  short eater_array[8][9];             /* eater data */
+  short ball_array[8][8];              /* ball data */
+  short android_array[TILE_MAX];       /* android clone table */
+
+  short cave_raw[CAVE_WIDTH][CAVE_HEIGHT];
+
   short cavebuf[CAVE_BUFFER_WIDTH][CAVE_BUFFER_HEIGHT];
   short nextbuf[CAVE_BUFFER_WIDTH][CAVE_BUFFER_HEIGHT];
   short drawbuf[CAVE_BUFFER_WIDTH][CAVE_BUFFER_HEIGHT];
@@ -730,8 +737,6 @@ struct PLAYER
   int keys;
   int anim;
 
-  int x_initial;
-  int y_initial;
   int x;
   int y;
   int oldx;