X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Fmain_em.h;h=345107efb821e9cf93676f865badbc1fb3b2e54c;hb=51dcb2097c619c5f9ba924a7edb4a3bdd6a6986e;hp=7620cc2fd194129ff237ca884b850ff4da904973;hpb=ef9242bb9320d705010959ba11fdf697dc1e5b70;p=rocksndiamonds.git diff --git a/src/game_em/main_em.h b/src/game_em/main_em.h index 7620cc2f..345107ef 100644 --- a/src/game_em/main_em.h +++ b/src/game_em/main_em.h @@ -1,6 +1,9 @@ #ifndef MAIN_EM_H #define MAIN_EM_H +#include "../engines.h" + + /* 2000-07-30T11:06:03Z ---------------------------------------------------- */ #define EM_MAX_CAVE_WIDTH 102 @@ -10,6 +13,17 @@ #define EM_ENGINE_BAD_ROLL #define EM_ENGINE_BAD_SPRING + +/* + ----------------------------------------------------------------------------- + definition of elements used in the Emerald Mine Club engine; + the element names have the following properties: + - elements that start with an 'X' can be stored in a level file; + - elements that start with an 'Y' indicate moving elements; + - elements that end with a 'B' are the "backside" of a moving element. + ----------------------------------------------------------------------------- +*/ + enum { Xblank = 0, /* still */ @@ -246,6 +260,22 @@ enum Xball_2, Xball_2B, Yball_eat, + +#if 1 + Ykey_1_eat, + Ykey_2_eat, + Ykey_3_eat, + Ykey_4_eat, + Ykey_5_eat, + Ykey_6_eat, + Ykey_7_eat, + Ykey_8_eat, + Ylenses_eat, + Ymagnify_eat, + Ygrass_eat, + Ydirt_eat, +#endif + Xgrow_ns, Ygrow_ns_eat, Xgrow_ew, @@ -332,6 +362,18 @@ enum Xfake_door_6, Xfake_door_7, Xfake_door_8, + +#if 1 + Xfake_acid_1, + Xfake_acid_2, + Xfake_acid_3, + Xfake_acid_4, + Xfake_acid_5, + Xfake_acid_6, + Xfake_acid_7, + Xfake_acid_8, +#endif + Xsteel_1, Xsteel_2, Xsteel_3, @@ -425,6 +467,16 @@ enum TILE_MAX }; +enum +{ + SPR_still = 0, + SPR_walk = 1, + SPR_push = 5, + SPR_spray = 9, + + SPR_MAX = 13 +}; + enum { SAMPLE_blank = 0, /* player walks on blank */ @@ -434,10 +486,12 @@ enum SAMPLE_crack, /* stone hits nut */ SAMPLE_bug, /* bug moves */ SAMPLE_tank, /* tank moves */ - SAMPLE_android, /* android places something */ + SAMPLE_android_clone, /* android places something */ + SAMPLE_android_move, /* android moves */ SAMPLE_spring, /* spring hits ground/wall/bumper, stone hits spring */ SAMPLE_slurp, /* spring kills alien */ - SAMPLE_eater, /* eater sits/eats diamond */ + SAMPLE_eater, /* eater sits */ + SAMPLE_eater_eat, /* eater eats diamond */ SAMPLE_alien, /* alien moves */ SAMPLE_collect, /* player collects object */ SAMPLE_diamond, /* diamond/emerald hits ground */ @@ -451,7 +505,8 @@ enum SAMPLE_grow, /* growing wall grows */ SAMPLE_wonder, /* wonderwall is active */ SAMPLE_door, /* player goes thru door (gate) */ - SAMPLE_exit, /* player goes into exit */ + SAMPLE_exit_open, /* exit opens */ + SAMPLE_exit_leave, /* player goes into exit */ SAMPLE_dynamite, /* player places dynamite */ SAMPLE_tick, /* dynamite ticks */ SAMPLE_press, /* player presses wheel/wind/switch */ @@ -555,11 +610,14 @@ struct PLAYER unsigned int oldx; unsigned int oldy; + unsigned int last_move_dir; + unsigned joy_n:1; unsigned joy_e:1; unsigned joy_s:1; unsigned joy_w:1; - unsigned joy_fire:1; + unsigned joy_snap:1; + unsigned joy_drop:1; unsigned joy_stick:1; unsigned joy_spin:1; }; @@ -577,6 +635,11 @@ struct PLAYER #define FILE_VERSION_EM_ACTUAL FILE_VERSION_EM_V6 +struct GlobalInfo_EM +{ + Bitmap *screenbuffer; +}; + struct LevelInfo_EM { int file_version; @@ -587,4 +650,22 @@ struct LevelInfo_EM unsigned short cave[EM_MAX_CAVE_WIDTH][EM_MAX_CAVE_HEIGHT]; }; +struct GraphicInfo_EM +{ + Bitmap *bitmap; + int src_x, src_y; + int src_offset_x, src_offset_y; + int dst_offset_x, dst_offset_y; + int width, height; + + Bitmap *crumbled_bitmap; + int crumbled_src_x, crumbled_src_y; + int crumbled_border_size; + + boolean has_crumbled_graphics; + boolean preserve_background; + + int unique_identifier; /* used to identify needed screen updates */ +}; + #endif /* MAIN_EM_H */