]> git.cameronkatri.com Git - bsdgames-darwin.git/blob - hunt/huntd/hunt.h
remove unneeded typedef for TTYB, as per PR#5867
[bsdgames-darwin.git] / hunt / huntd / hunt.h
1 /* $NetBSD: hunt.h,v 1.4 1998/09/11 13:46:30 hubertf Exp $ */
2
3 /*
4 * Hunt
5 * Copyright (c) 1985 Conrad C. Huang, Gregory S. Couch, Kenneth C.R.C. Arnold
6 * San Francisco, California
7 */
8
9 # include "bsd.h"
10
11 # include <stdio.h>
12 # include <string.h>
13 # ifdef LOG
14 # include <syslog.h>
15 # endif
16 # if !defined(TERMINFO) && BSD_RELEASE < 44
17 # include <sgtty.h>
18 # else
19 # include <sys/ioctl.h>
20 # endif
21 # include <sys/types.h>
22 # include <sys/uio.h>
23 # include <sys/socket.h>
24 # ifdef INTERNET
25 # include <netinet/in.h>
26 # include <netdb.h>
27 # include <arpa/inet.h>
28 # ifdef BROADCAST
29 # include <net/if.h>
30 # endif
31 # else
32 # include <sys/un.h>
33 # endif
34
35 # ifdef INTERNET
36 # define SOCK_FAMILY AF_INET
37 # else
38 # define SOCK_FAMILY AF_UNIX
39 # define AF_UNIX_HACK /* 4.2 hack; leaves files around */
40 # endif
41
42 /*
43 * Preprocessor define dependencies
44 */
45 # if defined(VOLCANO) && !defined(OOZE)
46 # define OOZE
47 # endif
48 # if defined(BOOTS) && !defined(FLY)
49 # define FLY
50 # endif
51 # if !defined(REFLECT) && !defined(RANDOM)
52 # define RANDOM
53 # endif
54 # ifdef TERMINFO
55 /* mvcur() in terminfo needs the curses library to be initialized to not
56 * coredump, so give up and use it. */
57 # define USE_CURSES
58 # endif
59
60 /* decrement version number for each change in startup protocol */
61 # define HUNT_VERSION -1
62
63 # define ADDCH ('a' | 0200)
64 # define MOVE ('m' | 0200)
65 # define REFRESH ('r' | 0200)
66 # define CLRTOEOL ('c' | 0200)
67 # define ENDWIN ('e' | 0200)
68 # define CLEAR ('C' | 0200)
69 # define REDRAW ('R' | 0200)
70 # define LAST_PLAYER ('l' | 0200)
71 # define BELL ('b' | 0200)
72 # define READY ('g' | 0200)
73
74 /*
75 * Choose MAXPL and MAXMON carefully. The screen is assumed to be
76 * 23 lines high and will only tolerate (MAXPL == 17 && MAXMON == 0)
77 * or (MAXPL + MAXMON <= 16).
78 */
79 # ifdef MONITOR
80 # define MAXPL 15
81 # define MAXMON 1
82 # else
83 # define MAXPL 17
84 # endif
85 # define SHORTLEN 2 /* sizeof (network short) */
86 # define LONGLEN 4 /* sizeof (network long) */
87 # define NAMELEN 20
88 # define MSGLEN SCREEN_WIDTH
89 # define DECAY 50.0
90
91 # define NASCII 128
92
93 # define WIDTH 51
94 # define WIDTH2 64 /* Next power of 2 >= WIDTH (for fast access) */
95 # define HEIGHT 23
96 # define UBOUND 1
97 # define DBOUND (HEIGHT - 1)
98 # define LBOUND 1
99 # define RBOUND (WIDTH - 1)
100
101 # define SCREEN_HEIGHT 24
102 # define SCREEN_WIDTH 80
103 # define SCREEN_WIDTH2 128 /* Next power of 2 >= SCREEN_WIDTH */
104
105 # define STAT_LABEL_COL 60
106 # define STAT_VALUE_COL 74
107 # define STAT_NAME_COL 61
108 # define STAT_SCAN_COL (STAT_NAME_COL + 5)
109 # define STAT_AMMO_ROW 0
110 # define STAT_GUN_ROW 1
111 # define STAT_DAM_ROW 2
112 # define STAT_KILL_ROW 3
113 # define STAT_PLAY_ROW 5
114 # ifdef MONITOR
115 # define STAT_MON_ROW (STAT_PLAY_ROW + MAXPL + 1)
116 # endif
117 # define STAT_NAME_LEN 18
118
119 # define DOOR '#'
120 # define WALL1 '-'
121 # define WALL2 '|'
122 # define WALL3 '+'
123 # ifdef REFLECT
124 # define WALL4 '/'
125 # define WALL5 '\\'
126 # endif
127 # define KNIFE 'K'
128 # define SHOT ':'
129 # define GRENADE 'o'
130 # define SATCHEL 'O'
131 # define BOMB '@'
132 # define MINE ';'
133 # define GMINE 'g'
134 # ifdef OOZE
135 # define SLIME '$'
136 # endif
137 # ifdef VOLCANO
138 # define LAVA '~'
139 # endif
140 # ifdef DRONE
141 # define DSHOT '?'
142 # endif
143 # ifdef FLY
144 # define FALL 'F'
145 # endif
146 # ifdef BOOTS
147 # define NBOOTS 2
148 # define BOOT 'b'
149 # define BOOT_PAIR 'B'
150 # endif
151 # define SPACE ' '
152
153 # define ABOVE 'i'
154 # define BELOW '!'
155 # define RIGHT '}'
156 # define LEFTS '{'
157 # ifdef FLY
158 # define FLYER '&'
159 # define isplayer(c) (c == LEFTS || c == RIGHT ||\
160 c == ABOVE || c == BELOW || c == FLYER)
161 # else
162 # define isplayer(c) (c == LEFTS || c == RIGHT ||\
163 c == ABOVE || c == BELOW)
164 # endif
165
166 # define NORTH 01
167 # define SOUTH 02
168 # define EAST 010
169 # define WEST 020
170
171 # ifndef TRUE
172 # define TRUE 1
173 # define FALSE 0
174 # endif
175 # undef CTRL
176 # define CTRL(x) ((x) & 037)
177
178 # define BULSPD 5 /* bullets movement speed */
179 # define ISHOTS 15
180 # define NSHOTS 5
181 # define MAXNCSHOT 2
182 # define MAXDAM 10
183 # define MINDAM 5
184 # define STABDAM 2
185
186 # define BULREQ 1
187 # define GRENREQ 9
188 # define SATREQ 25
189 # define BOMB7REQ 49
190 # define BOMB9REQ 81
191 # define BOMB11REQ 121
192 # define BOMB13REQ 169
193 # define BOMB15REQ 225
194 # define BOMB17REQ 289
195 # define BOMB19REQ 361
196 # define BOMB21REQ 441
197 # define MAXBOMB 11
198 # ifdef DRONE
199 # define MINDSHOT 2 /* At least a satchel bomb */
200 # endif
201 extern int shot_req[];
202 extern int shot_type[];
203 # ifdef OOZE
204 # define SLIME_FACTOR 3
205 # define SLIMEREQ 5
206 # define SSLIMEREQ 10
207 # define SLIME2REQ 15
208 # define SLIME3REQ 20
209 # define MAXSLIME 4
210 # define SLIMESPEED 5
211 extern int slime_req[];
212 # endif
213 # ifdef VOLCANO
214 # define LAVASPEED 1
215 # endif
216
217 # define CLOAKLEN 20
218 # define SCANLEN (Nplayer * 20)
219 # define EXPLEN 4
220
221 # define Q_QUIT 0
222 # define Q_CLOAK 1
223 # define Q_FLY 2
224 # define Q_SCAN 3
225 # define Q_MESSAGE 4
226
227 # define C_PLAYER 0
228 # define C_MONITOR 1
229 # define C_MESSAGE 2
230 # define C_SCORES 3
231
232 # ifdef MONITOR
233 # define C_TESTMSG() (Query_driver ? C_MESSAGE :\
234 (Show_scores ? C_SCORES :\
235 (Am_monitor ? C_MONITOR :\
236 C_PLAYER)))
237 # else
238 # define C_TESTMSG() (Show_scores ? C_SCORES :\
239 (Query_driver ? C_MESSAGE :\
240 C_PLAYER))
241 # endif
242
243 # ifdef FLY
244 # define _scan_char(pp) (((pp)->p_scan < 0) ? ' ' : '*')
245 # define _cloak_char(pp) (((pp)->p_cloak < 0) ? _scan_char(pp) : '+')
246 # define stat_char(pp) (((pp)->p_flying < 0) ? _cloak_char(pp) : FLYER)
247 # else
248 # define _scan_char(pp) (((pp)->p_scan < 0) ? ' ' : '*')
249 # define stat_char(pp) (((pp)->p_cloak < 0) ? _scan_char(pp) : '+')
250 # endif
251
252 typedef int FLAG;
253 typedef struct bullet_def BULLET;
254 typedef struct expl_def EXPL;
255 typedef struct player_def PLAYER;
256 typedef struct ident_def IDENT;
257 typedef struct regen_def REGEN;
258 # ifdef INTERNET
259 typedef struct sockaddr_in SOCKET;
260 # else
261 typedef struct sockaddr_un SOCKET;
262 # endif
263
264 struct ident_def {
265 char i_name[NAMELEN];
266 char i_team;
267 long i_machine;
268 long i_uid;
269 float i_kills;
270 int i_entries;
271 float i_score;
272 int i_absorbed;
273 int i_faced;
274 int i_shot;
275 int i_robbed;
276 int i_slime;
277 int i_missed;
278 int i_ducked;
279 int i_gkills, i_bkills, i_deaths, i_stillb, i_saved;
280 IDENT *i_next;
281 };
282
283 struct player_def {
284 IDENT *p_ident;
285 char p_over;
286 int p_face;
287 int p_undershot;
288 # ifdef FLY
289 int p_flying;
290 int p_flyx, p_flyy;
291 # endif
292 # ifdef BOOTS
293 int p_nboots;
294 # endif
295 FILE *p_output;
296 int p_fd;
297 int p_mask;
298 int p_damage;
299 int p_damcap;
300 int p_ammo;
301 int p_ncshot;
302 int p_scan;
303 int p_cloak;
304 int p_x, p_y;
305 int p_ncount;
306 int p_nexec;
307 long p_nchar;
308 char p_death[MSGLEN];
309 char p_maze[HEIGHT][WIDTH2];
310 int p_curx, p_cury;
311 int p_lastx, p_lasty;
312 char p_cbuf[BUFSIZ];
313 };
314
315 struct bullet_def {
316 int b_x, b_y;
317 int b_face;
318 int b_charge;
319 char b_type;
320 char b_size;
321 char b_over;
322 PLAYER *b_owner;
323 IDENT *b_score;
324 FLAG b_expl;
325 BULLET *b_next;
326 };
327
328 struct expl_def {
329 int e_x, e_y;
330 char e_char;
331 EXPL *e_next;
332 };
333
334 struct regen_def {
335 int r_x, r_y;
336 REGEN *r_next;
337 };
338
339 /*
340 * external variables
341 */
342
343 extern FLAG Last_player;
344
345 extern char Buf[BUFSIZ], Maze[HEIGHT][WIDTH2], Orig_maze[HEIGHT][WIDTH2];
346
347 extern char *Sock_name, *Driver;
348
349 extern int errno, Nplayer, Num_fds, Socket, Status;
350 extern fd_set Fds_mask, Have_inp;
351
352 # ifdef INTERNET
353 extern u_short Test_port;
354 # else
355 extern char *Sock_name;
356 # endif
357
358 # ifdef VOLCANO
359 extern int volcano;
360 # endif
361
362 extern int See_over[NASCII];
363
364 extern BULLET *Bullets;
365
366 extern EXPL *Expl[EXPLEN];
367 extern EXPL *Last_expl;
368
369 extern IDENT *Scores;
370
371 extern PLAYER Player[MAXPL], *End_player;
372 # ifdef BOOTS
373 extern PLAYER Boot[NBOOTS];
374 # endif
375
376 # ifdef MONITOR
377 extern FLAG Am_monitor;
378 extern PLAYER Monitor[MAXMON], *End_monitor;
379 # endif
380
381 # ifdef INTERNET
382 extern char *Send_message;
383 # endif
384
385 extern char map_key[256];
386 extern FLAG no_beep;
387
388 /*
389 * function types
390 */
391
392 void add_shot __P((int, int, int, char, int, PLAYER *, int, char));
393 int answer __P((void));
394 void bad_con __P((void));
395 void bad_ver __P((void));
396 int broadcast_vec __P((int, struct sockaddr **));
397 void ce __P((PLAYER *));
398 void cgoto __P((PLAYER *, int, int));
399 void check __P((PLAYER *, int, int));
400 void checkdam __P((PLAYER *, PLAYER *, IDENT *, int, char));
401 void clearwalls __P((void));
402 void clear_eol __P((void));
403 void clear_the_screen __P((void));
404 void clrscr __P((PLAYER *));
405 BULLET *create_shot __P((int, int, int, char, int, int, PLAYER *,
406 IDENT *, int, char));
407 void do_connect __P((char *, char, long));
408 void do_message __P((void));
409 void drawmaze __P((PLAYER *));
410 void drawplayer __P((PLAYER *, FLAG));
411 void drawstatus __P((PLAYER *));
412 void execute __P((PLAYER *));
413 void faketalk __P((void));
414 void find_driver __P((FLAG));
415 void fixshots __P((int, int, char));
416 IDENT *get_ident __P((u_long, u_long, char *, char));
417 void get_local_name __P((char *));
418 int get_remote_name __P((char *));
419 BULLET *is_bullet __P((int, int));
420 void look __P((PLAYER *));
421 void makemaze __P((void));
422 void message __P((PLAYER *, char *));
423 void mon_execute __P((PLAYER *));
424 void moveshots __P((void));
425 void open_ctl __P((void));
426 int opposite __P((int, char));
427 void otto __P((int, int, char));
428 void outch __P((PLAYER *, int));
429 void outstr __P((PLAYER *, char *, int));
430 int player_sym __P((PLAYER *, int, int));
431 PLAYER *play_at __P((int, int));
432 void playit __P((void));
433 void put_ch __P((char));
434 void put_str __P((char *));
435 int quit __P((int));
436 int rand_dir __P((void));
437 int rand_num __P((int));
438 void redraw_screen __P((void));
439 void rmnl __P((char *));
440 void rollexpl __P((void));
441 void see __P((PLAYER *, int));
442 void sendcom __P((PLAYER *, int, ...));
443 void showexpl __P((int, int, char));
444 void showstat __P((PLAYER *));
445 void start_driver __P((void));
446 void stmonitor __P((PLAYER *));
447 void stplayer __P((PLAYER *, int));
448 char translate __P((char));
449 SIGNAL_TYPE cleanup __P((int));
450 SIGNAL_TYPE intr __P((int));
451 SIGNAL_TYPE sigalrm __P((int));
452 SIGNAL_TYPE sigemt __P((int));
453 SIGNAL_TYPE sigterm __P((int));
454 SIGNAL_TYPE tstp __P((int));