diff options
author | mrg <mrg@NetBSD.org> | 1997-10-04 09:00:13 +0000 |
---|---|---|
committer | mrg <mrg@NetBSD.org> | 1997-10-04 09:00:13 +0000 |
commit | e9152f6d21d5a8b1e02922e0fc95b71fc21cbd92 (patch) | |
tree | 3e1b32f0c0c61414ebd853c92584cd9d95a99acc /hunt/huntd/hunt.h | |
parent | 6f367f8f8be268d527e585867c1c42ffbb07668c (diff) | |
download | bsdgames-darwin-e9152f6d21d5a8b1e02922e0fc95b71fc21cbd92.tar.gz bsdgames-darwin-e9152f6d21d5a8b1e02922e0fc95b71fc21cbd92.tar.zst bsdgames-darwin-e9152f6d21d5a8b1e02922e0fc95b71fc21cbd92.zip |
hunt version 1993-07-17
Diffstat (limited to 'hunt/huntd/hunt.h')
-rw-r--r-- | hunt/huntd/hunt.h | 400 |
1 files changed, 400 insertions, 0 deletions
diff --git a/hunt/huntd/hunt.h b/hunt/huntd/hunt.h new file mode 100644 index 00000000..3225f44f --- /dev/null +++ b/hunt/huntd/hunt.h @@ -0,0 +1,400 @@ +/* + * Hunt + * Copyright (c) 1985 Conrad C. Huang, Gregory S. Couch, Kenneth C.R.C. Arnold + * San Francisco, California + */ + +# include "bsd.h" + +# include <stdio.h> +# include <string.h> +# ifdef LOG +# include <syslog.h> +# endif +# if !defined(TERMINFO) && BSD_RELEASE < 44 +# include <sgtty.h> +# else +# include <sys/ioctl.h> +# endif +# include <sys/types.h> +# include <sys/uio.h> +# include <sys/socket.h> +# ifdef INTERNET +# include <netinet/in.h> +# include <netdb.h> +# include <arpa/inet.h> +# ifdef BROADCAST +# include <net/if.h> +# endif +# else +# include <sys/un.h> +# endif + +# ifdef INTERNET +# define SOCK_FAMILY AF_INET +# else +# define SOCK_FAMILY AF_UNIX +# define AF_UNIX_HACK /* 4.2 hack; leaves files around */ +# endif + +/* + * Preprocessor define dependencies + */ +# if defined(VOLCANO) && !defined(OOZE) +# define OOZE +# endif +# if defined(BOOTS) && !defined(FLY) +# define FLY +# endif +# if !defined(REFLECT) && !defined(RANDOM) +# define RANDOM +# endif +# ifdef TERMINFO +/* mvcur() in terminfo needs the curses library to be initialized to not + * coredump, so give up and use it. */ +# define USE_CURSES +# endif + +/* decrement version number for each change in startup protocol */ +# define HUNT_VERSION -1 + +# define ADDCH ('a' | 0200) +# define MOVE ('m' | 0200) +# define REFRESH ('r' | 0200) +# define CLRTOEOL ('c' | 0200) +# define ENDWIN ('e' | 0200) +# define CLEAR ('C' | 0200) +# define REDRAW ('R' | 0200) +# define LAST_PLAYER ('l' | 0200) +# define BELL ('b' | 0200) +# define READY ('g' | 0200) + +/* + * Choose MAXPL and MAXMON carefully. The screen is assumed to be + * 23 lines high and will only tolerate (MAXPL == 17 && MAXMON == 0) + * or (MAXPL + MAXMON <= 16). + */ +# ifdef MONITOR +# define MAXPL 15 +# define MAXMON 1 +# else +# define MAXPL 17 +# endif +# define SHORTLEN 2 /* sizeof (network short) */ +# define LONGLEN 4 /* sizeof (network long) */ +# define NAMELEN 20 +# define MSGLEN SCREEN_WIDTH +# define DECAY 50.0 + +# define NASCII 128 + +# define WIDTH 51 +# define WIDTH2 64 /* Next power of 2 >= WIDTH (for fast access) */ +# define HEIGHT 23 +# define UBOUND 1 +# define DBOUND (HEIGHT - 1) +# define LBOUND 1 +# define RBOUND (WIDTH - 1) + +# define SCREEN_HEIGHT 24 +# define SCREEN_WIDTH 80 +# define SCREEN_WIDTH2 128 /* Next power of 2 >= SCREEN_WIDTH */ + +# define STAT_LABEL_COL 60 +# define STAT_VALUE_COL 74 +# define STAT_NAME_COL 61 +# define STAT_SCAN_COL (STAT_NAME_COL + 5) +# define STAT_AMMO_ROW 0 +# define STAT_GUN_ROW 1 +# define STAT_DAM_ROW 2 +# define STAT_KILL_ROW 3 +# define STAT_PLAY_ROW 5 +# ifdef MONITOR +# define STAT_MON_ROW (STAT_PLAY_ROW + MAXPL + 1) +# endif +# define STAT_NAME_LEN 18 + +# define DOOR '#' +# define WALL1 '-' +# define WALL2 '|' +# define WALL3 '+' +# ifdef REFLECT +# define WALL4 '/' +# define WALL5 '\\' +# endif +# define KNIFE 'K' +# define SHOT ':' +# define GRENADE 'o' +# define SATCHEL 'O' +# define BOMB '@' +# define MINE ';' +# define GMINE 'g' +# ifdef OOZE +# define SLIME '$' +# endif +# ifdef VOLCANO +# define LAVA '~' +# endif +# ifdef DRONE +# define DSHOT '?' +# endif +# ifdef FLY +# define FALL 'F' +# endif +# ifdef BOOTS +# define NBOOTS 2 +# define BOOT 'b' +# define BOOT_PAIR 'B' +# endif +# define SPACE ' ' + +# define ABOVE 'i' +# define BELOW '!' +# define RIGHT '}' +# define LEFTS '{' +# ifdef FLY +# define FLYER '&' +# define isplayer(c) (c == LEFTS || c == RIGHT ||\ + c == ABOVE || c == BELOW || c == FLYER) +# else +# define isplayer(c) (c == LEFTS || c == RIGHT ||\ + c == ABOVE || c == BELOW) +# endif + +# define NORTH 01 +# define SOUTH 02 +# define EAST 010 +# define WEST 020 + +# ifndef TRUE +# define TRUE 1 +# define FALSE 0 +# endif +# undef CTRL +# define CTRL(x) ((x) & 037) + +# define BULSPD 5 /* bullets movement speed */ +# define ISHOTS 15 +# define NSHOTS 5 +# define MAXNCSHOT 2 +# define MAXDAM 10 +# define MINDAM 5 +# define STABDAM 2 + +# define BULREQ 1 +# define GRENREQ 9 +# define SATREQ 25 +# define BOMB7REQ 49 +# define BOMB9REQ 81 +# define BOMB11REQ 121 +# define BOMB13REQ 169 +# define BOMB15REQ 225 +# define BOMB17REQ 289 +# define BOMB19REQ 361 +# define BOMB21REQ 441 +# define MAXBOMB 11 +# ifdef DRONE +# define MINDSHOT 2 /* At least a satchel bomb */ +# endif +extern int shot_req[]; +extern int shot_type[]; +# ifdef OOZE +# define SLIME_FACTOR 3 +# define SLIMEREQ 5 +# define SSLIMEREQ 10 +# define SLIME2REQ 15 +# define SLIME3REQ 20 +# define MAXSLIME 4 +# define SLIMESPEED 5 +extern int slime_req[]; +# endif +# ifdef VOLCANO +# define LAVASPEED 1 +# endif + +# define CLOAKLEN 20 +# define SCANLEN (Nplayer * 20) +# define EXPLEN 4 + +# define Q_QUIT 0 +# define Q_CLOAK 1 +# define Q_FLY 2 +# define Q_SCAN 3 +# define Q_MESSAGE 4 + +# define C_PLAYER 0 +# define C_MONITOR 1 +# define C_MESSAGE 2 +# define C_SCORES 3 + +# ifdef MONITOR +# define C_TESTMSG() (Query_driver ? C_MESSAGE :\ + (Show_scores ? C_SCORES :\ + (Am_monitor ? C_MONITOR :\ + C_PLAYER))) +# else +# define C_TESTMSG() (Show_scores ? C_SCORES :\ + (Query_driver ? C_MESSAGE :\ + C_PLAYER)) +# endif + +# ifdef FLY +# define _scan_char(pp) (((pp)->p_scan < 0) ? ' ' : '*') +# define _cloak_char(pp) (((pp)->p_cloak < 0) ? _scan_char(pp) : '+') +# define stat_char(pp) (((pp)->p_flying < 0) ? _cloak_char(pp) : FLYER) +# else +# define _scan_char(pp) (((pp)->p_scan < 0) ? ' ' : '*') +# define stat_char(pp) (((pp)->p_cloak < 0) ? _scan_char(pp) : '+') +# endif + +typedef int FLAG; +typedef struct bullet_def BULLET; +typedef struct expl_def EXPL; +typedef struct player_def PLAYER; +typedef struct ident_def IDENT; +typedef struct regen_def REGEN; +# ifdef INTERNET +typedef struct sockaddr_in SOCKET; +# else +typedef struct sockaddr_un SOCKET; +# endif +typedef struct sgttyb TTYB; + +struct ident_def { + char i_name[NAMELEN]; + char i_team; + long i_machine; + long i_uid; + float i_kills; + int i_entries; + float i_score; + int i_absorbed; + int i_faced; + int i_shot; + int i_robbed; + int i_slime; + int i_missed; + int i_ducked; + int i_gkills, i_bkills, i_deaths, i_stillb, i_saved; + IDENT *i_next; +}; + +struct player_def { + IDENT *p_ident; + char p_over; + int p_face; + int p_undershot; +# ifdef FLY + int p_flying; + int p_flyx, p_flyy; +# endif +# ifdef BOOTS + int p_nboots; +# endif + FILE *p_output; + int p_fd; + int p_mask; + int p_damage; + int p_damcap; + int p_ammo; + int p_ncshot; + int p_scan; + int p_cloak; + int p_x, p_y; + int p_ncount; + int p_nexec; + long p_nchar; + char p_death[MSGLEN]; + char p_maze[HEIGHT][WIDTH2]; + int p_curx, p_cury; + int p_lastx, p_lasty; + char p_cbuf[BUFSIZ]; +}; + +struct bullet_def { + int b_x, b_y; + int b_face; + int b_charge; + char b_type; + char b_size; + char b_over; + PLAYER *b_owner; + IDENT *b_score; + FLAG b_expl; + BULLET *b_next; +}; + +struct expl_def { + int e_x, e_y; + char e_char; + EXPL *e_next; +}; + +struct regen_def { + int r_x, r_y; + REGEN *r_next; +}; + +/* + * external variables + */ + +extern FLAG Last_player; + +extern char Buf[BUFSIZ], Maze[HEIGHT][WIDTH2], Orig_maze[HEIGHT][WIDTH2]; + +extern char *Sock_name, *Driver; + +extern int errno, Have_inp, Nplayer, Num_fds, Socket, Status; +extern long Fds_mask, Sock_mask, Stat_mask; + +# ifdef INTERNET +extern u_short Test_port; +# else +extern char *Sock_name; +# endif + +# ifdef VOLCANO +extern int volcano; +# endif + +extern int See_over[NASCII]; + +extern BULLET *Bullets; + +extern EXPL *Expl[EXPLEN]; +extern EXPL *Last_expl; + +extern IDENT *Scores; + +extern PLAYER Player[MAXPL], *End_player; +# ifdef BOOTS +extern PLAYER Boot[NBOOTS]; +# endif + +# ifdef MONITOR +extern FLAG Am_monitor; +extern PLAYER Monitor[MAXMON], *End_monitor; +# endif + +# ifdef INTERNET +extern char *Send_message; +# endif + +extern char map_key[256]; +extern FLAG no_beep; + +/* + * function types + */ + +extern char *getenv(); +extern void *malloc(), *realloc(); + +extern IDENT *get_ident(); + +extern int moveshots(); + +extern BULLET *is_bullet(), *create_shot(); + +extern PLAYER *play_at(); |