rnd-20050307-1-src
[rocksndiamonds.git] / src / game_em / main_em.h
index 7620cc2fd194129ff237ca884b850ff4da904973..345107efb821e9cf93676f865badbc1fb3b2e54c 100644 (file)
@@ -1,6 +1,9 @@
 #ifndef MAIN_EM_H
 #define MAIN_EM_H
 
+#include "../engines.h"
+
+
 /* 2000-07-30T11:06:03Z ---------------------------------------------------- */
 
 #define EM_MAX_CAVE_WIDTH              102
 #define EM_ENGINE_BAD_ROLL
 #define EM_ENGINE_BAD_SPRING
 
+
+/*
+  -----------------------------------------------------------------------------
+  definition of elements used in the Emerald Mine Club engine;
+  the element names have the following properties:
+  - elements that start with an 'X' can be stored in a level file;
+  - elements that start with an 'Y' indicate moving elements;
+  - elements that end with a 'B' are the "backside" of a moving element.
+  -----------------------------------------------------------------------------
+*/
+
 enum
 {
   Xblank = 0,          /* still */
@@ -246,6 +260,22 @@ enum
   Xball_2,
   Xball_2B,
   Yball_eat,
+
+#if 1
+  Ykey_1_eat,
+  Ykey_2_eat,
+  Ykey_3_eat,
+  Ykey_4_eat,
+  Ykey_5_eat,
+  Ykey_6_eat,
+  Ykey_7_eat,
+  Ykey_8_eat,
+  Ylenses_eat,
+  Ymagnify_eat,
+  Ygrass_eat,
+  Ydirt_eat,
+#endif
+
   Xgrow_ns,
   Ygrow_ns_eat,
   Xgrow_ew,
@@ -332,6 +362,18 @@ enum
   Xfake_door_6,
   Xfake_door_7,
   Xfake_door_8,
+
+#if 1
+  Xfake_acid_1,
+  Xfake_acid_2,
+  Xfake_acid_3,
+  Xfake_acid_4,
+  Xfake_acid_5,
+  Xfake_acid_6,
+  Xfake_acid_7,
+  Xfake_acid_8,
+#endif
+
   Xsteel_1,
   Xsteel_2,
   Xsteel_3,
@@ -425,6 +467,16 @@ enum
   TILE_MAX
 };
 
+enum
+{
+  SPR_still = 0,
+  SPR_walk  = 1,
+  SPR_push  = 5,
+  SPR_spray = 9,
+
+  SPR_MAX   = 13
+};
+
 enum
 {
   SAMPLE_blank = 0,    /* player walks on blank */
@@ -434,10 +486,12 @@ enum
   SAMPLE_crack,                /* stone hits nut */
   SAMPLE_bug,          /* bug moves */
   SAMPLE_tank,         /* tank moves */
-  SAMPLE_android,      /* android places something */
+  SAMPLE_android_clone,        /* android places something */
+  SAMPLE_android_move, /* android moves */
   SAMPLE_spring,       /* spring hits ground/wall/bumper, stone hits spring */
   SAMPLE_slurp,                /* spring kills alien */
-  SAMPLE_eater,                /* eater sits/eats diamond */
+  SAMPLE_eater,                /* eater sits */
+  SAMPLE_eater_eat,    /* eater eats diamond */
   SAMPLE_alien,                /* alien moves */
   SAMPLE_collect,      /* player collects object */
   SAMPLE_diamond,      /* diamond/emerald hits ground */
@@ -451,7 +505,8 @@ enum
   SAMPLE_grow,         /* growing wall grows */
   SAMPLE_wonder,       /* wonderwall is active */
   SAMPLE_door,         /* player goes thru door (gate) */
-  SAMPLE_exit,         /* player goes into exit */
+  SAMPLE_exit_open,    /* exit opens */
+  SAMPLE_exit_leave,   /* player goes into exit */
   SAMPLE_dynamite,     /* player places dynamite */
   SAMPLE_tick,         /* dynamite ticks */
   SAMPLE_press,                /* player presses wheel/wind/switch */
@@ -555,11 +610,14 @@ struct PLAYER
   unsigned int oldx;
   unsigned int oldy;
 
+  unsigned int last_move_dir;
+
   unsigned joy_n:1;
   unsigned joy_e:1;
   unsigned joy_s:1;
   unsigned joy_w:1;
-  unsigned joy_fire:1;
+  unsigned joy_snap:1;
+  unsigned joy_drop:1;
   unsigned joy_stick:1;
   unsigned joy_spin:1;
 };
@@ -577,6 +635,11 @@ struct PLAYER
 
 #define FILE_VERSION_EM_ACTUAL FILE_VERSION_EM_V6
 
+struct GlobalInfo_EM
+{
+  Bitmap *screenbuffer;
+};
+
 struct LevelInfo_EM
 {
   int file_version;
@@ -587,4 +650,22 @@ struct LevelInfo_EM
   unsigned short cave[EM_MAX_CAVE_WIDTH][EM_MAX_CAVE_HEIGHT];
 };
 
+struct GraphicInfo_EM
+{
+  Bitmap *bitmap;
+  int src_x, src_y;
+  int src_offset_x, src_offset_y;
+  int dst_offset_x, dst_offset_y;
+  int width, height;
+
+  Bitmap *crumbled_bitmap;
+  int crumbled_src_x, crumbled_src_y;
+  int crumbled_border_size;
+
+  boolean has_crumbled_graphics;
+  boolean preserve_background;
+
+  int unique_identifier;       /* used to identify needed screen updates */
+};
+
 #endif /* MAIN_EM_H */