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.13 by root, Sun Dec 3 00:59:58 2006 UTC vs.
Revision 1.20 by elmex, Mon Dec 18 17:10:07 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()... */
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 */
495 434
496#define FLAG_GENERATOR 16 /* Will generate type ob->stats.food */ 435#define FLAG_GENERATOR 16 /* Will generate type ob->stats.food */
497#define FLAG_IS_THROWN 17 /* Object is designed to be thrown. */ 436#define FLAG_IS_THROWN 17 /* Object is designed to be thrown. */
498#define FLAG_AUTO_APPLY 18 437#define FLAG_AUTO_APPLY 18
499 /* Will be applied when created */ 438 /* Will be applied when created */
500#define FLAG_TREASURE 19 /* Will generate treasure when applied */ 439 // not used anywhere in the code // #define FLAG_TREASURE 19 /* Will generate treasure when applied */
501#define FLAG_PLAYER_SOLD 20 /* Object was sold to a shop by a player. */ 440#define FLAG_PLAYER_SOLD 20 /* Object was sold to a shop by a player. */
502#define FLAG_SEE_INVISIBLE 21 /* Will see invisible player */ 441#define FLAG_SEE_INVISIBLE 21 /* Will see invisible player */
503#define FLAG_CAN_ROLL 22 /* Object can be rolled */ 442#define FLAG_CAN_ROLL 22 /* Object can be rolled */
504#define FLAG_OVERLAY_FLOOR 23 /* Object is an overlay floor */ 443#define FLAG_OVERLAY_FLOOR 23 /* Object is an overlay floor */
505#define FLAG_IS_TURNABLE 24 /* Object can change face with direction */ 444#define FLAG_IS_TURNABLE 24 /* Object can change face with direction */
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