]>
git.cameronkatri.com Git - bsdgames-darwin.git/blob - hunt/huntd/hunt.h
1 /* $NetBSD: hunt.h,v 1.13 2009/07/04 03:27:57 dholland Exp $ */
4 * Copyright (c) 1983-2003, Regents of the University of California.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are
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
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.
41 # if !defined(TERMINFO) && BSD_RELEASE < 44
44 # include <sys/ioctl.h>
46 # include <sys/types.h>
48 # include <sys/poll.h>
50 # include <netinet/in.h>
52 # include <arpa/inet.h>
61 # define SOCK_FAMILY AF_INET
63 # define SOCK_FAMILY AF_UNIX
64 # define AF_UNIX_HACK /* 4.2 hack; leaves files around */
68 * Preprocessor define dependencies
70 # if defined(VOLCANO) && !defined(OOZE)
73 # if defined(BOOTS) && !defined(FLY)
76 # if !defined(REFLECT) && !defined(RANDOM)
80 /* mvcur() in terminfo needs the curses library to be initialized to not
81 * coredump, so give up and use it. */
85 /* decrement version number for each change in startup protocol */
86 # define HUNT_VERSION -1
88 # define ADDCH ('a' | 0200)
89 # define MOVE ('m' | 0200)
90 # define REFRESH ('r' | 0200)
91 # define CLRTOEOL ('c' | 0200)
92 # define ENDWIN ('e' | 0200)
93 # define CLEAR ('C' | 0200)
94 # define REDRAW ('R' | 0200)
95 # define LAST_PLAYER ('l' | 0200)
96 # define BELL ('b' | 0200)
97 # define READY ('g' | 0200)
100 * Choose MAXPL and MAXMON carefully. The screen is assumed to be
101 * 23 lines high and will only tolerate (MAXPL == 17 && MAXMON == 0)
102 * or (MAXPL + MAXMON <= 16).
111 # define SHORTLEN 2 /* sizeof (network short) */
112 # define LONGLEN 4 /* sizeof (network long) */
114 # define MSGLEN SCREEN_WIDTH
120 # define WIDTH2 64 /* Next power of 2 >= WIDTH (for fast access) */
123 # define DBOUND (HEIGHT - 1)
125 # define RBOUND (WIDTH - 1)
127 # define SCREEN_HEIGHT 24
128 # define SCREEN_WIDTH 80
129 # define SCREEN_WIDTH2 128 /* Next power of 2 >= SCREEN_WIDTH */
131 # define STAT_LABEL_COL 60
132 # define STAT_VALUE_COL 74
133 # define STAT_NAME_COL 61
134 # define STAT_SCAN_COL (STAT_NAME_COL + 5)
135 # define STAT_AMMO_ROW 0
136 # define STAT_GUN_ROW 1
137 # define STAT_DAM_ROW 2
138 # define STAT_KILL_ROW 3
139 # define STAT_PLAY_ROW 5
141 # define STAT_MON_ROW (STAT_PLAY_ROW + MAXPL + 1)
143 # define STAT_NAME_LEN 18
175 # define BOOT_PAIR 'B'
185 # define isplayer(c) (c == LEFTS || c == RIGHT ||\
186 c == ABOVE || c == BELOW || c == FLYER)
188 # define isplayer(c) (c == LEFTS || c == RIGHT ||\
189 c == ABOVE || c == BELOW)
202 # define CTRL(x) ((x) & 037)
204 # define BULSPD 5 /* bullets movement speed */
217 # define BOMB11REQ 121
218 # define BOMB13REQ 169
219 # define BOMB15REQ 225
220 # define BOMB17REQ 289
221 # define BOMB19REQ 361
222 # define BOMB21REQ 441
225 # define MINDSHOT 2 /* At least a satchel bomb */
227 extern int shot_req
[];
228 extern int shot_type
[];
230 # define SLIME_FACTOR 3
232 # define SSLIMEREQ 10
233 # define SLIME2REQ 15
234 # define SLIME3REQ 20
236 # define SLIMESPEED 5
237 extern int slime_req
[];
244 # define SCANLEN (Nplayer * 20)
259 # define C_TESTMSG() (Query_driver ? C_MESSAGE :\
260 (Show_scores ? C_SCORES :\
261 (Am_monitor ? C_MONITOR :\
264 # define C_TESTMSG() (Show_scores ? C_SCORES :\
265 (Query_driver ? C_MESSAGE :\
270 # define _scan_char(pp) (((pp)->p_scan < 0) ? ' ' : '*')
271 # define _cloak_char(pp) (((pp)->p_cloak < 0) ? _scan_char(pp) : '+')
272 # define stat_char(pp) (((pp)->p_flying < 0) ? _cloak_char(pp) : FLYER)
274 # define _scan_char(pp) (((pp)->p_scan < 0) ? ' ' : '*')
275 # define stat_char(pp) (((pp)->p_cloak < 0) ? _scan_char(pp) : '+')
279 typedef struct bullet_def BULLET
;
280 typedef struct expl_def EXPL
;
281 typedef struct player_def PLAYER
;
282 typedef struct ident_def IDENT
;
283 typedef struct regen_def REGEN
;
285 typedef struct sockaddr_in SOCKET
;
287 typedef struct sockaddr_un SOCKET
;
291 char i_name
[NAMELEN
];
305 int i_gkills
, i_bkills
, i_deaths
, i_stillb
, i_saved
;
334 char p_death
[MSGLEN
];
335 char p_maze
[HEIGHT
][WIDTH2
];
337 int p_lastx
, p_lasty
;
369 extern FLAG Last_player
;
371 extern char Buf
[BUFSIZ
], Maze
[HEIGHT
][WIDTH2
], Orig_maze
[HEIGHT
][WIDTH2
];
373 extern const char *Driver
;
375 extern int Nplayer
, Socket
, Status
;
376 extern struct pollfd fdset
[];
379 extern u_short Test_port
;
381 extern char *Sock_name
, *Stat_name
;
388 extern int See_over
[NASCII
];
390 extern BULLET
*Bullets
;
392 extern EXPL
*Expl
[EXPLEN
];
393 extern EXPL
*Last_expl
;
395 extern IDENT
*Scores
;
397 extern PLAYER Player
[MAXPL
], *End_player
;
399 extern PLAYER Boot
[NBOOTS
];
403 extern FLAG Am_monitor
;
404 extern PLAYER Monitor
[MAXMON
], *End_monitor
;
408 extern char *Send_message
;
411 extern char map_key
[256];
418 void add_shot(int, int, int, char, int, PLAYER
*, int, char);
420 void bad_con(void) __attribute__((__noreturn__
));
421 void bad_ver(void) __attribute__((__noreturn__
));
422 int broadcast_vec(int, struct sockaddr
**);
424 void cgoto(PLAYER
*, int, int);
425 void check(PLAYER
*, int, int);
426 void checkdam(PLAYER
*, PLAYER
*, IDENT
*, int, char);
427 void clearwalls(void);
428 void clear_eol(void);
429 void clear_the_screen(void);
430 void clrscr(PLAYER
*);
431 BULLET
*create_shot(int, int, int, char, int, int, PLAYER
*,
433 void do_connect(char *, char, long);
434 void do_message(void);
435 void drawmaze(PLAYER
*);
436 void drawplayer(PLAYER
*, FLAG
);
437 void drawstatus(PLAYER
*);
438 void execute(PLAYER
*);
440 void find_driver(FLAG
);
441 void fixshots(int, int, char);
442 IDENT
*get_ident(uint32_t, uint32_t, char *, char);
443 void get_local_name(char *);
444 int get_remote_name(char *);
445 BULLET
*is_bullet(int, int);
448 void message(PLAYER
*, const char *);
449 void mon_execute(PLAYER
*);
450 void moveshots(void);
452 int opposite(int, char);
453 void otto(int, int, char);
454 void outch(PLAYER
*, int);
455 void outstr(PLAYER
*, const char *, int);
456 int player_sym(PLAYER
*, int, int);
457 PLAYER
*play_at(int, int);
460 void put_str(char *);
464 void redraw_screen(void);
467 void see(PLAYER
*, int);
468 void sendcom(PLAYER
*, int, ...);
469 void showexpl(int, int, char);
470 void showstat(PLAYER
*);
471 void start_driver(void);
472 void stmonitor(PLAYER
*);
473 void stplayer(PLAYER
*, int);
474 char translate(char);
475 SIGNAL_TYPE
cleanup(int) __dead
;
476 SIGNAL_TYPE
intr(int);
477 SIGNAL_TYPE
sigalrm(int);
478 SIGNAL_TYPE
sigemt(int) __dead
;
479 SIGNAL_TYPE
sigterm(int) __dead
;
480 SIGNAL_TYPE
sigusr1(int) __dead
;
481 SIGNAL_TYPE
tstp(int);