// (c) 1994-2017 by Artsoft Entertainment
// Holger Schemel
// info@artsoft.org
-// http://www.artsoft.org/
+// https://www.artsoft.org/
// ----------------------------------------------------------------------------
// mm_main.h
// ============================================================================
IS_WALL_AMOEBA(e))
#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)
#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];
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 unsigned int Elementeigenschaften[MAX_ELEMENTS];
extern int level_nr;
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 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;
#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
#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
#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
#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, \