X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Fmain_em.h;h=4523a2181c534e3526c008fef26f76f74d913619;hb=ec36fe263402351ac67b70400f11096a044365fe;hp=f54f5d407ae67be4055e9323f44a8b2be7bc349c;hpb=f47cd4b09952aaf95d16542f6b53f2d8bf9e1d7d;p=rocksndiamonds.git diff --git a/src/game_em/main_em.h b/src/game_em/main_em.h index f54f5d40..4523a218 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, @@ -425,6 +455,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 */ @@ -471,10 +511,14 @@ struct LEVEL unsigned int width; /* playfield width */ unsigned int height; /* playfield height */ - unsigned int time_initial; /* time remaining (initial) */ + + unsigned int time_seconds; /* available time (seconds) */ + unsigned int time_initial; /* available time (initial) */ unsigned int time; /* time remaining (runtime) */ + unsigned int required_initial; /* emeralds needed (initial) */ unsigned int required; /* emeralds needed (runtime) */ + unsigned int score; /* score */ /* fill in all below /every/ time you read a level */ @@ -551,21 +595,60 @@ 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; }; + +/* ------------------------------------------------------------------------- */ +/* definitions and structures for use by the main game functions */ +/* ------------------------------------------------------------------------- */ + +/* values for native Emerald Mine game version */ +#define FILE_VERSION_EM_V3 3 +#define FILE_VERSION_EM_V4 4 +#define FILE_VERSION_EM_V5 5 +#define FILE_VERSION_EM_V6 6 + +#define FILE_VERSION_EM_ACTUAL FILE_VERSION_EM_V6 + +struct GlobalInfo_EM +{ + Bitmap *screenbuffer; +}; + struct LevelInfo_EM { + int file_version; + struct LEVEL *lev; struct PLAYER *ply1, *ply2; 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; + + boolean has_crumbled_graphics; + Bitmap *crumbled_bitmap; + int crumbled_src_x, crumbled_src_y; + int crumbled_border_size; + + int unique_identifier; /* used to identify needed screen updates */ +}; + #endif /* MAIN_EM_H */