X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_mm%2Fmm_main.h;h=f8b775fc872074beb300d3b4689033166409da34;hb=3a606b24c2e6459e8522f060d37f8f4b9434c4b8;hp=6c2ae34c899fb2a00cdbd8d48475dd91b2ff659a;hpb=bc5b0a76865e61c925f71c59798d874ab6c1e87d;p=rocksndiamonds.git diff --git a/src/game_mm/mm_main.h b/src/game_mm/mm_main.h index 6c2ae34c..f8b775fc 100644 --- a/src/game_mm/mm_main.h +++ b/src/game_mm/mm_main.h @@ -4,7 +4,7 @@ // (c) 1994-2017 by Artsoft Entertainment // Holger Schemel // info@artsoft.org -// http://www.artsoft.org/ +// https://www.artsoft.org/ // ---------------------------------------------------------------------------- // mm_main.h // ============================================================================ @@ -33,7 +33,7 @@ #define IN_LEV_FIELD(x, y) IN_FIELD(x, y, lev_fieldx, lev_fieldy) #define IN_SCR_FIELD(x, y) IN_FIELD_MINMAX(x, y, BX1, BY1, BX2, BY2) -/* values for 'Elementeigenschaften' */ +// values for 'Elementeigenschaften' #define EP_BIT_GRID (1 << 0) #define EP_BIT_MCDUFFIN (1 << 1) #define EP_BIT_RECTANGLE (1 << 2) @@ -48,6 +48,7 @@ #define EP_BIT_INACTIVE (1 << 11) #define EP_BIT_WALL (1 << 12) #define EP_BIT_PACMAN (1 << 13) +#define EP_BIT_ENVELOPE (1 << 14) #define IS_GRID(e) (Elementeigenschaften[e] & EP_BIT_GRID) #define IS_MCDUFFIN(e) (Elementeigenschaften[e] & EP_BIT_MCDUFFIN) @@ -63,6 +64,7 @@ #define IS_INACTIVE(e) (Elementeigenschaften[e] & EP_BIT_INACTIVE) #define IS_MM_WALL(e) (Elementeigenschaften[e] & EP_BIT_WALL) #define IS_PACMAN(e) (Elementeigenschaften[e] & EP_BIT_PACMAN) +#define IS_ENVELOPE(e) (Elementeigenschaften[e] & EP_BIT_ENVELOPE) #define IS_WALL_STEEL(e) ((e) >= EL_WALL_STEEL_START && \ (e) <= EL_WALL_STEEL_END) @@ -122,11 +124,17 @@ (e) == EL_BOMB || \ IS_WALL_AMOEBA(e)) +#define IS_ENVELOPE_OPENING(e) ((e) >= EL_ENVELOPE_OPENING_START && \ + (e) <= EL_ENVELOPE_OPENING_END) + +#define ENVELOPE_NR(e) ((e) - EL_ENVELOPE_1) +#define ENVELOPE_OPENING_NR(e) ((e) - EL_ENVELOPE_1_OPENING) + #define CAN_MOVE(e) ((e) == EL_PACMAN) -#define IS_FREE(x,y) (Feld[x][y] == EL_EMPTY) +#define IS_FREE(x,y) (Tile[x][y] == EL_EMPTY) #define IS_MOVING(x,y) (MovPos[x][y] != 0) -#define IS_BLOCKED(x,y) (Feld[x][y] == EL_BLOCKED) +#define IS_BLOCKED(x,y) (Tile[x][y] == EL_BLOCKED) #define IS_DRAWABLE(e) ((e) < EL_BLOCKED) #define IS_NOT_DRAWABLE(e) ((e) >= EL_BLOCKED) @@ -135,7 +143,7 @@ #define WALL_BASE(e) ((e) & 0xfff0) #define WALL_BITS(e) ((e) & 0x000f) -/* Bitmaps with graphic file */ +// Bitmaps with graphic file #define PIX_BACK 0 #define PIX_DOOR 1 #define PIX_TOONS 2 @@ -143,50 +151,53 @@ #define PIX_BIGFONT 4 #define PIX_SMALLFONT 5 #define PIX_MEDIUMFONT 6 -/* Bitmaps without graphic file */ +// Bitmaps without graphic file #define PIX_DB_DOOR 7 #define NUM_PICTURES 7 #define NUM_BITMAPS 8 -/* boundaries of arrays etc. */ +// boundaries of arrays etc. #define MAX_PLAYER_NAME_LEN 10 #define MAX_LEVEL_NAME_LEN 32 #define MAX_LEVEL_AUTHOR_LEN 32 #define MAX_SCORE_ENTRIES 100 -#define MAX_ELEMENTS 700 /* 500 static + 200 runtime */ - -#define LEVEL_SCORE_ELEMENTS 16 /* level elements with score */ - -#define MICROLEVEL_SCROLL_DELAY 50 /* delay for scrolling micro level */ -#define MICROLEVEL_LABEL_DELAY 250 /* delay for micro level label */ +#define MAX_ELEMENTS 700 // 500 static + 200 runtime + +#define MICROLEVEL_SCROLL_DELAY 50 // delay for scrolling micro level +#define MICROLEVEL_LABEL_DELAY 250 // delay for micro level label + +// score for elements +#define SC_COLLECTIBLE 0 +#define SC_UNUSED_1 1 +#define SC_UNUSED_2 2 +#define SC_UNUSED_3 3 +#define SC_UNUSED_4 4 +#define SC_UNUSED_5 5 +#define SC_PACMAN 6 +#define SC_UNUSED_7 7 +#define SC_UNUSED_8 8 +#define SC_KEY 9 +#define SC_TIME_BONUS 10 +#define SC_UNUSED_11 11 +#define SC_UNUSED_12 12 +#define SC_UNUSED_13 13 +#define SC_LIGHTBALL 14 +#define SC_UNUSED_15 15 + +#define LEVEL_SCORE_ELEMENTS 16 // level elements with score -struct HiScore_MM -{ - char Name[MAX_PLAYER_NAME_LEN + 1]; - int Score; -}; -extern Bitmap *pix[]; -extern DrawBuffer *fieldbuffer; extern DrawBuffer *drawto_field; - -extern int joystick_device; -extern char *joystick_device_name[]; +extern DrawBuffer *bitmap_db_field; extern int game_status; extern boolean level_editor_test_game; -extern boolean network_playing; - -extern int key_joystick_mapping; -extern int global_joystick_status, joystick_status; -extern int sound_status; -extern boolean sound_loops_allowed; extern boolean redraw[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern int redraw_x1, redraw_y1; -extern short Feld[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern short Tile[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short Ur[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short Hit[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short Box[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; @@ -200,9 +211,14 @@ extern short Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short Frame[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -extern short JustStopped[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; extern short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -extern short AmoebaCnt[MAX_NUM_AMOEBA], AmoebaCnt2[MAX_NUM_AMOEBA]; +extern short AmoebaCnt[MAX_NUM_AMOEBA]; +extern short AmoebaCnt2[MAX_NUM_AMOEBA]; +extern short ExplodePhase[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; + +extern int GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +extern int GfxElement[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; + extern unsigned int Elementeigenschaften[MAX_ELEMENTS]; extern int level_nr; @@ -215,40 +231,30 @@ extern int FfwdFrameDelay; extern int BX1, BY1, BX2, BY2; extern int SBX_Left, SBX_Right; extern int SBY_Upper, SBY_Lower; -extern int ZX, ZY, ExitX, ExitY; -extern int AllPlayersGone; extern int TimeFrames, TimePlayed, TimeLeft; -extern boolean SiebAktiv; -extern int SiebCount; extern struct LevelInfo_MM native_mm_level; -extern struct HiScore_MM highscore[]; -extern struct TapeInfo tape; -extern struct SetupInfo setup; extern struct GameInfo_MM game_mm; extern struct LaserInfo laser; -extern struct GlobalInfo global; extern short LX, LY, XS, YS, ELX, ELY; extern short CT, Ct; +extern int dSX, dSY; +extern int cSX, cSY; +extern int cSX2, cSY2; +extern int cFX, cFY; + extern Pixel pen_fg, pen_bg, pen_ray, pen_magicolor[2]; extern int color_status; extern struct XY Step[]; extern short Sign[16]; -extern char *sound_name[]; -extern int background_loop[]; -extern int num_bg_loops; extern char *element_info[]; extern int num_element_info; -/* often used screen positions */ -#define SX 8 -#define SY 8 -#define REAL_SX (SX - 2) -#define REAL_SY (SY - 2) +// often used screen positions #define DX 534 #define DY 60 #define EX DX @@ -303,7 +309,7 @@ extern int num_element_info; #define MICRO_FONT_STARTY (MICRO_DF_STARTY + 8 * MICRO_TILEY) #define MICRO_FONT_PER_LINE 8 -/* wall positions (that can be OR'ed together) */ +// wall positions (that can be OR'ed together) #define WALL_TOPLEFT 1 #define WALL_TOPRIGHT 2 #define WALL_BOTTOMLEFT 4 @@ -313,11 +319,11 @@ extern int num_element_info; #define WALL_TOP (WALL_TOPLEFT | WALL_TOPRIGHT) #define WALL_BOTTOM (WALL_BOTTOMLEFT | WALL_BOTTOMRIGHT) -/* game elements: -** 0 - 499: real elements, stored in level file -** 500 - 699: flag elements, only used at runtime -*/ -/* "real" level elements */ +// game elements: +// 0 - 499: real elements, stored in level file +// 500 - 699: flag elements, only used at runtime + +// "real" level elements #define EL_MM_START 0 #define EL_MM_START_1 EL_MM_START @@ -454,8 +460,12 @@ extern int num_element_info; #define EL_GRID_WOOD_03 (EL_GRID_WOOD_START + 3) #define EL_GRID_WOOD_END EL_GRID_WOOD_03 #define EL_FUEL_EMPTY 155 +#define EL_ENVELOPE_1 156 +#define EL_ENVELOPE_2 157 +#define EL_ENVELOPE_3 158 +#define EL_ENVELOPE_4 159 -#define EL_MM_END_1 155 +#define EL_MM_END_1 159 #define EL_CHAR_START 160 #define EL_CHAR_ASCII0 (EL_CHAR_START - 32) @@ -498,7 +508,7 @@ extern int num_element_info; #define EL_MM_START_2 240 -/* elements for "Deflektor" style levels */ +// elements for "Deflektor" style levels #define EL_DF_START EL_MM_START_2 #define EL_DF_MIRROR_START EL_DF_START @@ -521,25 +531,25 @@ extern int num_element_info; #define EL_DF_MIRROR_END EL_DF_MIRROR_15 #define EL_GRID_WOOD_FIXED_START 256 -#define EL_GRID_WOOD_FIXED_00 (EL_GRID_WOOD_FIXED_START + 0) /* 0.0° */ -#define EL_GRID_WOOD_FIXED_01 (EL_GRID_WOOD_FIXED_START + 1) /* 22.5° */ -#define EL_GRID_WOOD_FIXED_02 (EL_GRID_WOOD_FIXED_START + 2) /* 45.0° */ -#define EL_GRID_WOOD_FIXED_03 (EL_GRID_WOOD_FIXED_START + 3) /* 67.5° */ -#define EL_GRID_WOOD_FIXED_04 (EL_GRID_WOOD_FIXED_START + 4) /* 90.0° */ -#define EL_GRID_WOOD_FIXED_05 (EL_GRID_WOOD_FIXED_START + 5) /* 112.5° */ -#define EL_GRID_WOOD_FIXED_06 (EL_GRID_WOOD_FIXED_START + 6) /* 135.0° */ -#define EL_GRID_WOOD_FIXED_07 (EL_GRID_WOOD_FIXED_START + 7) /* 157.5° */ +#define EL_GRID_WOOD_FIXED_00 (EL_GRID_WOOD_FIXED_START + 0) // 0.0° +#define EL_GRID_WOOD_FIXED_01 (EL_GRID_WOOD_FIXED_START + 1) // 22.5° +#define EL_GRID_WOOD_FIXED_02 (EL_GRID_WOOD_FIXED_START + 2) // 45.0° +#define EL_GRID_WOOD_FIXED_03 (EL_GRID_WOOD_FIXED_START + 3) // 67.5° +#define EL_GRID_WOOD_FIXED_04 (EL_GRID_WOOD_FIXED_START + 4) // 90.0° +#define EL_GRID_WOOD_FIXED_05 (EL_GRID_WOOD_FIXED_START + 5) // 112.5° +#define EL_GRID_WOOD_FIXED_06 (EL_GRID_WOOD_FIXED_START + 6) // 135.0° +#define EL_GRID_WOOD_FIXED_07 (EL_GRID_WOOD_FIXED_START + 7) // 157.5° #define EL_GRID_WOOD_FIXED_END EL_GRID_WOOD_FIXED_07 #define EL_GRID_STEEL_FIXED_START 264 -#define EL_GRID_STEEL_FIXED_00 (EL_GRID_STEEL_FIXED_START + 0) /* 0.0° */ -#define EL_GRID_STEEL_FIXED_01 (EL_GRID_STEEL_FIXED_START + 1) /* 22.5° */ -#define EL_GRID_STEEL_FIXED_02 (EL_GRID_STEEL_FIXED_START + 2) /* 45.0° */ -#define EL_GRID_STEEL_FIXED_03 (EL_GRID_STEEL_FIXED_START + 3) /* 67.5° */ -#define EL_GRID_STEEL_FIXED_04 (EL_GRID_STEEL_FIXED_START + 4) /* 90.0° */ -#define EL_GRID_STEEL_FIXED_05 (EL_GRID_STEEL_FIXED_START + 5) /* 112.5° */ -#define EL_GRID_STEEL_FIXED_06 (EL_GRID_STEEL_FIXED_START + 6) /* 135.0° */ -#define EL_GRID_STEEL_FIXED_07 (EL_GRID_STEEL_FIXED_START + 7) /* 157.5° */ +#define EL_GRID_STEEL_FIXED_00 (EL_GRID_STEEL_FIXED_START + 0) // 0.0° +#define EL_GRID_STEEL_FIXED_01 (EL_GRID_STEEL_FIXED_START + 1) // 22.5° +#define EL_GRID_STEEL_FIXED_02 (EL_GRID_STEEL_FIXED_START + 2) // 45.0° +#define EL_GRID_STEEL_FIXED_03 (EL_GRID_STEEL_FIXED_START + 3) // 67.5° +#define EL_GRID_STEEL_FIXED_04 (EL_GRID_STEEL_FIXED_START + 4) // 90.0° +#define EL_GRID_STEEL_FIXED_05 (EL_GRID_STEEL_FIXED_START + 5) // 112.5° +#define EL_GRID_STEEL_FIXED_06 (EL_GRID_STEEL_FIXED_START + 6) // 135.0° +#define EL_GRID_STEEL_FIXED_07 (EL_GRID_STEEL_FIXED_START + 7) // 157.5° #define EL_GRID_STEEL_FIXED_END EL_GRID_STEEL_FIXED_07 #define EL_DF_WALL_WOOD 272 @@ -634,7 +644,7 @@ extern int num_element_info; #define EL_BEAMER_BLUE_START 404 #define EL_BEAMER_BLUE_END (EL_BEAMER_BLUE_START + 15) -/* element definitions partially used for drawing graphics */ +// element definitions partially used for drawing graphics #define EL_MCDUFFIN 420 #define EL_PACMAN 421 #define EL_FUSE_OFF 422 @@ -650,12 +660,21 @@ extern int num_element_info; #define EL_MM_END_2 430 #define EL_MM_END EL_MM_END_2 -/* "real" (and therefore drawable) runtime elements */ +// "real" (and therefore drawable) runtime elements #define EL_EXIT_OPENING 500 #define EL_EXIT_CLOSING 501 #define EL_GRAY_BALL_OPENING 502 #define EL_ICE_WALL_SHRINKING 503 #define EL_AMOEBA_WALL_GROWING 504 +#define EL_BOMB_ACTIVE 505 +#define EL_MINE_ACTIVE 506 +#define EL_ENVELOPE_1_OPENING 507 +#define EL_ENVELOPE_2_OPENING 508 +#define EL_ENVELOPE_3_OPENING 509 +#define EL_ENVELOPE_4_OPENING 510 + +#define EL_ENVELOPE_OPENING_START EL_ENVELOPE_1_OPENING +#define EL_ENVELOPE_OPENING_END EL_ENVELOPE_4_OPENING #define EL_WALL_CHANGING 512 #define EL_WALL_CHANGING_START (EL_WALL_CHANGING + 0) @@ -663,30 +682,17 @@ extern int num_element_info; #define EL_FIRST_RUNTIME_EL EL_EXIT_OPENING -/* "unreal" (and therefore not drawable) runtime elements */ +// "unreal" (and therefore not drawable) runtime elements #define EL_BLOCKED 600 #define EL_EXPLODING_OPAQUE 601 #define EL_EXPLODING_TRANSP 602 -/* dummy elements (never used as game elements, only used as graphics) */ -#define EL_MM_MASK_MCDUFFIN_RIGHT 700 -#define EL_MM_MASK_MCDUFFIN_UP 701 -#define EL_MM_MASK_MCDUFFIN_LEFT 702 -#define EL_MM_MASK_MCDUFFIN_DOWN 703 -#define EL_MM_MASK_GRID_1 704 -#define EL_MM_MASK_GRID_2 705 -#define EL_MM_MASK_GRID_3 706 -#define EL_MM_MASK_GRID_4 707 -#define EL_MM_MASK_RECTANGE 708 -#define EL_MM_MASK_CIRCLE 709 - - -/* game graphics: -** 0 - 191: graphics from "MirrorScreen" -** 192 - 255: pseudo graphics mapped to "MirrorScreen" -** 256 - 511: graphics from "MirrorFont" -** 512 - 767: graphics from "MirrorDF" -*/ + +// game graphics: +// 0 - 191: graphics from "MirrorScreen" +// 192 - 255: pseudo graphics mapped to "MirrorScreen" +// 256 - 511: graphics from "MirrorFont" +// 512 - 767: graphics from "MirrorDF" #define IMG_EMPTY IMG_EMPTY_SPACE @@ -701,9 +707,9 @@ extern int num_element_info; #define NUM_TILES 512 -/* graphics from "MirrorScreen" */ +// graphics from "MirrorScreen" #define GFX_EMPTY (-1) -/* row 0 (0) */ +// row 0 (0) #define GFX_MIRROR_START 0 #define GFX_MIRROR GFX_MIRROR_START #define GFX_MIRROR_00 (GFX_MIRROR_START + 0) @@ -723,7 +729,7 @@ extern int num_element_info; #define GFX_MIRROR_14 (GFX_MIRROR_START + 14) #define GFX_MIRROR_15 (GFX_MIRROR_START + 15) #define GFX_MIRROR_END GFX_MIRROR_15 -/* row 1 (16) */ +// row 1 (16) #define GFX_GRID_STEEL_START 16 #define GFX_GRID_STEEL GFX_GRID_STEEL_START #define GFX_GRID_STEEL_00 (GFX_GRID_STEEL_START + 0) @@ -742,7 +748,7 @@ extern int num_element_info; #define GFX_EXIT_OPEN 27 #define GFX_KETTLE 28 #define GFX_EXPLOSION_KETTLE 29 -/* row 2 (32) */ +// row 2 (32) #define GFX_PRISM 32 #define GFX_WALL_SEVERAL 33 #define GFX_WALL_ANIMATION 34 @@ -758,10 +764,10 @@ extern int num_element_info; #define GFX_BALL_BLUE 45 #define GFX_BALL_YELLOW 46 #define GFX_BALL_GRAY 47 -/* row 3 (48) */ +// row 3 (48) #define GFX_BEAMER_START 48 #define GFX_BEAMER_END 63 -/* row 4 (64) */ +// row 4 (64) #define GFX_PACMAN_START 64 #define GFX_PACMAN GFX_PACMAN_START #define GFX_PACMAN_RIGHT (GFX_PACMAN_START + 0) @@ -771,10 +777,10 @@ extern int num_element_info; #define GFX_EXPLOSION_START 72 #define GFX_EXPLOSION_SHORT 76 #define GFX_EXPLOSION_LAST 78 -/* row 5 (80) */ +// row 5 (80) #define GFX_POLAR_START 80 #define GFX_POLAR_END 95 -/* row 6 (96) */ +// row 6 (96) #define GFX_POLAR_CROSS_START 96 #define GFX_POLAR_CROSS GFX_POLAR_CROSS_START #define GFX_POLAR_CROSS_00 (GFX_POLAR_CROSS_START + 0) @@ -787,7 +793,7 @@ extern int num_element_info; #define GFX_MIRROR_FIXED_01 (GFX_MIRROR_FIXED_START + 1) #define GFX_MIRROR_FIXED_02 (GFX_MIRROR_FIXED_START + 2) #define GFX_MIRROR_FIXED_03 (GFX_MIRROR_FIXED_START + 3) -/* row 7 (112) */ +// row 7 (112) #define GFX_BLOCK_STONE 112 #define GFX_GATE_WOOD 113 #define GFX_FUEL_FULL 114 @@ -796,7 +802,7 @@ extern int num_element_info; #define GFX_GRID_WOOD_01 117 #define GFX_GRID_WOOD_02 118 #define GFX_GRID_WOOD_03 119 -/* row 8 (128) */ +// row 8 (128) #define GFX_ARROW_BLUE_LEFT 128 #define GFX_ARROW_BLUE_RIGHT 129 #define GFX_ARROW_BLUE_UP 130 @@ -805,10 +811,10 @@ extern int num_element_info; #define GFX_ARROW_RED_RIGHT 133 #define GFX_ARROW_RED_UP 134 #define GFX_ARROW_RED_DOWN 135 -/* row 9 (144) */ +// row 9 (144) #define GFX_SCROLLBAR_BLUE 144 #define GFX_SCROLLBAR_RED 145 -/* row 10 (160) */ +// row 10 (160) #define GFX_MASK_CIRCLE 160 #define GFX_MASK_RECTANGLE 161 #define GFX_MASK_RECTANGLE2 162 @@ -817,13 +823,13 @@ extern int num_element_info; #define GFX_MASK_GRID_01 165 #define GFX_MASK_GRID_02 166 #define GFX_MASK_GRID_03 167 -/* row 11 (176) */ +// row 11 (176) #define GFX_MASK_MCDUFFIN_00 176 #define GFX_MASK_MCDUFFIN_01 177 #define GFX_MASK_MCDUFFIN_02 178 #define GFX_MASK_MCDUFFIN_03 179 -/* pseudo-graphics; will be mapped to other graphics */ +// pseudo-graphics; will be mapped to other graphics #define GFX_WALL_STEEL 192 #define GFX_WALL_WOOD 193 #define GFX_WALL_ICE 194 @@ -836,7 +842,7 @@ extern int num_element_info; #define GFX_KUGEL_GELB GFX_BALL_YELLOW #define GFX_KUGEL_GRAU GFX_BALL_GRAY -/* graphics from "MirrorFont" */ +// graphics from "MirrorFont" #define GFX_CHAR_START (GFX_START_MIRRORFONT) #define GFX_CHAR_ASCII0 (GFX_CHAR_START - 32) #define GFX_CHAR_AUSRUF (GFX_CHAR_ASCII0 + 33) @@ -868,7 +874,7 @@ extern int num_element_info; #define GFX_CHAR_COPY (GFX_CHAR_ASCII0 + 94) #define GFX_CHAR_END (GFX_CHAR_START + 79) -/* graphics from "MirrorDF" */ +// graphics from "MirrorDF" #define GFX_DF_MIRROR_00 (GFX_START_MIRRORDF + 0 * DF_PER_LINE + 0) #define GFX_DF_MIRROR_01 (GFX_START_MIRRORDF + 0 * DF_PER_LINE + 1) #define GFX_DF_MIRROR_02 (GFX_START_MIRRORDF + 0 * DF_PER_LINE + 2) @@ -984,7 +990,7 @@ extern int num_element_info; #define GFX_FIBRE_OPTIC_ED_06 (GFX_START_MIRRORDF + 11 * DF_PER_LINE + 6) #define GFX_FIBRE_OPTIC_ED_07 (GFX_START_MIRRORDF + 11 * DF_PER_LINE + 7) -/* the names of the sounds */ +// the names of the sounds #define SND_AMOEBE 0 #define SND_ANTIGRAV 1 #define SND_AUTSCH 2 @@ -1008,13 +1014,68 @@ extern int num_element_info; #define NUM_SOUNDS 20 -/* laser angles (directions) */ +// values for graphics/sounds action types +#define MM_ACTION_DEFAULT 0 +#define MM_ACTION_WAITING 1 +#define MM_ACTION_FALLING 2 +#define MM_ACTION_MOVING 3 +#define MM_ACTION_DIGGING 4 +#define MM_ACTION_SNAPPING 5 +#define MM_ACTION_COLLECTING 6 +#define MM_ACTION_DROPPING 7 +#define MM_ACTION_PUSHING 8 +#define MM_ACTION_WALKING 9 +#define MM_ACTION_PASSING 10 +#define MM_ACTION_IMPACT 11 +#define MM_ACTION_BREAKING 12 +#define MM_ACTION_ACTIVATING 13 +#define MM_ACTION_DEACTIVATING 14 +#define MM_ACTION_OPENING 15 +#define MM_ACTION_CLOSING 16 +#define MM_ACTION_ATTACKING 17 +#define MM_ACTION_GROWING 18 +#define MM_ACTION_SHRINKING 19 +#define MM_ACTION_ACTIVE 20 +#define MM_ACTION_FILLING 21 +#define MM_ACTION_EMPTYING 22 +#define MM_ACTION_CHANGING 23 +#define MM_ACTION_EXPLODING 24 +#define MM_ACTION_BORING 25 +#define MM_ACTION_BORING_1 26 +#define MM_ACTION_BORING_2 27 +#define MM_ACTION_BORING_3 28 +#define MM_ACTION_BORING_4 29 +#define MM_ACTION_BORING_5 30 +#define MM_ACTION_BORING_6 31 +#define MM_ACTION_BORING_7 32 +#define MM_ACTION_BORING_8 33 +#define MM_ACTION_BORING_9 34 +#define MM_ACTION_BORING_10 35 +#define MM_ACTION_SLEEPING 36 +#define MM_ACTION_SLEEPING_1 37 +#define MM_ACTION_SLEEPING_2 38 +#define MM_ACTION_SLEEPING_3 39 +#define MM_ACTION_AWAKENING 40 +#define MM_ACTION_DYING 41 +#define MM_ACTION_TURNING 42 +#define MM_ACTION_TURNING_FROM_LEFT 43 +#define MM_ACTION_TURNING_FROM_RIGHT 44 +#define MM_ACTION_TURNING_FROM_UP 45 +#define MM_ACTION_TURNING_FROM_DOWN 46 +#define MM_ACTION_SMASHED_BY_ROCK 47 +#define MM_ACTION_SMASHED_BY_SPRING 48 +#define MM_ACTION_EATING 49 +#define MM_ACTION_TWINKLING 50 +#define MM_ACTION_SPLASHING 51 +#define MM_ACTION_HITTING 52 + +// laser angles (directions) #define ANG_RAY_RIGHT 0 #define ANG_RAY_UP 4 #define ANG_RAY_LEFT 8 #define ANG_RAY_DOWN 12 -/* laser angles (degree) */ +// laser angles (degree) #define ANG_RAY_0 0 #define ANG_RAY_90 4 #define ANG_RAY_180 8 @@ -1024,18 +1085,18 @@ extern int num_element_info; #define IS_HORIZ_ANGLE(angle) (!((angle) % 8)) #define IS_VERT_ANGLE(angle) ((angle) % 8) -/* mirror angles */ +// mirror angles #define ANG_MIRROR_0 0 #define ANG_MIRROR_45 4 #define ANG_MIRROR_90 8 #define ANG_MIRROR_135 12 -/* positions for checking where laser already hits element */ +// positions for checking where laser already hits element #define HIT_POS_CENTER 1 #define HIT_POS_EDGE 2 #define HIT_POS_BETWEEN 4 -/* masks for scanning elements */ +// masks for scanning elements #define HIT_MASK_NO_HIT 0 #define HIT_MASK_TOPLEFT 1 #define HIT_MASK_TOPRIGHT 2 @@ -1047,7 +1108,7 @@ extern int num_element_info; #define HIT_MASK_BOTTOM (HIT_MASK_BOTTOMLEFT | HIT_MASK_BOTTOMRIGHT) #define HIT_MASK_ALL (HIT_MASK_LEFT | HIT_MASK_RIGHT) -/* step values for rotating elements */ +// step values for rotating elements #define ROTATE_NO_ROTATING 0 #define ROTATE_LEFT (+1) #define ROTATE_RIGHT (-1) @@ -1055,28 +1116,13 @@ extern int num_element_info; (button) == MB_RIGHTBUTTON ? ROTATE_RIGHT : \ ROTATE_NO_ROTATING) -/* game over values */ +// game over values #define GAME_OVER_NO_ENERGY 1 #define GAME_OVER_OVERLOADED 2 #define GAME_OVER_BOMB 3 +#define GAME_OVER_DELAYED 4 -/* values for game_status */ -#define EXITGAME 0 -#define MAINMENU 1 -#define PLAYING 2 -#define LEVELED 3 -#define HELPSCREEN 4 -#define CHOOSELEVEL 5 -#define TYPENAME 6 -#define HALLOFFAME 7 -#define SETUP 8 - -/* return values for GameActions */ -#define ACT_GO_ON 0 -#define ACT_GAME_OVER 1 -#define ACT_NEW_GAME 2 - -/* values for color_status */ +// values for color_status #define STATIC_COLORS 0 #define DYNAMIC_COLORS 1 @@ -1099,31 +1145,31 @@ extern int num_element_info; #define X11_ICONMASK_FILENAME "mirrormagic_iconmask.xbm" #define MSDOS_POINTER_FILENAME "mouse.pcx" -/* functions for version handling */ +// functions for version handling #define MM_VERSION_IDENT(x,y,z) VERSION_IDENT(x,y,z,0) -#define MM_VERSION_MAJOR(x) VERSION_MAJOR(x) -#define MM_VERSION_MINOR(x) VERSION_MINOR(x) -#define MM_VERSION_PATCH(x) VERSION_PATCH(x) - -/* file version numbers for resource files (levels, score, setup, etc.) -** currently supported/known file version numbers: -** 1.4 (still in use) -** 2.0 (actual) -*/ +#define MM_VERSION_MAJOR(x) VERSION_PART_1(x) +#define MM_VERSION_MINOR(x) VERSION_PART_2(x) +#define MM_VERSION_PATCH(x) VERSION_PART_3(x) + +// file version numbers for resource files (levels, score, setup, etc.) +// currently supported/known file version numbers: +// 1.4 (still in use) +// 2.0 (actual) + #define MM_FILE_VERSION_1_4 MM_VERSION_IDENT(1,4,0) #define MM_FILE_VERSION_2_0 MM_VERSION_IDENT(2,0,0) -/* file version does not change for every program version, but is changed - when new features are introduced that are incompatible with older file - versions, so that they can be treated accordingly */ +// file version does not change for every program version, but is changed +// when new features are introduced that are incompatible with older file +// versions, so that they can be treated accordingly #define MM_FILE_VERSION_ACTUAL MM_FILE_VERSION_2_0 #define MM_GAME_VERSION_ACTUAL MM_VERSION_IDENT(PROGRAM_VERSION_MAJOR, \ PROGRAM_VERSION_MINOR, \ PROGRAM_VERSION_PATCH) -/* sound control */ +// sound control #define ST(x) (((x) - 8) * 16) -#endif /* MM_MAIN_H */ +#endif // MM_MAIN_H