Home | History | Annotate | Line # | Download | only in warp
      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