xref: /netbsd/games/hunt/huntd/hunt.h (revision abca1099)
1 /*	$NetBSD: hunt.h,v 1.32 2021/05/02 12:50:45 rillig Exp $	*/
2 
3 /*
4  * Copyright (c) 1983-2003, Regents of the University of California.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions are
9  * met:
10  *
11  * + Redistributions of source code must retain the above copyright
12  *   notice, this list of conditions and the following disclaimer.
13  * + Redistributions in binary form must reproduce the above copyright
14  *   notice, this list of conditions and the following disclaimer in the
15  *   documentation and/or other materials provided with the distribution.
16  * + Neither the name of the University of California, San Francisco nor
17  *   the names of its contributors may be used to endorse or promote
18  *   products derived from this software without specific prior written
19  *   permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
22  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
23  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
24  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  */
33 
34 #include <stdbool.h>
35 #include <stdio.h>
36 #include <string.h>
37 #include <syslog.h>
38 
39 #include <sys/ioctl.h>
40 #include <sys/types.h>
41 #include <sys/uio.h>
42 #include <sys/poll.h>
43 
44 #include "hunt_common.h"
45 
46 extern const int shot_req[];
47 extern const int shot_type[];
48 #ifdef OOZE
49 extern const int slime_req[];
50 #endif
51 
52 typedef struct bullet_def	BULLET;
53 typedef struct expl_def		EXPL;
54 typedef struct player_def	PLAYER;
55 typedef struct ident_def	IDENT;
56 typedef struct regen_def	REGEN;
57 
58 struct ident_def {
59 	char i_name[WIRE_NAMELEN];
60 	char i_team;
61 	uint32_t i_machine;
62 	uint32_t i_uid;
63 	float i_kills;
64 	int i_entries;
65 	float i_score;
66 	int i_absorbed;
67 	int i_faced;
68 	int i_shot;
69 	int i_robbed;
70 	int i_slime;
71 	int i_missed;
72 	int i_ducked;
73 	int i_gkills, i_bkills, i_deaths, i_stillb, i_saved;
74 	IDENT *i_next;
75 };
76 
77 struct player_def {
78 	IDENT *p_ident;
79 	char p_over;
80 	int p_face;
81 	int p_undershot;
82 #ifdef FLY
83 	int p_flying;
84 	int p_flyx, p_flyy;
85 #endif
86 #ifdef BOOTS
87 	int p_nboots;
88 #endif
89 	FILE *p_output;
90 	int p_fd;
91 	int p_mask;
92 	int p_damage;
93 	int p_damcap;
94 	int p_ammo;
95 	int p_ncshot;
96 	int p_scan;
97 	int p_cloak;
98 	int p_x, p_y;
99 	int p_ncount;
100 	int p_nexec;
101 	long p_nchar;
102 	char p_death[MSGLEN];
103 	char p_maze[HEIGHT][WIDTH2];
104 	int p_curx, p_cury;
105 	int p_lastx, p_lasty;
106 	char p_cbuf[BUFSIZ];
107 };
108 
109 struct bullet_def {
110 	int b_x, b_y;
111 	int b_face;
112 	int b_charge;
113 	char b_type;
114 	char b_size;
115 	char b_over;
116 	PLAYER *b_owner;
117 	IDENT *b_score;
118 	bool b_expl;
119 	BULLET *b_next;
120 };
121 
122 struct expl_def {
123 	int e_x, e_y;
124 	char e_char;
125 	EXPL *e_next;
126 };
127 
128 struct regen_def {
129 	int r_x, r_y;
130 	REGEN *r_next;
131 };
132 
133 /*
134  * external variables
135  */
136 
137 extern char Buf[BUFSIZ], Maze[HEIGHT][WIDTH2], Orig_maze[HEIGHT][WIDTH2];
138 
139 extern int Nplayer;
140 extern int huntsock;
141 extern struct pollfd fdset[];
142 
143 extern int See_over[NASCII];
144 
145 extern BULLET *Bullets;
146 
147 extern IDENT *Scores;
148 
149 extern PLAYER Player[MAXPL], *End_player;
150 #ifdef BOOTS
151 extern PLAYER Boot[NBOOTS];
152 #endif
153 
154 #ifdef MONITOR
155 extern PLAYER Monitor[MAXMON], *End_monitor;
156 #endif
157 
158 /*
159  * function types
160  */
161 
162 /* in answer.c */
163 bool answer(void);
164 int rand_dir(void);
165 
166 /* in draw.c */
167 void drawmaze(PLAYER *);
168 void look(PLAYER *);
169 void check(PLAYER *, int, int);
170 void showstat(PLAYER *);
171 void drawplayer(PLAYER *, bool);
172 void message(PLAYER *, const char *);
173 
174 /* in driver.c */
175 void checkdam(PLAYER *, PLAYER *, IDENT *, int, char);
176 int rand_num(int);
177 __dead void cleanup(int);
178 
179 /* in execute.c */
180 void mon_execute(PLAYER *);	/* ifdef MONITOR only */
181 void execute(PLAYER *);
182 void add_shot(int, int, int, char, int, PLAYER *, int, char);
183 BULLET *create_shot(int, int, int, char, int, int, PLAYER *,
184 		    IDENT *, int, char);
185 
186 /* in expl.c */
187 void showexpl(int, int, char);
188 void rollexpl(void);
189 void clearwalls(void);
190 
191 /* in makemaze.c */
192 void makemaze(void);
193 
194 /* in shots.c */
195 void moveshots(void);
196 PLAYER *play_at(int, int);
197 bool opposite(int, char);
198 BULLET *is_bullet(int, int);
199 void fixshots(int, int, char);
200 
201 /* in support.c */
202 __printflike(2, 3) void complain(int level, const char *fmt, ...);
203 
204 /* in terminal.c */
205 void cgoto(PLAYER *, int, int);
206 void outch(PLAYER *, int);
207 void outstr(PLAYER *, const char *, int);
208 void clrscr(PLAYER *);
209 void ce(PLAYER *);
210 void sendcom(PLAYER *, int, ...);
211