X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.h;h=65e3a7ee99166829fa151f200d9c9213f3051e98;hb=73dd81c85be90e466493bcc6f45c402d29bc7f20;hp=009736ffc4224aa68666f655eb8b7a4c89cbc108;hpb=005e27dc77775cbda39afc1daabc8d5f6011f575;p=rocksndiamonds.git diff --git a/src/main.h b/src/main.h index 009736ff..65e3a7ee 100644 --- a/src/main.h +++ b/src/main.h @@ -23,6 +23,7 @@ #include #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 */ @@ -962,7 +963,44 @@ #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_EMC_LEVEL_BORDER 668 +#define EL_EMC_ANDROID 669 +#define EL_EMC_GRASS 670 +#define EL_EMC_MAGIC_BALL 671 +#define EL_EMC_MAGIC_BALL_SWITCH 672 +#define EL_EMC_GATE_5 673 +#define EL_EMC_GATE_6 674 +#define EL_EMC_GATE_7 675 +#define EL_EMC_GATE_8 676 +#define EL_EMC_GATE_5_GRAY 677 +#define EL_EMC_GATE_6_GRAY 678 +#define EL_EMC_GATE_7_GRAY 679 +#define EL_EMC_GATE_8_GRAY 680 +#define EL_EMC_KEY_5 681 +#define EL_EMC_KEY_6 682 +#define EL_EMC_KEY_7 683 +#define EL_EMC_KEY_8 684 +#define EL_EMC_BUMPER 685 +#define EL_EMC_PLANT 686 +#define EL_EMC_LENSES 687 +#define EL_EMC_MAGNIFIER 688 +#define EL_EMC_WALL_9 689 +#define EL_EMC_WALL_10 690 +#define EL_EMC_WALL_11 691 +#define EL_EMC_WALL_12 692 +#define EL_EMC_WALL_13 693 +#define EL_EMC_WALL_14 694 +#define EL_EMC_WALL_15 695 +#define EL_EMC_WALL_16 696 +#define EL_EMC_WALL_SLIPPERY_1 697 +#define EL_EMC_WALL_SLIPPERY_2 698 +#define EL_EMC_WALL_SLIPPERY_3 699 +#define EL_EMC_WALL_SLIPPERY_4 700 + +#define NUM_FILE_ELEMENTS 701 /* "real" (and therefore drawable) runtime elements */ @@ -1185,14 +1223,17 @@ #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 */ @@ -1382,7 +1423,6 @@ struct PlayerInfo boolean block_last_field; int block_delay; - int block_delay_value; boolean can_fall_into_acid; @@ -1475,6 +1515,13 @@ struct LevelFileInfo 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 */ @@ -1512,13 +1559,16 @@ struct LevelInfo boolean double_speed; boolean initial_gravity; boolean em_slippery_gems; /* EM style "gems slip from wall" behaviour */ - boolean block_last_field; /* player blocks previous field while moving */ - boolean sp_block_last_field; /* player blocks previous field while moving */ boolean use_spring_bug; /* for compatibility with old levels */ boolean instant_relocation; /* no visual delay when relocating player */ boolean can_pass_to_walkable; /* player can pass to empty or walkable tile */ boolean grow_into_diggable; /* amoeba can grow into anything diggable */ + boolean block_last_field; /* player blocks previous field while moving */ + boolean sp_block_last_field; /* player blocks previous field while moving */ + int block_delay; /* delay for blocking previous field */ + int sp_block_delay; /* delay for blocking previous field */ + /* ('int' instead of 'boolean' because used as selectbox value in editor) */ int use_step_counter; /* count steps instead of seconds for level */ @@ -1527,6 +1577,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 @@ -1578,6 +1630,10 @@ struct GameInfo 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; @@ -1806,6 +1862,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 */ @@ -1828,6 +1885,8 @@ struct GraphicInfo struct SoundInfo { boolean loop; + int volume; + int priority; }; struct MusicInfo