|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T h
Length: 7879 (0x1ec7) Types: TextFile Names: »hunt.h«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987 └─⟦this⟧ »EUUGD18/General/Hunt/hunt.h«
/* * Hunt * Copyright (c) 1985 Conrad C. Huang, Gregory S. Couch, Kenneth C.R.C. Arnold * San Francisco, California * * Copyright (c) 1985 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. */ # include "bsd.h" # ifndef BSD # define index strchr # define rindex strrchr # define bcopy(s,d,c) memcpy(d,s,c) # endif # include <stdio.h> # ifdef LOG # include <syslog.h> # endif LOG # ifndef TERMINFO # 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> # ifndef HPUX # include <arpa/inet.h> # else extern char *inet_ntoa(); # endif # ifdef BROADCAST # include <net/if.h> # endif BROADCAST # else INTERNET # include <sys/un.h> # endif INTERNET # ifdef INTERNET # define SOCK_FAMILY AF_INET # else INTERNET # define SOCK_FAMILY AF_UNIX # define AF_UNIX_HACK /* 4.2 hack; leaves files around */ # endif INTERNET /* * Preprocessor define dependencies */ # if defined(VOLCANO) && !defined(SLIME) # define SLIME # endif # if defined(BOOTS) && !defined(FLY) # define FLY # endif # if !defined(REFLECT) && !defined(RANDOM) # define RANDOM # 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 MONITOR # 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 MONITOR # define STAT_NAME_LEN 18 # define DOOR '#' # define WALL1 '-' # define WALL2 '|' # define WALL3 '+' # ifdef REFLECT # define WALL4 '/' # define WALL5 '\\' # endif REFLECT # define KNIFE 'K' # define SHOT ':' # define GRENADE 'o' # define SATCHEL 'O' # define BOMB '@' # define MINE ';' # define GMINE 'g' # ifdef OOZE # define SLIME '$' # endif OOZE # ifdef VOLCANO # define LAVA '~' # endif VOLCANO # ifdef DRONE # define DSHOT '?' # endif DRONE # ifdef FLY # define FALL 'F' # endif FLY # 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 FLY # define NORTH 01 # define SOUTH 02 # define EAST 010 # define WEST 020 # ifndef TRUE # define TRUE 1 # define FALSE 0 # endif TRUE # 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 OOZE # ifdef VOLCANO # define LAVASPEED 1 # endif VOLCANO # 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 # 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 FLY # define _scan_char(pp) (((pp)->p_scan < 0) ? ' ' : '*') # define stat_char(pp) (((pp)->p_cloak < 0) ? _scan_char(pp) : '+') # endif FLY 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 INTERNET typedef struct sockaddr_un SOCKET; # endif INTERNET 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 FLY # 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; extern long Fds_mask, Sock_mask; # ifdef INTERNET extern int Test_port; # else INTERNET extern char *Sock_name; # endif INTERNET # ifdef VOLCANO extern int volcano; # endif VOLCANO 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 BOOTS # ifdef MONITOR extern FLAG Am_monitor; extern PLAYER Monitor[MAXMON], *End_monitor; # endif MONITOR # ifdef INTERNET extern char *Send_message; # endif extern char map_key[256]; extern FLAG no_beep; /* * function types */ extern char *getenv(), *malloc(), *strcpy(), *strncpy(); # ifndef htons extern unsigned short htons(), ntohs(); # endif # ifndef htonl extern unsigned long htonl(), ntohl(); # endif extern IDENT *get_ident(); extern int moveshots(); extern BULLET *is_bullet(), *create_shot(); extern PLAYER *play_at();