object.c revision 1.3 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.3 christos object_init(void)
16 1.1 kamil {
17 1.1 kamil ;
18 1.1 kamil }
19 1.1 kamil
20 1.1 kamil OBJECT *
21 1.3 christos make_object(char typ, char img, int px, int py, int vx, int vy, long energ,
22 1.3 christos long mas, OBJECT *where)
23 1.1 kamil {
24 1.3 christos OBJECT *obj;
25 1.1 kamil
26 1.1 kamil if (free_root.next == &free_root)
27 1.1 kamil #ifndef lint
28 1.1 kamil obj = (OBJECT *) malloc(sizeof root);
29 1.1 kamil #else
30 1.1 kamil obj = Null(OBJECT*);
31 1.1 kamil #endif
32 1.1 kamil else {
33 1.1 kamil obj = free_root.next;
34 1.1 kamil free_root.next = obj->next;
35 1.1 kamil obj->next->prev = &free_root;
36 1.1 kamil }
37 1.1 kamil obj->type = typ;
38 1.1 kamil obj->image = img;
39 1.1 kamil obj->next = where;
40 1.1 kamil obj->prev = where->prev;
41 1.1 kamil where->prev = obj;
42 1.1 kamil obj->prev->next = obj;
43 1.1 kamil obj->velx = vx;
44 1.1 kamil obj->vely = vy;
45 1.1 kamil obj->contend = 0;
46 1.1 kamil obj->strategy = 0;
47 1.1 kamil obj->flags = 0;
48 1.1 kamil obj->posx = px;
49 1.1 kamil obj->posy = py;
50 1.1 kamil if (typ != Torp && typ != Web) {
51 1.1 kamil occupant[py][px] = obj;
52 1.1 kamil }
53 1.1 kamil obj->energy = energ;
54 1.1 kamil obj->mass = mas;
55 1.1 kamil return(obj);
56 1.1 kamil }
57 1.1 kamil
58 1.1 kamil void
59 1.3 christos unmake_object(OBJECT *curobj)
60 1.1 kamil {
61 1.1 kamil curobj->prev->next = curobj->next;
62 1.1 kamil curobj->next->prev = curobj->prev;
63 1.1 kamil if (curobj == movers) {
64 1.1 kamil movers = curobj->next;
65 1.1 kamil }
66 1.1 kamil free_object(curobj);
67 1.1 kamil }
68 1.1 kamil
69 1.1 kamil void
70 1.3 christos free_object(OBJECT *curobj)
71 1.1 kamil {
72 1.1 kamil curobj->next = free_root.next;
73 1.1 kamil curobj->prev = &free_root;
74 1.1 kamil free_root.next->prev = curobj;
75 1.1 kamil free_root.next = curobj;
76 1.1 kamil }
77