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