#define MM_MAX_LEVEL_AUTHOR_LEN 32
-#define EL_EMPTY_NATIVE_MM 0
-#define EL_DF_EMPTY_NATIVE_MM 304
+#define EL_MM_START_1_NATIVE 0
+#define EL_MM_END_1_NATIVE 155
-#define EL_MM_START_NATIVE_MM 0
-#define EL_MM_END_NATIVE_MM 430
+#define EL_MM_CHAR_START_NATIVE 160
+#define EL_MM_CHAR_END_NATIVE 239
-#define EL_CHAR_START_NATIVE_MM 160
-#define EL_CHAR_END_NATIVE_MM 239
+#define EL_MM_START_2_NATIVE 240
+#define EL_MM_END_2_NATIVE 430
-#define EL_DF_START_NATIVE_MM 240
-#define EL_DF_END_NATIVE_MM 355
+#define EL_MM_RUNTIME_START_NATIVE 500
+#define EL_MM_RUNTIME_END_NATIVE 504
-#define EL_MM_RUNTIME_START_NATIVE_MM 500
-#define EL_MM_RUNTIME_END_NATIVE_MM 504
+#define EL_MM_DUMMY_START_NATIVE 700
+#define EL_MM_DUMMY_END_NATIVE 709
-#define EL_MM_DUMMY_START_NATIVE_MM 700
-#define EL_MM_DUMMY_END_NATIVE_MM 709
+/* elements to be specially mapped */
+#define EL_MM_EMPTY_NATIVE 0
+#define EL_DF_EMPTY_NATIVE 304
+
+/* sounds */
+#define SND_MM_GAME_LEVELTIME_CHARGING 0
+#define SND_MM_GAME_HEALTH_CHARGING 1
/* ------------------------------------------------------------------------- */
boolean cheat_no_overload;
boolean cheat_no_explosion;
+
+ int laser_overload_value;
+ boolean laser_enabled;
};
struct LevelInfo_MM
int score[MM_LEVEL_SCORE_ELEMENTS];
int amoeba_speed;
int time_fuse;
+ int time_bomb;
+ int time_ball;
+ int time_block;
short field[MAX_PLAYFIELD_WIDTH][MAX_PLAYFIELD_HEIGHT];
};
struct EngineSnapshotInfo_MM
{
+ struct GameInfo_MM game_mm;
+
+ struct LaserInfo laser;
+
+ short Ur[MAX_PLAYFIELD_WIDTH][MAX_PLAYFIELD_HEIGHT];
+ short Hit[MAX_PLAYFIELD_WIDTH][MAX_PLAYFIELD_HEIGHT];
+ short Box[MAX_PLAYFIELD_WIDTH][MAX_PLAYFIELD_HEIGHT];
+ short Angle[MAX_PLAYFIELD_WIDTH][MAX_PLAYFIELD_HEIGHT];
+ short Frame[MAX_PLAYFIELD_WIDTH][MAX_PLAYFIELD_HEIGHT];
+
+ short LX,LY, XS,YS, ELX,ELY;
+ short CT,Ct;
+
+ int last_LX, last_LY, last_hit_mask;
+ int hold_x, hold_y;
+ int pacman_nr;
+
+ unsigned int rotate_delay;
+ unsigned int pacman_delay;
+ unsigned int energy_delay;
+ unsigned int overload_delay;
};
extern struct LevelInfo_MM native_mm_level;
extern struct EngineSnapshotInfo_MM engine_snapshot_mm;
-extern void mm_open_all();
-extern void mm_close_all();
+extern short Ur[MM_MAX_PLAYFIELD_WIDTH][MM_MAX_PLAYFIELD_HEIGHT];
+
+extern void mm_open_all(void);
+extern void mm_close_all(void);
+
+void InitElementProperties_MM(void);
-extern void InitGfxBuffers_MM();
+extern void InitGfxBuffers_MM(void);
-extern void InitGameEngine_MM();
-extern void GameActions_MM(byte *, boolean);
+extern void InitGameEngine_MM(void);
+extern void InitGameActions_MM(void);
+extern void GameActions_MM(struct MouseActionInfo, boolean);
+
+extern void DrawLaser_MM(void);
+
+extern boolean ClickElement(int, int, int);
extern unsigned int InitEngineRandom_MM(int);
-extern void setLevelInfoToDefaults_MM();
-extern void copyInternalEngineVars_MM();
+extern void setLevelInfoToDefaults_MM(void);
+extern void copyInternalEngineVars_MM(void);
extern boolean LoadNativeLevel_MM(char *, boolean);
extern void SaveNativeLevel_MM(char *);
-extern int getFieldbufferOffsetX_MM();
-extern int getFieldbufferOffsetY_MM();
+extern int getFieldbufferOffsetX_MM(void);
+extern int getFieldbufferOffsetY_MM(void);
extern void BlitScreenToBitmap_MM(Bitmap *);
-extern void RedrawPlayfield_MM();
+extern void RedrawPlayfield_MM(void);
-extern void LoadEngineSnapshotValues_MM();
+extern void LoadEngineSnapshotValues_MM(void);
extern void SaveEngineSnapshotValues_MM(ListNode **);
+extern int getButtonFromTouchPosition(int, int, int, int);
+
#endif /* GAME_MM_EXPORT_H */