{ 2, 2 },
};
struct LevelInfo_EM *level_em = level->native_em_level;
- struct LEVEL *cav = level_em->cav;
+ struct CAVE *cav = level_em->cav;
int i, j, x, y;
cav->width = MIN(level->fieldx, MAX_PLAYFIELD_WIDTH);
{ 2, 2 },
};
struct LevelInfo_EM *level_em = level->native_em_level;
- struct LEVEL *cav = level_em->cav;
+ struct CAVE *cav = level_em->cav;
int i, j, x, y;
level->fieldx = MIN(cav->width, MAX_LEV_FIELDX);
--- /dev/null
+/* 2009-01-25 23:00:34
+ *
+ * intermediate cave structure
+ */
+
+#ifndef CAVE_H
+#define CAVE_H
+
+struct CAVE
+{
+ int width; /* playfield width */
+ int height; /* playfield height */
+
+ int player_x[MAX_PLAYERS]; /* player x pos */
+ int player_y[MAX_PLAYERS]; /* player y pos */
+
+ int time_seconds; /* available time (seconds) */
+ int required_initial; /* emeralds needed */
+
+ int alien_score; /* score for killing alien */
+ int amoeba_time; /* amoeba speed */
+ int android_move_cnt_initial; /* android move counter (initial) */
+ int android_move_time; /* android move reset time */
+ int android_clone_cnt_initial;/* android clone counter (initial) */
+ int android_clone_time; /* android clone reset time */
+ int ball_cnt; /* ball counter */
+ int ball_pos; /* ball array pos counter */
+ int ball_random; /* ball is random flag */
+ int ball_state_initial; /* ball active flag (initial) */
+ int ball_time; /* ball reset time */
+ int bug_score; /* score for killing bug */
+ int diamond_score; /* score for collecting diamond */
+ int dynamite_score; /* score for collecting dynamite */
+ int eater_pos; /* eater array pos */
+ int eater_score; /* score for killing eater */
+ int emerald_score; /* score for collecting emerald */
+ int exit_score; /* score for entering exit */
+ int key_score; /* score for colleting key */
+ int lenses_cnt_initial; /* lenses counter (initial) */
+ int lenses_score; /* score for collecting lenses */
+ int lenses_time; /* lenses reset time */
+ int magnify_cnt_initial; /* magnify counter (initial) */
+ int magnify_score; /* score for collecting magnifier */
+ int magnify_time; /* magnify reset time */
+ int nut_score; /* score for cracking nut */
+ int shine_cnt; /* shine counter for emerald/diamond */
+ int slurp_score; /* score for slurping alien */
+ int tank_score; /* score for killing tank */
+ int wheel_cnt_initial; /* wheel counter (initial) */
+ int wheel_x_initial; /* wheel x pos (initial) */
+ int wheel_y_initial; /* wheel y pos (initial) */
+ int wheel_time; /* wheel reset time */
+ int wind_cnt_initial; /* wind counter (initial) */
+ int wind_direction_initial; /* wind direction (initial) */
+ int wind_time; /* wind reset time */
+ int wonderwall_state_initial; /* wonderwall active flag (initial) */
+ int wonderwall_time_initial; /* wonderwall time (initial) */
+
+ int num_ball_arrays; /* number of ball data arrays used */
+
+ short eater_array[8][9]; /* eater data */
+ short ball_array[8][8]; /* ball data */
+ short android_array[TILE_MAX]; /* android clone table */
+
+ short cave_raw[CAVE_WIDTH][CAVE_HEIGHT];
+};
+
+#endif // CAVE_H
// data structure definitions
// ----------------------------------------------------------------------------
-struct LEVEL
+struct LOGIC
{
int width; /* playfield width */
int height; /* playfield height */
int right; /* playfield right edge */
int bottom; /* playfield bottom edge */
- int player_x[MAX_PLAYERS]; /* player x pos */
- int player_y[MAX_PLAYERS]; /* player y pos */
-
- int time_seconds; /* available time (seconds) */
- int time_initial; /* available time (initial) */
- int time; /* time remaining (runtime) */
-
- int required_initial; /* emeralds needed (initial) */
- int required; /* emeralds needed (runtime) */
-
+ int time; /* time remaining */
+ int required; /* emeralds needed */
int score; /* score */
- /* all below entries must be filled every time a level is read */
-
int alien_score; /* score for killing alien */
int amoeba_time; /* amoeba speed */
- int android_move_cnt_initial; /* android move counter (initial) */
int android_move_cnt; /* android move counter */
int android_move_time; /* android move reset time */
- int android_clone_cnt_initial;/* android clone counter (initial) */
int android_clone_cnt; /* android clone counter */
int android_clone_time; /* android clone reset time */
int ball_cnt; /* ball counter */
int ball_pos; /* ball array pos counter */
int ball_random; /* ball is random flag */
- int ball_state_initial; /* ball active flag (initial) */
int ball_state; /* ball active flag */
int ball_time; /* ball reset time */
int bug_score; /* score for killing bug */
int emerald_score; /* score for collecting emerald */
int exit_score; /* score for entering exit */
int key_score; /* score for colleting key */
- int lenses_cnt_initial; /* lenses counter (initial) */
int lenses_cnt; /* lenses counter */
int lenses_score; /* score for collecting lenses */
int lenses_time; /* lenses reset time */
- int magnify_cnt_initial; /* magnify counter (initial) */
int magnify_cnt; /* magnify counter */
int magnify_score; /* score for collecting magnifier */
int magnify_time; /* magnify reset time */
int shine_cnt; /* shine counter for emerald/diamond */
int slurp_score; /* score for slurping alien */
int tank_score; /* score for killing tank */
- int wheel_cnt_initial; /* wheel counter (initial) */
int wheel_cnt; /* wheel counter */
- int wheel_x_initial; /* wheel x pos (initial) */
int wheel_x; /* wheel x pos */
- int wheel_y_initial; /* wheel y pos (initial) */
int wheel_y; /* wheel y pos */
int wheel_time; /* wheel reset time */
- int wind_cnt_initial; /* wind counter (initial) */
int wind_cnt; /* wind time counter */
- int wind_direction_initial; /* wind direction (initial) */
int wind_direction; /* wind direction */
int wind_time; /* wind reset time */
- int wonderwall_state_initial; /* wonderwall active flag (initial) */
int wonderwall_state; /* wonderwall active flag */
- int wonderwall_time_initial; /* wonderwall time (initial) */
int wonderwall_time; /* wonderwall time */
int num_ball_arrays; /* number of ball data arrays used */
short ball_array[8][8]; /* ball data */
short android_array[TILE_MAX]; /* android clone table */
- short cave_raw[CAVE_WIDTH][CAVE_HEIGHT];
-
short cavebuf[CAVE_BUFFER_WIDTH][CAVE_BUFFER_HEIGHT];
short nextbuf[CAVE_BUFFER_WIDTH][CAVE_BUFFER_HEIGHT];
short drawbuf[CAVE_BUFFER_WIDTH][CAVE_BUFFER_HEIGHT];
// ============================================================================
#include "emerald.h"
+#include "cave.h"
// ----------------------------------------------------------------------------
int last_moving_player;
int last_player_direction[MAX_PLAYERS];
- struct LEVEL *lev;
+ struct LOGIC *lev;
struct PLAYER *ply[MAX_PLAYERS];
};
{
int file_version;
- struct LEVEL *cav;
+ struct CAVE *cav;
};
struct GraphicInfo_EM
{
struct GameInfo_EM game_em;
unsigned int RandomEM;
- struct LEVEL lev;
+ struct LOGIC lev;
struct PLAYER ply[MAX_PLAYERS];
int screen_x;
int screen_y;
unsigned int RandomEM;
-struct LEVEL cav;
-struct LEVEL lev;
+struct CAVE cav;
+struct LOGIC lev;
struct PLAYER ply[MAX_PLAYERS];
extern int screen_x;
extern unsigned int RandomEM;
-extern struct LEVEL cav;
-extern struct LEVEL lev;
+extern struct CAVE cav;
+extern struct LOGIC lev;
extern struct PLAYER ply[MAX_PLAYERS];
extern struct LevelInfo_EM native_em_level;
void map_android_clone_elements_RND_to_EM(struct LevelInfo *level)
{
struct LevelInfo_EM *level_em = level->native_em_level;
- struct LEVEL *cav = level_em->cav;
+ struct CAVE *cav = level_em->cav;
int i, j;
for (i = 0; i < TILE_MAX; i++)
void map_android_clone_elements_EM_to_RND(struct LevelInfo *level)
{
struct LevelInfo_EM *level_em = level->native_em_level;
- struct LEVEL *cav = level_em->cav;
+ struct CAVE *cav = level_em->cav;
int i, j;
level->num_android_clone_elements = 0;