home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Games / warp / object.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-03  |  1.5 KB  |  83 lines

  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.