]> git.cameronkatri.com Git - bsdgames-darwin.git/blob - warp/object.c
cf17fde6659b5ff6335e5c980a3421496a90f268
[bsdgames-darwin.git] / warp / object.c
1 /* Header: object.c,v 7.0 86/10/08 15:12:55 lwall Exp */
2
3 /* Log: object.c,v
4 * Revision 7.0 86/10/08 15:12:55 lwall
5 * Split into separate files. Added amoebas and pirates.
6 *
7 */
8
9 #include "EXTERN.h"
10 #include "warp.h"
11 #include "INTERN.h"
12 #include "object.h"
13
14 void
15 object_init()
16 {
17 ;
18 }
19
20 OBJECT *
21 make_object(typ, img, py, px, vy, vx, energ, mas, where)
22 char typ;
23 char img;
24 int px, py, vx, vy;
25 long energ, mas;
26 OBJECT *where;
27 {
28 Reg1 OBJECT *obj;
29
30 if (free_root.next == &free_root)
31 #ifndef lint
32 obj = (OBJECT *) malloc(sizeof root);
33 #else
34 obj = Null(OBJECT*);
35 #endif
36 else {
37 obj = free_root.next;
38 free_root.next = obj->next;
39 obj->next->prev = &free_root;
40 }
41 obj->type = typ;
42 obj->image = img;
43 obj->next = where;
44 obj->prev = where->prev;
45 where->prev = obj;
46 obj->prev->next = obj;
47 obj->velx = vx;
48 obj->vely = vy;
49 obj->contend = 0;
50 obj->strategy = 0;
51 obj->flags = 0;
52 obj->posx = px;
53 obj->posy = py;
54 if (typ != Torp && typ != Web) {
55 occupant[py][px] = obj;
56 }
57 obj->energy = energ;
58 obj->mass = mas;
59 return(obj);
60 }
61
62 void
63 unmake_object(curobj)
64 Reg1 OBJECT *curobj;
65 {
66 curobj->prev->next = curobj->next;
67 curobj->next->prev = curobj->prev;
68 if (curobj == movers) {
69 movers = curobj->next;
70 }
71 free_object(curobj);
72 }
73
74 void
75 free_object(curobj)
76 Reg1 OBJECT *curobj;
77 {
78 curobj->next = free_root.next;
79 curobj->prev = &free_root;
80 free_root.next->prev = curobj;
81 free_root.next = curobj;
82 }