1 #ifndef GAME_MM_EXPORT_H
2 #define GAME_MM_EXPORT_H
4 /* ========================================================================= */
5 /* functions and definitions exported from game_mm to main program */
6 /* ========================================================================= */
8 /* ------------------------------------------------------------------------- */
9 /* constant definitions */
10 /* ------------------------------------------------------------------------- */
12 #define MM_MAX_PLAYFIELD_WIDTH MAX_PLAYFIELD_WIDTH
13 #define MM_MAX_PLAYFIELD_HEIGHT MAX_PLAYFIELD_HEIGHT
15 #define MM_STD_PLAYFIELD_WIDTH 16
16 #define MM_STD_PLAYFIELD_HEIGHT 12
18 #define MM_MAX_PLAYFIELD_SIZE (MM_MAX_PLAYFIELD_WIDTH * \
19 MM_MAX_PLAYFIELD_HEIGHT)
21 #define MAX_NUM_AMOEBA 100
22 #define MAX_NUM_BEAMERS 8
24 #define MAX_LASER_LEN 256
25 #define MAX_LASER_ENERGY 100
26 #define MAX_LASER_OVERLOAD 100
28 #define MM_LEVEL_SCORE_ELEMENTS 16
30 #define MM_MAX_LEVEL_NAME_LEN 32
31 #define MM_MAX_LEVEL_AUTHOR_LEN 32
34 /* ------------------------------------------------------------------------- */
35 /* data structure definitions */
36 /* ------------------------------------------------------------------------- */
80 struct DamageList damage[MAX_LASER_LEN + 10];
83 struct XY edge[MAX_LASER_LEN + 10];
86 struct BeamerInfo beamer[MAX_NUM_BEAMERS][2];
87 int beamer_edge[MAX_NUM_BEAMERS];
88 int beamer_nr[MAX_NUM_BEAMERS];
98 boolean stops_inside_element;
110 struct CycleList cycle[MM_MAX_PLAYFIELD_SIZE];
113 struct MovingList pacman[MM_MAX_PLAYFIELD_SIZE];
118 int kettles_still_needed;
119 int lights_still_needed;
122 boolean level_solved;
126 boolean cheat_no_overload;
127 boolean cheat_no_explosion;
132 int file_version; /* version of file the level was stored with */
133 int game_version; /* version of game engine to play this level */
134 boolean encoding_16bit_field; /* level contains 16-bit elements */
140 boolean auto_count_kettles;
141 boolean laser_red, laser_green, laser_blue;
142 char name[MM_MAX_LEVEL_NAME_LEN + 1];
143 char author[MM_MAX_LEVEL_AUTHOR_LEN + 1];
144 int score[MM_LEVEL_SCORE_ELEMENTS];
148 short field[MAX_PLAYFIELD_WIDTH][MAX_PLAYFIELD_HEIGHT];
151 struct GraphicInfo_MM
155 struct EngineSnapshotInfo_MM
160 /* ------------------------------------------------------------------------- */
161 /* exported functions */
162 /* ------------------------------------------------------------------------- */
164 extern struct GlobalInfo_MM global_mm_info;
165 extern struct GameInfo_MM game_mm;
166 extern struct LevelInfo_MM native_mm_level;
167 extern struct EngineSnapshotInfo_MM engine_snapshot_mm;
169 extern void mm_open_all();
170 extern void mm_close_all();
172 extern void InitGfxBuffers_MM();
174 extern void InitGameEngine_MM();
175 extern void GameActions_MM(byte *, boolean);
177 extern unsigned int InitEngineRandom_MM(int);
179 extern void setLevelInfoToDefaults_MM();
180 extern void copyInternalEngineVars_MM();
181 extern boolean LoadNativeLevel_MM(char *, boolean);
182 extern void SaveNativeLevel_MM(char *);
184 extern int getFieldbufferOffsetX_MM();
185 extern int getFieldbufferOffsetY_MM();
187 extern void BlitScreenToBitmap_MM(Bitmap *);
188 extern void RedrawPlayfield_MM();
190 extern void LoadEngineSnapshotValues_MM();
191 extern void SaveEngineSnapshotValues_MM(ListNode **);
193 #endif /* GAME_MM_EXPORT_H */