ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/define.h
(Generate patch)

Comparing deliantra/server/include/define.h (file contents):
Revision 1.11 by root, Sat Sep 16 22:06:17 2006 UTC vs.
Revision 1.19 by root, Mon Dec 18 03:00:02 2006 UTC

16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 20
21 The authors can be reached via e-mail at crossfire-devel@real-time.com 21 The authors can be reached via e-mail at crossfire@schmorp.de
22*/ 22*/
23 23
24/* This file is best viewed with a window width of about 100 character */ 24/* This file is best viewed with a window width of about 100 character */
25 25
26/* This file is really too large. With all the .h files 26/* This file is really too large. With all the .h files
43 * The following should still hopefully result in an error. 43 * The following should still hopefully result in an error.
44 */ 44 */
45error - Your ANSI C compiler should be defining __STDC__; 45error - Your ANSI C compiler should be defining __STDC__;
46#endif 46#endif
47 47
48#ifndef WIN32 /* ---win32 exclude unix configuration part */
49# include <autoconf.h> 48#include <autoconf.h>
50#endif
51 49
52#define FONTDIR "" 50#define FONTDIR ""
53#define FONTNAME "" 51#define FONTNAME ""
54 52
55/* Decstations have trouble with fabs()... */ 53/* Decstations have trouble with fabs()... */
92#define FONTSIZE 3000 /* Max chars in font */ 90#define FONTSIZE 3000 /* Max chars in font */
93 91
94#define MAX_ANIMATIONS 256 92#define MAX_ANIMATIONS 256
95 93
96#define MAX_NAME 48 94#define MAX_NAME 48
97#define BIG_NAME 32
98#define MAX_EXT_TITLE 98 95#define MAX_EXT_TITLE 98
99 96
100/* Fatal variables: */ 97/* Fatal variables: */
101#define OUT_OF_MEMORY 0 98#define OUT_OF_MEMORY 0
102#define MAP_ERROR 1 99#define MAP_ERROR 1
383#define PU_READABLES 0x00400000 380#define PU_READABLES 0x00400000
384#define PU_MAGIC_DEVICE 0x00800000 381#define PU_MAGIC_DEVICE 0x00800000
385 382
386#define PU_NOT_CURSED 0x01000000 383#define PU_NOT_CURSED 0x01000000
387#define PU_JEWELS 0x02000000 384#define PU_JEWELS 0x02000000
385#define PU_FLESH 0x04000000
388 386
389 387
390/* Instead of using arbitrary constants for indexing the 388/* Instead of using arbitrary constants for indexing the
391 * freearr, add these values. <= SIZEOFFREE1 will get you 389 * freearr, add these values. <= SIZEOFFREE1 will get you
392 * within 1 space. <= SIZEOFFREE2 wll get you withing 390 * within 1 space. <= SIZEOFFREE2 wll get you withing
397#define SIZEOFFREE2 24 395#define SIZEOFFREE2 24
398#define SIZEOFFREE 49 396#define SIZEOFFREE 49
399 397
400#define NROF_SOUNDS (23 + NROFREALSPELLS) /* Number of sounds */ 398#define NROF_SOUNDS (23 + NROFREALSPELLS) /* Number of sounds */
401 399
402/* Flag structure now changed. 400/*
403 * Each flag is now a bit offset, starting at zero. The macros
404 * will update/read the appropriate flag element in the object
405 * structure.
406 *
407 * Hopefully, since these offsets are integer constants set at run time,
408 * the compiler will reduce the macros something as simple as the
409 * old system was.
410 *
411 * Flags now have FLAG as the prefix. This to be clearer, and also
412 * to make sure F_ names are not still being used anyplace.
413 *
414 * The macros below assume that the flag size for each element is 32
415 * bits. IF it is smaller, bad things will happen. See structs.h
416 * for more info.
417 *
418 * All functions should use the macros below. In process of converting
419 * to the new system, I find several files that did not use the previous
420 * macros.
421 *
422 * If any FLAG's are or changed, make sure the flag_names structure in 401 * If any FLAG's are added or changed, make sure the flag_names structure in
423 * common/loader.l is updated. 402 * common/loader.l is updated.
424 *
425 * flags[0] is 0 to 31
426 * flags[1] is 32 to 63
427 * flags[2] is 64 to 95
428 * flags[3] is 96 to 127
429 */ 403 */
430 404
431/* Basic routines to do above */ 405/* Basic routines to do above */
432#define SET_FLAG(xyz, p) \ 406#define SET_FLAG(obj, flag) (obj)->flags[flag] = 1
433 ((xyz)->flags[p/32] |= (1U << (p % 32))) 407#define CLEAR_FLAG(obj, flag) (obj)->flags[flag] = 0
434#define CLEAR_FLAG(xyz, p) \ 408#define QUERY_FLAG(obj, flag) (obj)->flags[flag]
435 ((xyz)->flags[p/32] &= ~(1U << (p % 32)))
436#define QUERY_FLAG(xyz, p) \
437 ((xyz)->flags[p/32] & (1U << (p % 32)))
438#define COMPARE_FLAGS(p,q) \
439 ( \
440 ((p)->flags[0] == (q)->flags[0]) && \
441 ((p)->flags[1] == (q)->flags[1]) && \
442 ((p)->flags[2] == (q)->flags[2]) && \
443 ((p)->flags[3] == (q)->flags[3]) \
444 )
445
446/* convenience macros to determine what kind of things we are dealing with */
447
448#define IS_WEAPON(op) \
449 (op->type == ARROW || op->type == BOW || op->type == WEAPON)
450
451#define IS_ARMOR(op) \
452 (op->type == ARMOUR || op->type == SHIELD || op->type == HELMET || \
453 op->type == CLOAK || op->type == BOOTS || op->type == GLOVES || \
454 op->type == BRACERS || op->type == GIRDLE)
455
456#define IS_LIVE(op) \
457 ((op->type == PLAYER || QUERY_FLAG(op, FLAG_MONSTER) || \
458 (QUERY_FLAG(op, FLAG_ALIVE) && !QUERY_FLAG(op, FLAG_GENERATOR) && \
459 !op->type == DOOR)) && (!QUERY_FLAG(op,FLAG_IS_A_TEMPLATE)))
460
461#define IS_ARROW(op) \
462 (op->type==ARROW || \
463 (op->type==SPELL_EFFECT && \
464 (op->subtype == SP_BULLET || op->subtype == SP_MAGIC_MISSILE)))
465
466/* This return TRUE if object has still randomitems which
467 * could be expanded.
468 */
469#define HAS_RANDOM_ITEMS(op) (op->randomitems && (!QUERY_FLAG(op,FLAG_IS_A_TEMPLATE)))
470 409
471/* the flags */ 410/* the flags */
472 411
473#define FLAG_ALIVE 0 /* Object can fight (or be fought) */ 412#define FLAG_ALIVE 0 /* Object can fight (or be fought) */
474#define FLAG_WIZ 1 /* Object has special privilegies */ 413#define FLAG_WIZ 1 /* Object has special privilegies */
1032 * 971 *
1033 * 0.94.2 - you probably shouldn't need to change any of the rand stuff 972 * 0.94.2 - you probably shouldn't need to change any of the rand stuff
1034 * here. 973 * here.
1035 */ 974 */
1036 975
1037#ifdef HAVE_SRANDOM
1038# define RANDOM() random() 976#define RANDOM() random()
1039# define SRANDOM(xyz) srandom(xyz) 977#define SRANDOM(xyz) srandom(xyz)
1040#else
1041# ifdef HAVE_SRAND48
1042# define RANDOM() lrand48()
1043# define SRANDOM(xyz) srand48(xyz)
1044# else
1045# ifdef HAVE_SRAND
1046# define RANDOM() rand()
1047# define SRANDOM(xyz) srand(xyz)
1048# else
1049# error "Could not find a usable random routine"
1050# endif
1051# endif
1052#endif
1053 978
1054/* Returns the weight of the given object. Note: it does not take the number of 979/* Returns the weight of the given object. Note: it does not take the number of
1055 * items (nrof) into account. 980 * items (nrof) into account.
1056 */ 981 */
1057#define WEIGHT(op) (op->nrof?op->weight:op->weight+op->carrying) 982#define WEIGHT(op) (op->nrof?op->weight:op->weight+op->carrying)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines