rnd-20041017-1-src
[rocksndiamonds.git] / src / main.h
index 7b6b6f5d0cdc167da9ba03021c8fb38f6c631d6a..1ec25ad6fd2295d8e2010f2568ef198f575eaa6a 100644 (file)
@@ -23,6 +23,7 @@
 #include <fcntl.h>
 
 #include "libgame/libgame.h"
+#include "game_em/game_em.h"
 
 #include "conf_gfx.h"  /* include auto-generated data structure definitions */
 #include "conf_snd.h"  /* include auto-generated data structure definitions */
 #define MIN_ELEMENT_CONTENTS   1
 #define STD_ELEMENT_CONTENTS   4
 #define MAX_ELEMENT_CONTENTS   8
+#define NUM_MAGIC_BALL_CONTENTS        8
 
 #define LEVEL_SCORE_ELEMENTS   16      /* level elements with score */
 
 #define EL_SP_GRAVITY_OFF_PORT_LEFT    665
 #define EL_SP_GRAVITY_OFF_PORT_UP      666
 
-#define NUM_FILE_ELEMENTS              667
+
+/* the following EMC style elements are currently not implemented in R'n'D */
+#define EL_BALLOON_SWITCH_NONE         667
+#define EL_EM_GATE_5                   668
+#define EL_EM_GATE_6                   669
+#define EL_EM_GATE_7                   670
+#define EL_EM_GATE_8                   671
+#define EL_EM_GATE_5_GRAY              672
+#define EL_EM_GATE_6_GRAY              673
+#define EL_EM_GATE_7_GRAY              674
+#define EL_EM_GATE_8_GRAY              675
+#define EL_EM_KEY_5                    676
+#define EL_EM_KEY_6                    677
+#define EL_EM_KEY_7                    678
+#define EL_EM_KEY_8                    679
+#define EL_EMC_ANDROID                 680
+#define EL_EMC_GRASS                   681
+#define EL_EMC_MAGIC_BALL              682
+#define EL_EMC_MAGIC_BALL_SWITCH       683
+#define EL_EMC_SPRING_BUMPER           684
+#define EL_EMC_PLANT                   685
+#define EL_EMC_LENSES                  686
+#define EL_EMC_MAGNIFIER               687
+#define EL_EMC_WALL_9                  688
+#define EL_EMC_WALL_10                 689
+#define EL_EMC_WALL_11                 690
+#define EL_EMC_WALL_12                 691
+#define EL_EMC_WALL_13                 692
+#define EL_EMC_WALL_14                 693
+#define EL_EMC_WALL_15                 694
+#define EL_EMC_WALL_16                 695
+#define EL_EMC_WALL_SLIPPERY_1         696
+#define EL_EMC_WALL_SLIPPERY_2         697
+#define EL_EMC_WALL_SLIPPERY_3         698
+#define EL_EMC_WALL_SLIPPERY_4         699
+#define EL_EMC_DRIPPER                 700
+
+#define NUM_FILE_ELEMENTS              701
 
 
 /* "real" (and therefore drawable) runtime elements */
 #define GFX_ARG_POST_DELAY_FIXED               28
 #define GFX_ARG_POST_DELAY_RANDOM              29
 #define GFX_ARG_NAME                           30
+#define GFX_ARG_SCALE_UP_FACTOR                        31
 
-#define NUM_GFX_ARGS                           31
+#define NUM_GFX_ARGS                           32
 
 
 /* values for sound configuration suffixes */
 #define SND_ARG_MODE_LOOP                      0
+#define SND_ARG_VOLUME                         1
+#define SND_ARG_PRIORITY                       2
 
-#define NUM_SND_ARGS                           1
+#define NUM_SND_ARGS                           3
 
 
 /* values for music configuration suffixes */
@@ -1474,6 +1516,13 @@ struct LevelFileInfo
 
 struct LevelInfo
 {
+  struct LevelFileInfo file_info;
+
+  int game_engine_type;
+
+  /* level stored in native format for the alternative native game engines */
+  struct LevelInfo_EM *native_em_level;
+
   int file_version;    /* file format version the level is stored with    */
   int game_version;    /* game release version the level was created with */
 
@@ -1505,6 +1554,21 @@ struct LevelInfo
   int time_light;
   int time_timegate;
 
+  /* values for the new EMC elements */
+  int android_move_time;
+  int android_clone_time;
+  boolean ball_random;
+  boolean ball_state_initial;
+  int ball_time;
+  int lenses_score;
+  int magnify_score;
+  int slurp_score;
+  int lenses_time;
+  int magnify_time;
+  int wind_direction_initial;
+  int ball_content[NUM_MAGIC_BALL_CONTENTS][3][3];
+  boolean android_array[16];
+
   int can_move_into_acid_bits; /* bitfield to store property for elements */
   int dont_collide_with_bits;  /* bitfield to store property for elements */
 
@@ -1529,6 +1593,8 @@ struct LevelInfo
   boolean use_custom_template; /* use custom properties from template file */
 
   boolean no_valid_file;       /* set when level file missing or invalid */
+
+  boolean changed;             /* set when level was changed in the editor */
 };
 
 struct TapeInfo
@@ -1812,6 +1878,7 @@ struct GraphicInfo
   int crumbled_like;           /* element for cloning crumble graphics */
   int diggable_like;           /* element for cloning digging graphics */
   int border_size;             /* border size for "crumbled" graphics */
+  int scale_up_factor;         /* optional factor for scaling image up */
 
   int anim_delay_fixed;                /* optional delay values for bored and   */
   int anim_delay_random;       /* sleeping player animations (animation */
@@ -1834,6 +1901,8 @@ struct GraphicInfo
 struct SoundInfo
 {
   boolean loop;
+  int volume;
+  int priority;
 };
 
 struct MusicInfo