#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,
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 joy_spin:1;
};
+
+/* ------------------------------------------------------------------------- */
+/* definitions and structures for use by the main game functions */
+/* ------------------------------------------------------------------------- */
+
+/* values for native Emerald Mine game version */
+#define FILE_VERSION_EM_V3 3
+#define FILE_VERSION_EM_V4 4
+#define FILE_VERSION_EM_V5 5
+#define FILE_VERSION_EM_V6 6
+
+#define FILE_VERSION_EM_ACTUAL FILE_VERSION_EM_V6
+
struct LevelInfo_EM
{
+ int file_version;
+
struct LEVEL *lev;
struct PLAYER *ply1, *ply2;
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;
+
+ int unique_identifier; /* used to identify needed screen updates */
+};
+
#endif /* MAIN_EM_H */