#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 EL_SP_GRAVITY_OFF_PORT_LEFT 665
#define EL_SP_GRAVITY_OFF_PORT_UP 666
+#if 1
+
#define NUM_FILE_ELEMENTS 667
+/* the following EMC style elements are currently not implemented in R'n'D */
+#define EL_BALLOON_SWITCH_NONE EL_UNKNOWN
+#define EL_EMC_LEVEL_BORDER EL_UNKNOWN
+#define EL_EMC_ANDROID EL_UNKNOWN
+#define EL_EMC_ANDROID_RIGHT EL_UNKNOWN
+#define EL_EMC_ANDROID_UP EL_UNKNOWN
+#define EL_EMC_ANDROID_LEFT EL_UNKNOWN
+#define EL_EMC_ANDROID_DOWN EL_UNKNOWN
+#define EL_EMC_ANDROID_LEFT_UP EL_UNKNOWN
+#define EL_EMC_ANDROID_LEFT_DOWN EL_UNKNOWN
+#define EL_EMC_ANDROID_RIGHT_UP EL_UNKNOWN
+#define EL_EMC_ANDROID_RIGHT_DOWN EL_UNKNOWN
+#define EL_EMC_GRASS EL_UNKNOWN
+#define EL_EMC_GENERATOR_BALL EL_UNKNOWN
+#define EL_EMC_GROW EL_UNKNOWN
+#define EL_EMC_GATE_1 EL_UNKNOWN
+#define EL_EMC_GATE_2 EL_UNKNOWN
+#define EL_EMC_GATE_3 EL_UNKNOWN
+#define EL_EMC_GATE_4 EL_UNKNOWN
+#define EL_EMC_GATE_5 EL_UNKNOWN
+#define EL_EMC_GATE_6 EL_UNKNOWN
+#define EL_EMC_GATE_7 EL_UNKNOWN
+#define EL_EMC_GATE_8 EL_UNKNOWN
+#define EL_EMC_GATE_1_GRAY EL_UNKNOWN
+#define EL_EMC_GATE_2_GRAY EL_UNKNOWN
+#define EL_EMC_GATE_3_GRAY EL_UNKNOWN
+#define EL_EMC_GATE_4_GRAY EL_UNKNOWN
+#define EL_EMC_GATE_5_GRAY EL_UNKNOWN
+#define EL_EMC_GATE_6_GRAY EL_UNKNOWN
+#define EL_EMC_GATE_7_GRAY EL_UNKNOWN
+#define EL_EMC_GATE_8_GRAY EL_UNKNOWN
+#define EL_EMC_KEY_1 EL_UNKNOWN
+#define EL_EMC_KEY_2 EL_UNKNOWN
+#define EL_EMC_KEY_3 EL_UNKNOWN
+#define EL_EMC_KEY_4 EL_UNKNOWN
+#define EL_EMC_KEY_5 EL_UNKNOWN
+#define EL_EMC_KEY_6 EL_UNKNOWN
+#define EL_EMC_KEY_7 EL_UNKNOWN
+#define EL_EMC_KEY_8 EL_UNKNOWN
+#define EL_EMC_BUMPER EL_UNKNOWN
+#define EL_EMC_PLANT EL_UNKNOWN
+#define EL_EMC_LENSES EL_UNKNOWN
+#define EL_EMC_MAGNIFY EL_UNKNOWN
+
+#else
+
+/* the following EMC style elements are currently not implemented in R'n'D */
+#define EL_BALLOON_SWITCH_NONE 667
+#define EL_EMC_LEVEL_BORDER 668
+#define EL_EMC_ANDROID 669
+#define EL_EMC_ANDROID_RIGHT 670
+#define EL_EMC_ANDROID_UP 671
+#define EL_EMC_ANDROID_LEFT 672
+#define EL_EMC_ANDROID_DOWN 673
+#define EL_EMC_ANDROID_LEFT_UP 674
+#define EL_EMC_ANDROID_LEFT_DOWN 675
+#define EL_EMC_ANDROID_RIGHT_UP 676
+#define EL_EMC_ANDROID_RIGHT_DOWN 677
+#define EL_EMC_GRASS 678
+#define EL_EMC_GENERATOR_BALL 679
+#define EL_EMC_GROW 680
+#define EL_EMC_GATE_1 681
+#define EL_EMC_GATE_2 682
+#define EL_EMC_GATE_3 683
+#define EL_EMC_GATE_4 684
+#define EL_EMC_GATE_5 685
+#define EL_EMC_GATE_6 686
+#define EL_EMC_GATE_7 687
+#define EL_EMC_GATE_8 688
+#define EL_EMC_GATE_1_GRAY 689
+#define EL_EMC_GATE_2_GRAY 690
+#define EL_EMC_GATE_3_GRAY 691
+#define EL_EMC_GATE_4_GRAY 692
+#define EL_EMC_GATE_5_GRAY 693
+#define EL_EMC_GATE_6_GRAY 694
+#define EL_EMC_GATE_7_GRAY 695
+#define EL_EMC_GATE_8_GRAY 696
+#define EL_EMC_KEY_1 697
+#define EL_EMC_KEY_2 698
+#define EL_EMC_KEY_3 699
+#define EL_EMC_KEY_4 700
+#define EL_EMC_KEY_5 701
+#define EL_EMC_KEY_6 702
+#define EL_EMC_KEY_7 703
+#define EL_EMC_KEY_8 704
+#define EL_EMC_BUMPER 705
+#define EL_EMC_PLANT 706
+#define EL_EMC_LENSES 707
+#define EL_EMC_MAGNIFY 708
+
+#define NUM_FILE_ELEMENTS 709
+
+#endif
+
/* "real" (and therefore drawable) runtime elements */
#define EL_FIRST_RUNTIME_REAL NUM_FILE_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 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 */
struct LevelInfo
{
+ struct LevelFileInfo file_info;
+
+ /* level stored in native format for the native game engines */
+ struct LevelInfo_EM *native_em_level;
+
+ int game_engine_type;
+
int file_version; /* file format version the level is stored with */
int game_version; /* game release version the level was created with */
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
int initial_move_delay_value;
int initial_push_delay_value;
+ /* flags to handle bugs in and changes between different engine versions */
+ /* (for the latest engine version, these flags should always be "FALSE") */
+ boolean use_bug_change_when_pushing;
+
/* variable within running game */
int yamyam_content_nr;
boolean magic_wall_active;
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 */
struct SoundInfo
{
boolean loop;
+ int volume;
+ int priority;
};
struct MusicInfo