1/* Header: object.h,v 7.0.1.2 86/12/12 17:01:38 lwall Exp */
2
3/* Log:	object.h,v
4 * Revision 7.0.1.2  86/12/12  17:01:38  lwall
5 * Baseline for net release.
6 *
7 * Revision 7.0.1.1  86/10/16  10:52:30  lwall
8 * Added Damage.  Fixed random bugs.
9 *
10 * Revision 7.0  86/10/08  15:13:04  lwall
11 * Split into separate files.  Added amoebas and pirates.
12 *
13 */
14
15#define Root 0
16#define Base 1
17#define Enterprise 2
18#define Star 3
19#define Torp 4
20#define Enemy 5
21#define Web 6
22#define Crusher 7
23
24typedef struct object {
25    short posx, posy;
26    short velx, vely;
27    struct object *next, *prev, *contend;
28    long energy;
29    long mass;
30    char type;
31    char image;
32    char strategy;
33    char flags;
34} OBJECT;
35
36#define PIRATE 1	/* we may mutiny */
37#define FRIENDLY 2	/* we aren't really an enemy, for now */
38#define STATIC 4	/* we are not in the movers list at the moment */
39#define COUNTDOWN 8	/* we are counting down for something */
40#define CLOAKS 16	/* we can cloak */
41
42#ifdef DOINIT
43OBJECT root = {0, 0, 0, 0, &root, &root, 0, 0, 0, Root, '?', 0, 0};
44#else
45EXT OBJECT root;
46#endif
47
48#ifdef DOINIT
49OBJECT free_root = {0, 0, 0, 0, &free_root, &free_root, 0, 0, 0, Root, '?', 0, 0};
50#else
51EXT OBJECT free_root;
52#endif
53
54EXT OBJECT *ent;
55EXT OBJECT *base;
56EXT OBJECT *enemies;
57EXT OBJECT *movers;
58EXT OBJECT *realapollo;
59EXT OBJECT *nuke;
60
61EXT OBJECT *occupant[YSIZE][XSIZE];
62
63void object_init(void);
64OBJECT *make_object(char, char, int, int, int, int, long, long, OBJECT *);
65void unmake_object(OBJECT *);
66void free_object(OBJECT *);
67