#ifndef INC_LEVEL
#define INC_LEVEL
typedef struct object_data OBJ;
typedef struct level_data LEVEL;
typedef struct sprite_info SPRITE_INFO;
struct object_data
{
OBJ *next;
OBJ *prev;
int state; char * name;
RECT bounds; };
typedef enum
{
SOLID, KILL, CLIMB, EXIT, CLICK, MOVE, LAUNCH, NONE
} object_states;
typedef enum
{
PLAY, HELP, PASSWORD
} menu_choices;
struct level_data
{
OBJ *first_obj;
OBJ *last_obj;
SPRITE *first_sprite;
SPRITE *last_sprite;
SPRITE *first_proto;
SPRITE *last_proto;
SPRITE_INFO *first_info;
SPRITE_INFO *last_info;
RECT bounds; POINT pos; BG *bg; int num; int num_sprites; int num_proto; int song; };
struct sprite_info
{
SPRITE_INFO * next;
SPRITE_INFO * prev;
RECT pos_rect;
POINT pos_pt;
char *name;
int sprites[3]; int action; };
typedef enum
{
MIN, CURRENT, MAX
} sprite_info_sprites;
typedef enum
{
POS_ONLY, RANDOM, aNONE
} sprite_info_actions;
LEVEL *load_level( int level );
LEVEL *change_level( LEVEL *level, int num );
OBJ *is_point_in_obj( int x, int y, LEVEL *level );
void clean_level( LEVEL *level, bool bmp );
void populate_level( LEVEL *level );
void subtract_from_population( char *name, LEVEL *level );
#define LEVELS 1
#ifdef LOG
#define LEVEL_LOG
#endif
#ifdef LEVEL_LOG
extern int script_last_error;
typedef enum
{
SCRIPT_NONE, BAD_WORD, MISSING_WORD, BAD_VALUE, SCRIPT_WARNING, PARSE_ERROR
} script_error_types;
#endif
#endif