/*
 * $Id: object.h,v 1.10 2003/09/02 07:10:53 dougday Exp $
 */

#ifndef OBJECT_H
#define OBJECT_H

struct _Person;
struct _Monster;

typedef enum {
    MOVEMENT_FIXED,
    MOVEMENT_WANDER,
    MOVEMENT_FOLLOW_AVATAR,
    MOVEMENT_ATTACK_AVATAR
} ObjectMovementBehavior;

typedef enum {
    OBJECT_UNKNOWN,
    OBJECT_PERSON,
    OBJECT_MONSTER    
} ObjectType;

typedef struct _Object {
    unsigned char tile, prevtile;
    unsigned short x, y, z;
    unsigned short prevx, prevy;
    ObjectMovementBehavior movement_behavior;
    union {
        const struct _Person *person;
        const struct _Monster *monster;
#ifdef __riscos__
  /* Seem to need named unions for gcc 2.95 */
          } rou;
#else
          };
#endif
    int objType;
    int hasFocus;
    int isVisible;
    int canAnimate;
    struct _Object *next;
} Object;

#endif
