You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bomberclone/include/map.h

112 lines
3.5 KiB

/* $Id: map.h,v 1.13 2004/02/07 23:51:16 stpohle Exp $ */
/* map.h */
#ifndef _MAP_H_
#define _MAP_H_
#define FIELDCHECK_TIMEOUT 2.0 /* timeout for the field check function */
#define FIELDHURRYWARN 5.0 /* hurry warning */
#define FIELDHURRYDROPTO 0.5 /* timeout when to put in some special items */
#define FIELDHURRYSIZE 0.25 /* timeout forresizeing the game */
#define FIELDHURRYSIZEMIN 5 /* min size for the field */
#define FIELDHURRYTIMEOUT 120.0 // game timeout for hurry and dropping mode (1min)
#define ANI_STONETIMEOUT 1.0 // factor for the animation frame je seconds
#define ANI_POWERUPTIMEOUT 0.5 // factor for powerup animations
/* this is the minimum distance that starting points should be set apart from each
* other. If the given tolerence cannot be satisfied on the map, it will be decremented
* by 1 until it can be satisfied. this is just our initial value
*/
#define MAP_POSITION_TOLERENCE 10
struct __ex_field {
unsigned char count;
float frame;
int bomb_b; // BombID from the last know
int bomb_p; // explosion on this field
} typedef _ex_field;
struct __field {
unsigned char type;
signed char mixframe; // data for the mixed frame
float frame; // frame (frame > 0 && FS_stone)
unsigned char special; // to save special stones, or the tunnel number
_ex_field ex[4]; // count up every explosion there is on this field for ever direction
Sint32 ex_nr; // number to identify the explosion.
} typedef _field;
/* holds the locatition of a start point and the use count */
struct __start_point {
_point pos;
int used;
} typedef _start_point;
struct __map {
_point size; // dimension of the field
_field field[MAX_FIELDSIZE_X][MAX_FIELDSIZE_Y];
_point tunnel[GAME_MAX_TUNNELS]; // save the destination of the tunnel
unsigned char bfield[MAX_FIELDSIZE_X][MAX_FIELDSIZE_Y]; // will hold informations if ther is a bomb
char tileset [LEN_TILESETNAME];
signed char random_tileset;
char map [LEN_PATHFILENAME];
signed char map_selection;
signed char type; // type of the map (MAPT_*);
int bombs;
int fire;
int shoes;
int mixed;
int death;
int sp_trigger;
int sp_push;
int sp_row;
int sp_kick;
unsigned char state; // state of the map
_start_point start_point[MAX_PLAYERS]; // array of starting points for this map
} typedef _map;
extern _map map;
// mapmenu.c
extern void mapmenu ();
extern void mapinfo ();
extern void mapgamesetting ();
// map.c
extern void map_random ();
extern void map_genrandom ();
extern void init_map_tileset();
extern void map_new (char *filename);
extern void map_set_playerposition (int usermap);
extern void map_load (FILE * fmap);
extern void map_set_player_way (int pl);
extern void map_set_player_way1 (int pl);
extern void map_set_player_way2 (int pl, int hardway);
/* new functions for player positioning */
extern int map_ensure_corner_start_points();
extern int map_init_start_points();
extern int map_set_start_point(int idx, int x, int y);
extern int map_add_start_point(int x, int y);
extern int map_is_start_point(int x, int y);
extern int map_num_defined_start_points();
extern int map_check_start_point(int x, int y, int tol);
extern int map_check_and_add_start_point(int x, int y, int tol);
extern int map_find_and_add_start_points(int num, int tol);
extern int map_is_possible_start_point(int x, int y);
extern int map_create_and_add_start_point(int tol);
extern int map_is_removable_field(int x, int y);
extern int map_place_player(int pl);
extern int map_respawn_player(int pl);
#endif