Home | History | Annotate | Line # | Download | only in warp
object.c revision 1.2
      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 }
     83