Annotation of 43BSDReno/games/hunt/NEW/hunt.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.