1 | /* |
1 | /* |
2 | * static char *rcsid_define_h = |
2 | * static char *rcsid_define_h = |
3 | * "$Id: map.h,v 1.7 2006/08/15 15:00:20 elmex Exp $"; |
3 | * "$Id: map.h,v 1.10 2006/08/27 16:15:12 root Exp $"; |
4 | */ |
4 | */ |
5 | |
5 | |
6 | /* |
6 | /* |
7 | CrossFire, A Multiplayer game for X-windows |
7 | CrossFire, A Multiplayer game for X-windows |
8 | |
8 | |
… | |
… | |
31 | * It contains pointers (very indirectly) to all objects on the map. |
31 | * It contains pointers (very indirectly) to all objects on the map. |
32 | */ |
32 | */ |
33 | |
33 | |
34 | #ifndef MAP_H |
34 | #ifndef MAP_H |
35 | #define MAP_H |
35 | #define MAP_H |
|
|
36 | |
|
|
37 | #include "cfperl.h" |
36 | |
38 | |
37 | /* We set this size - this is to make magic map work properly on |
39 | /* We set this size - this is to make magic map work properly on |
38 | * tiled maps. There is no requirement that this matches the |
40 | * tiled maps. There is no requirement that this matches the |
39 | * tiled maps size - it just seemed like a reasonable value. |
41 | * tiled maps size - it just seemed like a reasonable value. |
40 | * Magic map code now always starts out putting the player in the |
42 | * Magic map code now always starts out putting the player in the |
… | |
… | |
155 | * arch_blocked and functions that examine the return value. |
157 | * arch_blocked and functions that examine the return value. |
156 | */ |
158 | */ |
157 | |
159 | |
158 | #define AB_NO_PASS 0x04 |
160 | #define AB_NO_PASS 0x04 |
159 | /*#define P_PASS_THRU 0x08 *//* */ |
161 | /*#define P_PASS_THRU 0x08 *//* */ |
|
|
162 | #define P_SAFE 0x08 /* If this is set the map is a safe map, |
|
|
163 | * that means, nothing harmful there will be done, |
|
|
164 | * like: bombs, potion usage, alchemy, spells |
|
|
165 | * this was introduced to make shops more safe |
|
|
166 | * and propably other maps */ |
160 | #define P_IS_ALIVE 0x10 /* something alive is on this space */ |
167 | #define P_IS_ALIVE 0x10 /* something alive is on this space */ |
161 | #define P_NO_CLERIC 0x20 /* no clerical spells cast here */ |
168 | #define P_NO_CLERIC 0x20 /* no clerical spells cast here */ |
162 | #define P_NEED_UPDATE 0x40 /* this space is out of date */ |
169 | #define P_NEED_UPDATE 0x40 /* this space is out of date */ |
163 | #define P_NO_ERROR 0x80 /* Purely temporary - if set, update_position |
170 | #define P_NO_ERROR 0x80 /* Purely temporary - if set, update_position |
164 | * does not complain if the flags are different. |
171 | * does not complain if the flags are different. |
… | |
… | |
169 | * function that does more of the work can hopefully be used to replace |
176 | * function that does more of the work can hopefully be used to replace |
170 | * lots of duplicate checks currently in the code. |
177 | * lots of duplicate checks currently in the code. |
171 | */ |
178 | */ |
172 | #define P_OUT_OF_MAP 0x100 /* This space is outside the map */ |
179 | #define P_OUT_OF_MAP 0x100 /* This space is outside the map */ |
173 | #define P_NEW_MAP 0x200 /* Coordinates passed result in a new tiled map */ |
180 | #define P_NEW_MAP 0x200 /* Coordinates passed result in a new tiled map */ |
174 | #define P_SAFE_MAP 0x400 /* If this is set the map is a safe map, |
|
|
175 | * that means, nothing harmful there will be done, |
|
|
176 | * like: bombs, potion usage, alchemy, spells |
|
|
177 | * this was introduced to make shops more safe |
|
|
178 | * and propably other maps */ |
|
|
179 | |
181 | |
180 | #if 0 |
182 | #if 0 |
181 | /* These go away with new movement code - can't do such simplistic |
183 | /* These go away with new movement code - can't do such simplistic |
182 | * checks anymore |
184 | * checks anymore |
183 | */ |
185 | */ |
… | |
… | |
275 | * almost certainly break various features. You may think |
277 | * almost certainly break various features. You may think |
276 | * it is safe to look at width and height values directly |
278 | * it is safe to look at width and height values directly |
277 | * (or even through the macros), but doing so will completely |
279 | * (or even through the macros), but doing so will completely |
278 | * break map tiling. |
280 | * break map tiling. |
279 | */ |
281 | */ |
280 | struct mapstruct { |
282 | struct mapstruct : extendable<mapstruct> { |
|
|
283 | static data_type get_dt () { return DT_MAP; } |
|
|
284 | |
281 | struct mapstruct *next; /* Next map, linked list */ |
285 | struct mapstruct *next; /* Next map, linked list */ |
282 | char *tmpname; /* Name of temporary file */ |
286 | char *tmpname; /* Name of temporary file */ |
283 | char *name; /* Name of map as given by its creator */ |
287 | char *name; /* Name of map as given by its creator */ |
284 | struct region *region; /* What jurisdiction in the game world this map is ruled by |
288 | struct region *region; /* What jurisdiction in the game world this map is ruled by |
285 | * points to the struct containing all the properties of |
289 | * points to the struct containing all the properties of |
… | |
… | |
345 | int distance_y; |
349 | int distance_y; |
346 | int direction; |
350 | int direction; |
347 | object *part; |
351 | object *part; |
348 | }; |
352 | }; |
349 | |
353 | |
350 | extern void (*load_original_map_callback)(mapstruct *map); |
|
|
351 | extern void (*load_temporary_map_callback)(mapstruct *map); |
|
|
352 | extern void (*clean_temporary_map_callback)(mapstruct *map); |
|
|
353 | |
|
|
354 | #endif |
354 | #endif |