X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_mm%2Fmm_main.h;h=dafaa5d60d043a20df3846b876f41f14bfa087f4;hb=a1658d14b0ff3ddb46cc075aba1dddf7d01c6442;hp=38cb0e792b03d63baf72ecb55a69093dbfc3c924;hpb=64e7c54dce6ea8c063f04198c64c5057d751c928;p=rocksndiamonds.git diff --git a/src/game_mm/mm_main.h b/src/game_mm/mm_main.h index 38cb0e79..dafaa5d6 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 // ============================================================================ @@ -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) @@ -180,32 +188,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 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]; @@ -219,9 +210,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; @@ -234,19 +230,11 @@ 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; @@ -262,9 +250,6 @@ 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; @@ -333,10 +318,10 @@ 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 -*/ +// 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 @@ -474,8 +459,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) @@ -676,6 +665,15 @@ extern int num_element_info; #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) @@ -688,25 +686,12 @@ extern int num_element_info; #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 @@ -1134,22 +1119,7 @@ extern int num_element_info; #define GAME_OVER_NO_ENERGY 1 #define GAME_OVER_OVERLOADED 2 #define GAME_OVER_BOMB 3 - -// 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 +#define GAME_OVER_DELAYED 4 // values for color_status #define STATIC_COLORS 0 @@ -1180,17 +1150,17 @@ extern int num_element_info; #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) -*/ +// 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, \