X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Femerald.h;h=3c79825e90a858482c42cac15d04342911603161;hb=9e54f3f605e0999f4f2d866107449c247493e957;hp=4e2d8ab99a875eddc5a1c0e07be491f59192f33c;hpb=54fc619a9b7dcd29bc8f65fff83e6995378f8ed9;p=rocksndiamonds.git diff --git a/src/game_em/emerald.h b/src/game_em/emerald.h index 4e2d8ab9..3c79825e 100644 --- a/src/game_em/emerald.h +++ b/src/game_em/emerald.h @@ -48,6 +48,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // constant definitions // ---------------------------------------------------------------------------- +/* maximum cave size */ #define CAVE_WIDTH MAX_PLAYFIELD_WIDTH #define CAVE_HEIGHT MAX_PLAYFIELD_HEIGHT @@ -57,19 +58,33 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #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: - - elements that start with 'X' can be stored in a level file - - elements that start with 'Y' indicate moving elements - - elements that end with 'B' are the "backside" of moving elements - ----------------------------------------------------------------------------- -*/ + +// ---------------------------------------------------------------------------- +// definition of elements used in the Emerald Mine Club engine; +// the element names (mostly) have the following properties: +// - elements that start with 'X' are not animated (more or less) +// - elements that start with 'Y' are animated elements +// - elements that start with 'Z' are internal elements (without graphics) +// - elements that end with 'B' or '_blank' change to the "Xblank" element +// ---------------------------------------------------------------------------- enum { - Xblank = 0, + Zborder, /* special code to indicate border */ + Zplayer, /* special code to indicate player */ + + Zbug, /* internal bug explosion */ + Ztank, /* internal tank/alien/bomb explosion */ + Zeater, /* internal eater explosion */ + Zdynamite, /* internal dynamite explosion */ + + Xboom_bug, /* bug explosion; transition to Zbug */ + Xboom_tank, /* tank/alien/bomb explosion; transition to Ztank */ + Xboom_android, /* android explosion; transition to Xboom_2 */ + Xboom_1, /* tile explosion; transition to Xboom_2 */ + Xboom_2, /* transition to boom[] */ + + Xblank, Xsplash_e, Xsplash_w, @@ -370,16 +385,16 @@ enum Ydrip_2_sB, Xwonderwall, - XwonderwallB, + Ywonderwall, Xwheel, - XwheelB, + Ywheel, Xswitch, - XswitchB, + Yswitch, Xbumper, - XbumperB, + Ybumper, Xacid_nw, Xacid_ne, @@ -388,13 +403,13 @@ enum Xacid_se, Xfake_blank, - Xfake_blankB, + Yfake_blank, Xfake_grass, - Xfake_grassB, + Yfake_grass, Xfake_amoeba, /* dripper */ - Xfake_amoebaB, + Yfake_amoeba, Xlenses, @@ -526,25 +541,6 @@ enum Ygrass_blank, Ydirt_blank, - Xboom_bug, /* passed from explode to synchro (linked explosion); - transition to explode_normal */ - Xboom_bomb, /* passed from explode to synchro (linked explosion); - transition to explode_normal */ - Xboom_android, /* passed from explode to synchro; - transition to boom_2 */ - Xboom_1, /* passed from explode to synchro; - transition to boom_2 */ - Xboom_2, /* transition to boom[] */ - - Znormal, /* passed from synchro to explode, only in next[]; - no picture */ - Zdynamite, /* passed from synchro to explode, only in next[]; - no picture */ - Zplayer, /* special code to indicate player; - no picture */ - Zborder, /* special code to indicate border; - no picture */ - TILE_MAX }; @@ -618,90 +614,76 @@ enum // data structure definitions // ---------------------------------------------------------------------------- -struct LEVEL +struct LOGIC { - int home_initial; /* number of players (initial) */ - int home; /* number of players not yet at home */ - /* 0 == all players at home */ - - 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 width; /* cave width */ + int height; /* cave height */ - int time_seconds; /* available time (seconds) */ - int time_initial; /* available time (initial) */ - int time; /* time remaining (runtime) */ - - boolean killed_out_of_time; /* kill player due to time out */ - - int required_initial; /* emeralds needed (initial) */ - int required; /* emeralds needed (runtime) */ + int left; /* cave left edge */ + int top; /* cave top edge */ + int right; /* cave right edge */ + int bottom; /* cave bottom edge */ + int time; /* time remaining */ + int gems_needed; /* emeralds needed */ int score; /* score */ - /* all below entries must be filled every time a level is read */ - + int eater_score; /* score for killing eater */ int alien_score; /* score for killing alien */ - int amoeba_time; /* amoeba speed */ - int android_move_cnt_initial; /* android move counter (initial) */ - int android_move_cnt; /* android move counter */ - int android_move_time; /* android move reset time */ - int android_clone_cnt_initial;/* android clone counter (initial) */ - int android_clone_cnt; /* android clone counter */ - int android_clone_time; /* android clone reset time */ - int ball_cnt; /* ball counter */ - int ball_pos; /* ball array pos counter */ - int ball_random; /* ball is random flag */ - int ball_state_initial; /* ball active flag (initial) */ - int ball_state; /* ball active flag */ - int ball_time; /* ball reset time */ int bug_score; /* score for killing bug */ + int tank_score; /* score for killing tank */ + int slurp_score; /* score for slurping alien with spring */ + int nut_score; /* score for cracking nut to emerald */ + int emerald_score; /* score for collecting emerald */ int diamond_score; /* score for collecting diamond */ int dynamite_score; /* score for collecting dynamite */ - int eater_pos; /* eater array pos */ - int eater_score; /* score for killing eater */ - int emerald_score; /* score for collecting emerald */ - int exit_score; /* score for entering exit */ int key_score; /* score for colleting key */ - int lenses_cnt_initial; /* lenses counter (initial) */ - int lenses_cnt; /* lenses counter */ int lenses_score; /* score for collecting lenses */ - int lenses_time; /* lenses reset time */ - int magnify_cnt_initial; /* magnify counter (initial) */ - int magnify_cnt; /* magnify counter */ int magnify_score; /* score for collecting magnifier */ - int magnify_time; /* magnify reset time */ - int nut_score; /* score for cracking nut */ - int shine_cnt; /* shine counter for emerald/diamond */ - int slurp_score; /* score for slurping alien */ - int tank_score; /* score for killing tank */ - int wheel_cnt_initial; /* wheel counter (initial) */ - int wheel_cnt; /* wheel counter */ - int wheel_x_initial; /* wheel x pos (initial) */ + int exit_score; /* score for entering exit */ + + int android_move_time; /* android move reset time */ + int android_clone_time; /* android clone reset time */ + int ball_time; /* ball reset time */ + int amoeba_time; /* amoeba speed */ + int wonderwall_time; /* wonderwall time */ + int wheel_time; /* wheel reset time */ int wheel_x; /* wheel x pos */ - int wheel_y_initial; /* wheel y pos (initial) */ int wheel_y; /* wheel y pos */ - int wheel_time; /* wheel reset time */ - int wind_cnt_initial; /* wind counter (initial) */ - int wind_cnt; /* wind time counter */ - int wind_direction_initial; /* wind direction (initial) */ - int wind_direction; /* wind direction */ + int lenses_time; /* lenses reset time */ + int magnify_time; /* magnify reset time */ int wind_time; /* wind reset time */ - int wonderwall_state_initial; /* wonderwall active flag (initial) */ + int wind_direction; /* wind direction */ + + int ball_random; /* ball is random flag */ + int ball_state; /* ball active flag */ int wonderwall_state; /* wonderwall active flag */ - int wonderwall_time_initial; /* wonderwall time (initial) */ - int wonderwall_time; /* wonderwall time */ - short eater_array[8][9]; /* eater data */ - short ball_array[8][8]; /* ball data */ - short android_array[TILE_MAX];/* android clone table */ + int wheel_cnt; /* wheel counter */ + int lenses_cnt; /* lenses counter */ + int magnify_cnt; /* magnify counter */ + int wind_cnt; /* wind time counter */ + + int android_move_cnt; /* android move counter */ + int android_clone_cnt; /* android clone counter */ + int ball_cnt; /* ball counter */ + int ball_pos; /* ball array pos counter */ + int eater_pos; /* eater array pos */ + int shine_cnt; /* shine counter for emerald/diamond */ + int num_ball_arrays; /* number of ball data arrays used */ + int home_initial; /* number of players (initial) */ + int home; /* number of players not yet at home */ + /* 0 == all players at home */ + + boolean killed_out_of_time; /* kill player due to time out */ + int exit_x, exit_y; /* kludge for playing player exit sound */ + short eater_array[8][9]; /* eater data */ + short ball_array[8][8]; /* ball data */ + short android_array[TILE_MAX]; /* android clone data */ + short cavebuf[CAVE_BUFFER_WIDTH][CAVE_BUFFER_HEIGHT]; short nextbuf[CAVE_BUFFER_WIDTH][CAVE_BUFFER_HEIGHT]; short drawbuf[CAVE_BUFFER_WIDTH][CAVE_BUFFER_HEIGHT]; @@ -730,8 +712,6 @@ struct PLAYER int keys; int anim; - int x_initial; - int y_initial; int x; int y; int oldx;