X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Femerald.h;h=37b75c66e4be259c95280bcb399c2eb87f05b814;hb=4b9cc1bf8622907234c4f0cb6c5a7e060a045404;hp=5e77b8b4aec57f07887671315f7473bbc1418900;hpb=a4cde04ae92e7f4fb05307b04bd541caa1eeec7e;p=rocksndiamonds.git diff --git a/src/game_em/emerald.h b/src/game_em/emerald.h index 5e77b8b4..37b75c66 100644 --- a/src/game_em/emerald.h +++ b/src/game_em/emerald.h @@ -48,19 +48,21 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // constant definitions // ---------------------------------------------------------------------------- -/* define these to use additional elements */ -#define EM_ENGINE_USE_ADDITIONAL_ELEMENTS +#define CAVE_WIDTH MAX_PLAYFIELD_WIDTH +#define CAVE_HEIGHT MAX_PLAYFIELD_HEIGHT -/* one border for Zborder elements, one border for steelwall, if needed */ -#define EM_MAX_CAVE_WIDTH (MAX_PLAYFIELD_WIDTH + 2 + 2) -#define EM_MAX_CAVE_HEIGHT (MAX_PLAYFIELD_HEIGHT + 2 + 2) +/* additional padding for Zborder elements and linked cave buffer columns */ +#define CAVE_BUFFER_XOFFSET 4 +#define CAVE_BUFFER_YOFFSET 2 +#define CAVE_BUFFER_WIDTH (CAVE_WIDTH + 2 * CAVE_BUFFER_XOFFSET) +#define CAVE_BUFFER_HEIGHT (CAVE_HEIGHT + 2 * CAVE_BUFFER_YOFFSET) /* ----------------------------------------------------------------------------- definition of elements used in the Emerald Mine Club engine; - the element names have the following properties: + the element names (mostly) have the following properties: - elements that start with 'X' can be stored in a level file - - elements that start with 'Y' indicate moving elements + - elements that start with 'Y' indicate moving or active elements - elements that end with 'B' are the "backside" of moving elements ----------------------------------------------------------------------------- */ @@ -69,8 +71,8 @@ enum { Xblank = 0, - Xacid_splash_e, - Xacid_splash_w, + Xsplash_e, + Xsplash_w, Xplant, Yplant, @@ -84,8 +86,7 @@ enum Xacid_7, Xacid_8, -#ifdef EM_ENGINE_USE_ADDITIONAL_ELEMENTS - Xfake_acid_1, + Xfake_acid_1, /* newly added to EM engine */ Xfake_acid_2, Xfake_acid_3, Xfake_acid_4, @@ -93,7 +94,6 @@ enum Xfake_acid_6, Xfake_acid_7, Xfake_acid_8, -#endif Xgrass, Ygrass_nB, @@ -370,16 +370,16 @@ enum Ydrip_2_sB, Xwonderwall, - XwonderwallB, + Ywonderwall, Xwheel, - XwheelB, + Ywheel, Xswitch, - XswitchB, + Yswitch, Xbumper, - XbumperB, + Ybumper, Xacid_nw, Xacid_ne, @@ -388,13 +388,13 @@ enum Xacid_se, Xfake_blank, - Xfake_blankB, + Yfake_blank, Xfake_grass, - Xfake_grassB, + Yfake_grass, - Xfake_amoeba, /* dripper */ - Xfake_amoebaB, + Xfake_amoeba, /* dripper */ + Yfake_amoeba, Xlenses, @@ -416,15 +416,13 @@ enum Xsand_stonesand_4, Xsand_stoneout_1, Xsand_stoneout_2, -#ifdef EM_ENGINE_USE_ADDITIONAL_ELEMENTS - Xsand_stonesand_quickout_1, + Xsand_stonesand_quickout_1, /* newly added to EM engine */ Xsand_stonesand_quickout_2, -#endif - Xslidewall_ns, /* growing wall */ - Yslidewall_ns_blank, - Xslidewall_ew, - Yslidewall_ew_blank, + Xslide_ns, /* growing wall */ + Yslide_ns_blank, + Xslide_ew, + Yslide_ew_blank, Xwind_n, Xwind_e, @@ -515,8 +513,7 @@ enum Xalpha_arrow_w, Xalpha_copyr, -#ifdef EM_ENGINE_USE_ADDITIONAL_ELEMENTS - Ykey_1_blank, + Ykey_1_blank, /* newly added to EM engine */ Ykey_2_blank, Ykey_3_blank, Ykey_4_blank, @@ -528,7 +525,6 @@ enum Ymagnify_blank, Ygrass_blank, Ydirt_blank, -#endif Xboom_bug, /* passed from explode to synchro (linked explosion); transition to explode_normal */ @@ -601,7 +597,7 @@ enum SOUND_dirt, /* player digs into dirt */ SOUND_acid, /* acid splashes */ SOUND_ball, /* ball places something */ - SOUND_slidewall, /* slide wall grows */ + SOUND_slide, /* slide wall grows */ SOUND_wonder, /* wonderwall is active */ SOUND_door, /* player goes thru door (gate) */ SOUND_exit_open, /* exit opens */ @@ -631,6 +627,11 @@ struct LEVEL int width; /* playfield width */ int height; /* playfield height */ + int left; /* playfield left edge */ + int top; /* playfield top edge */ + int right; /* playfield right edge */ + int bottom; /* playfield bottom edge */ + int time_seconds; /* available time (seconds) */ int time_initial; /* available time (initial) */ int time; /* time remaining (runtime) */ @@ -700,6 +701,21 @@ struct LEVEL int num_ball_arrays; /* number of ball data arrays used */ int exit_x, exit_y; /* kludge for playing player exit sound */ + + short cavebuf[CAVE_BUFFER_WIDTH][CAVE_BUFFER_HEIGHT]; + short nextbuf[CAVE_BUFFER_WIDTH][CAVE_BUFFER_HEIGHT]; + short drawbuf[CAVE_BUFFER_WIDTH][CAVE_BUFFER_HEIGHT]; + short boombuf[CAVE_BUFFER_WIDTH][CAVE_BUFFER_HEIGHT]; + + short *cavecol[CAVE_BUFFER_WIDTH]; + short *nextcol[CAVE_BUFFER_WIDTH]; + short *drawcol[CAVE_BUFFER_WIDTH]; + short *boomcol[CAVE_BUFFER_WIDTH]; + + short **cave; + short **next; + short **draw; + short **boom; }; struct PLAYER