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.
112 lines
3.5 KiB
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
|