#define GFX_ELEMENT(e) (element_info[e].use_gfx_element ? \
element_info[e].gfx_element : e)
+/* !!! "use sound" deactivated due to problems with level "bug machine" !!! */
+/* (solution: add separate "use sound of element" to level file and editor) */
+#if 0
#define SND_ELEMENT(e) GFX_ELEMENT(e)
+#else
+#define SND_ELEMENT(e) (e)
+#endif
#define IS_PLAYER(x, y) (ELEM_IS_PLAYER(StorePlayer[x][y]))
#define EL_TRIGGER_ELEMENT 657
#define EL_TRIGGER_PLAYER 658
-#define NUM_FILE_ELEMENTS 659
+#define EL_SP_GRAVITY_ON_PORT_RIGHT 659
+#define EL_SP_GRAVITY_ON_PORT_DOWN 660
+#define EL_SP_GRAVITY_ON_PORT_LEFT 661
+#define EL_SP_GRAVITY_ON_PORT_UP 662
+#define EL_SP_GRAVITY_OFF_PORT_RIGHT 663
+#define EL_SP_GRAVITY_OFF_PORT_DOWN 664
+#define EL_SP_GRAVITY_OFF_PORT_LEFT 665
+#define EL_SP_GRAVITY_OFF_PORT_UP 666
+
+#define NUM_FILE_ELEMENTS 667
/* "real" (and therefore drawable) runtime elements */
#define PROGRAM_VERSION_MAJOR 3
#define PROGRAM_VERSION_MINOR 1
-#define PROGRAM_VERSION_PATCH 0
-#define PROGRAM_VERSION_BUILD 5
+#define PROGRAM_VERSION_PATCH 1
+#define PROGRAM_VERSION_BUILD 0
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define PROGRAM_AUTHOR_STRING "Holger Schemel"
boolean use_murphy_graphic;
boolean block_last_field;
+ int block_delay;
+ int block_delay_value;
+
boolean can_fall_into_acid;
boolean LevelSolved, GameOver;
int show_envelope;
+#if 1 /* USE_NEW_MOVE_DELAY */
+ int move_delay;
+ int move_delay_value;
+#else
unsigned long move_delay;
int move_delay_value;
+#endif
int move_delay_reset_counter;
+#if 1 /* USE_NEW_PUSH_DELAY */
+ int push_delay;
+ int push_delay_value;
+#else
unsigned long push_delay;
unsigned long push_delay_value;
+#endif
unsigned long actual_frame_counter;
char *autoplay_leveldir;
int autoplay_level_nr;
+ char *convert_leveldir;
+ int convert_level_nr;
+
int num_toons;
float frames_per_second;
int choice_pos; /* current element choice position */
};
+struct ElementNameInfo
+{
+ /* ---------- token and description strings ---------- */
+
+ char *token_name; /* element token used in config files */
+ char *class_name; /* element class used in config files */
+ char *editor_description; /* pre-defined description for level editor */
+};
+
struct ElementInfo
{
/* ---------- token and description strings ---------- */
extern struct MenuInfo menu;
extern struct DoorInfo door_1, door_2;
extern struct ElementInfo element_info[];
+extern struct ElementNameInfo element_name_info[];
extern struct ElementActionInfo element_action_info[];
extern struct ElementDirectionInfo element_direction_info[];
extern struct SpecialSuffixInfo special_suffix_info[];
extern struct MusicFileInfo *music_file_info;
extern struct HelpAnimInfo *helpanim_info;
extern SetupFileHash *helptext_info;
+extern struct ConfigTypeInfo image_config_suffix[];
+extern struct ConfigTypeInfo sound_config_suffix[];
+extern struct ConfigTypeInfo music_config_suffix[];
extern struct ConfigInfo image_config[];
extern struct ConfigInfo sound_config[];
extern struct ConfigInfo music_config[];
-extern struct ConfigInfo image_config_suffix[];
-extern struct ConfigInfo sound_config_suffix[];
-extern struct ConfigInfo music_config_suffix[];
extern struct ConfigInfo helpanim_config[];
extern struct ConfigInfo helptext_config[];