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.4 rillig * 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