Home | History | Annotate | Line # | Download | only in warp
object.c revision 1.1
      1  1.1  kamil /* $Header: /tank/opengrok/rsync2/NetBSD/src/games/warp/object.c,v 1.1 2020/11/09 23:37:05 kamil Exp $ */
      2  1.1  kamil 
      3  1.1  kamil /* $Log: object.c,v $
      4  1.1  kamil /* Revision 1.1  2020/11/09 23:37:05  kamil
      5  1.1  kamil /* Add Warp Kit, Version 7.0 by Larry Wall
      6  1.1  kamil /*
      7  1.1  kamil /* Warp is a real-time space war game that doesn't get boring very quickly.
      8  1.1  kamil /* Read warp.doc and the manual page for more information.
      9  1.1  kamil /*
     10  1.1  kamil /* games/warp originally distributed with 4.3BSD-Reno, is back to the BSD
     11  1.1  kamil /* world via NetBSD. Its remnants were still mentioned in games/Makefile.
     12  1.1  kamil /*
     13  1.1  kamil /* Larry Wall, the original author and the copyright holder, generously
     14  1.1  kamil /* donated the game and copyright to The NetBSD Foundation, Inc.
     15  1.1  kamil /*
     16  1.1  kamil /* Import the game sources as-is from 4.3BSD-Reno, with the cession
     17  1.1  kamil /* of the copyright and license to BSD-2-clause NetBSD-style.
     18  1.1  kamil /*
     19  1.1  kamil /* Signed-off-by: Larry Wall <larry (at) wall.org>
     20  1.1  kamil /* Signed-off-by: Kamil Rytarowski <kamil (at) netbsd.org>
     21  1.1  kamil /*
     22  1.1  kamil  * Revision 7.0  86/10/08  15:12:55  lwall
     23  1.1  kamil  * Split into separate files.  Added amoebas and pirates.
     24  1.1  kamil  *
     25  1.1  kamil  */
     26  1.1  kamil 
     27  1.1  kamil #include "EXTERN.h"
     28  1.1  kamil #include "warp.h"
     29  1.1  kamil #include "INTERN.h"
     30  1.1  kamil #include "object.h"
     31  1.1  kamil 
     32  1.1  kamil void
     33  1.1  kamil object_init()
     34  1.1  kamil {
     35  1.1  kamil     ;
     36  1.1  kamil }
     37  1.1  kamil 
     38  1.1  kamil OBJECT *
     39  1.1  kamil make_object(typ, img, py, px, vy, vx, energ, mas, where)
     40  1.1  kamil char typ;
     41  1.1  kamil char img;
     42  1.1  kamil int px, py, vx, vy;
     43  1.1  kamil long energ, mas;
     44  1.1  kamil OBJECT *where;
     45  1.1  kamil {
     46  1.1  kamil     Reg1 OBJECT *obj;
     47  1.1  kamil 
     48  1.1  kamil     if (free_root.next == &free_root)
     49  1.1  kamil #ifndef lint
     50  1.1  kamil 	obj = (OBJECT *) malloc(sizeof root);
     51  1.1  kamil #else
     52  1.1  kamil 	obj = Null(OBJECT*);
     53  1.1  kamil #endif
     54  1.1  kamil     else {
     55  1.1  kamil 	obj = free_root.next;
     56  1.1  kamil 	free_root.next = obj->next;
     57  1.1  kamil 	obj->next->prev = &free_root;
     58  1.1  kamil     }
     59  1.1  kamil     obj->type = typ;
     60  1.1  kamil     obj->image = img;
     61  1.1  kamil     obj->next = where;
     62  1.1  kamil     obj->prev = where->prev;
     63  1.1  kamil     where->prev = obj;
     64  1.1  kamil     obj->prev->next = obj;
     65  1.1  kamil     obj->velx = vx;
     66  1.1  kamil     obj->vely = vy;
     67  1.1  kamil     obj->contend = 0;
     68  1.1  kamil     obj->strategy = 0;
     69  1.1  kamil     obj->flags = 0;
     70  1.1  kamil     obj->posx = px;
     71  1.1  kamil     obj->posy = py;
     72  1.1  kamil     if (typ != Torp && typ != Web) {
     73  1.1  kamil 	occupant[py][px] = obj;
     74  1.1  kamil     }
     75  1.1  kamil     obj->energy = energ;
     76  1.1  kamil     obj->mass = mas;
     77  1.1  kamil     return(obj);
     78  1.1  kamil }
     79  1.1  kamil 
     80  1.1  kamil void
     81  1.1  kamil unmake_object(curobj)
     82  1.1  kamil Reg1 OBJECT *curobj;
     83             {
     84                 curobj->prev->next = curobj->next;
     85                 curobj->next->prev = curobj->prev;
     86                 if (curobj == movers) {
     87             	movers = curobj->next;
     88                 }
     89                 free_object(curobj);
     90             }
     91             
     92             void
     93             free_object(curobj)
     94             Reg1 OBJECT *curobj;
     95             {
     96                 curobj->next = free_root.next;
     97                 curobj->prev = &free_root;
     98                 free_root.next->prev = curobj;
     99                 free_root.next = curobj;
    100             }
    101