rnd-20020825-1-src
[rocksndiamonds.git] / src / main.h
index 52f9e850e7e4ffc6929c85e358dbdd7306f75b75..8e37a2be4838ab9c05dc3d28c623a4ee9f4ec136 100644 (file)
@@ -1,7 +1,7 @@
 /***********************************************************
 * Rocks'n'Diamonds -- McDuffin Strikes Back!               *
 *----------------------------------------------------------*
-* (c) 1995-2001 Artsoft Entertainment                      *
+* (c) 1995-2002 Artsoft Entertainment                      *
 *               Holger Schemel                             *
 *               Detmolder Strasse 189                      *
 *               33604 Bielefeld                            *
 #define MAX_TAPELEN            (1000 * 50)     /* max. time * framerate */
 #define MAX_SCORE_ENTRIES      100
 #define MAX_ELEMENTS           700             /* 500 static + 200 runtime */
+#define MAX_GRAPHICS           1536            /* see below: NUM_TILES */
 #define MAX_NUM_AMOEBA         100
 
 /* values for elements with content */
@@ -254,7 +255,8 @@ struct PlayerInfo
 struct LevelInfo
 {
   int file_version;    /* file format version the level is stored with    */
-  int game_version;    /* game engine version the level was created with  */
+  int game_version;    /* game release version the level was created with */
+
   boolean encoding_16bit_field;                /* level contains 16-bit elements  */
   boolean encoding_16bit_yamyam;       /* yamyam contains 16-bit elements */
   boolean encoding_16bit_amoeba;       /* amoeba contains 16-bit elements */
@@ -281,9 +283,10 @@ struct LevelInfo
 
 struct TapeInfo
 {
-  int file_version;    /* file format version the tape is stored with   */
-  int game_version;    /* game engine version the tape was created with */
-  int version;
+  int file_version;    /* file format version the tape is stored with    */
+  int game_version;    /* game release version the tape was created with */
+  int engine_version;  /* game engine version the tape was recorded with */
+
   int level_nr;
   unsigned long random_seed;
   unsigned long date;
@@ -310,8 +313,13 @@ struct TapeInfo
 
 struct GameInfo
 {
-  int version;
+  /* constant within running game */
+  int engine_version;
   int emulation;
+  int initial_move_delay;
+  int initial_move_delay_value;
+
+  /* variable within running game */
   int yam_content_nr;
   boolean magic_wall_active;
   int magic_wall_time_left;
@@ -333,8 +341,19 @@ struct GlobalInfo
 
 struct ElementInfo
 {
-  char *sound_class_name;
-  char *editor_description;
+  char *sound_class_name;      /* classification for custom sound effects */
+  char *editor_description;    /* short description for level editor */
+
+  int graphic;
+};
+
+struct GraphicInfo
+{
+  Bitmap *bitmap;
+  int src_x, src_y;
+  int anim_frames;
+  int anim_delay;
+  int anim_mode;
 };
 
 extern GC              tile_clip_gc;
@@ -395,6 +414,7 @@ extern struct TapeInfo              tape;
 extern struct GameInfo         game;
 extern struct GlobalInfo       global;
 extern struct ElementInfo      element_info[];
+extern struct GraphicInfo      graphic_info[];
 extern struct SoundEffectInfo  sound_effects[];
 
 /* often used screen positions */
@@ -893,7 +913,7 @@ extern struct SoundEffectInfo       sound_effects[];
 #define GFX_START_ROCKSMORE    1280
 #define GFX_END_ROCKSMORE      1535
 
-#define NUM_TILES              1536
+#define NUM_TILES              1536            /* see above: MAX_GRAPHICS */
 
 /* graphics from "RocksScreen" */
 /* Zeile 0 (0) */
@@ -1625,8 +1645,8 @@ extern struct SoundEffectInfo     sound_effects[];
 
 #define PROGRAM_VERSION_MAJOR  2
 #define PROGRAM_VERSION_MINOR  1
-#define PROGRAM_VERSION_PATCH  0
-#define PROGRAM_VERSION_STRING "2.1.0"
+#define PROGRAM_VERSION_PATCH  2
+#define PROGRAM_VERSION_STRING "2.1.2"
 
 #define PROGRAM_TITLE_STRING   "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING  "Holger Schemel"