#ifndef MAIN_EM_H
#define MAIN_EM_H
+#include "../engines.h"
+
+
/* 2000-07-30T11:06:03Z ---------------------------------------------------- */
#define EM_MAX_CAVE_WIDTH 102
#define EM_ENGINE_BAD_ROLL
#define EM_ENGINE_BAD_SPRING
+
+/*
+ -----------------------------------------------------------------------------
+ definition of elements used in the Emerald Mine Club engine;
+ the element names have the following properties:
+ - elements that start with an 'X' can be stored in a level file;
+ - elements that start with an 'Y' indicate moving elements;
+ - elements that end with a 'B' are the "backside" of a moving element.
+ -----------------------------------------------------------------------------
+*/
+
enum
{
Xblank = 0, /* still */
Xball_2,
Xball_2B,
Yball_eat,
+
+#if 1
+ Ykey_1_eat,
+ Ykey_2_eat,
+ Ykey_3_eat,
+ Ykey_4_eat,
+ Ykey_5_eat,
+ Ykey_6_eat,
+ Ykey_7_eat,
+ Ykey_8_eat,
+ Ylenses_eat,
+ Ymagnify_eat,
+ Ygrass_eat,
+ Ydirt_eat,
+#endif
+
Xgrow_ns,
Ygrow_ns_eat,
Xgrow_ew,
Xfake_door_6,
Xfake_door_7,
Xfake_door_8,
+
+#if 1
+ Xfake_acid_1,
+ Xfake_acid_2,
+ Xfake_acid_3,
+ Xfake_acid_4,
+ Xfake_acid_5,
+ Xfake_acid_6,
+ Xfake_acid_7,
+ Xfake_acid_8,
+#endif
+
Xsteel_1,
Xsteel_2,
Xsteel_3,
TILE_MAX
};
+enum
+{
+ SPR_still = 0,
+ SPR_walk = 1,
+ SPR_push = 5,
+ SPR_spray = 9,
+
+ SPR_MAX = 13
+};
+
enum
{
SAMPLE_blank = 0, /* player walks on blank */
unsigned int width; /* playfield width */
unsigned int height; /* playfield height */
- unsigned int time_initial; /* time remaining (initial) */
+
+ unsigned int time_seconds; /* available time (seconds) */
+ unsigned int time_initial; /* available time (initial) */
unsigned int time; /* time remaining (runtime) */
+
unsigned int required_initial; /* emeralds needed (initial) */
unsigned int required; /* emeralds needed (runtime) */
+
unsigned int score; /* score */
/* fill in all below /every/ time you read a level */
unsigned int oldx;
unsigned int oldy;
+ unsigned int last_move_dir;
+
unsigned joy_n:1;
unsigned joy_e:1;
unsigned joy_s:1;
unsigned joy_w:1;
- unsigned joy_fire:1;
+ unsigned joy_snap:1;
+ unsigned joy_drop:1;
unsigned joy_stick:1;
unsigned joy_spin:1;
};
#define FILE_VERSION_EM_ACTUAL FILE_VERSION_EM_V6
+struct GlobalInfo_EM
+{
+ Bitmap *screenbuffer;
+};
+
struct LevelInfo_EM
{
int file_version;
unsigned short cave[EM_MAX_CAVE_WIDTH][EM_MAX_CAVE_HEIGHT];
};
+struct GraphicInfo_EM
+{
+ Bitmap *bitmap;
+ int src_x, src_y;
+ int src_offset_x, src_offset_y;
+ int dst_offset_x, dst_offset_y;
+ int width, height;
+
+ boolean has_crumbled_graphics;
+ Bitmap *crumbled_bitmap;
+ int crumbled_src_x, crumbled_src_y;
+ int crumbled_border_size;
+
+ int unique_identifier; /* used to identify needed screen updates */
+};
+
#endif /* MAIN_EM_H */