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