Annotation of 43BSD/games/trek/trek.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1980 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  *
                      6:  *     @(#)trek.h      5.1 (Berkeley) 1/29/86
                      7:  */
                      8: 
                      9: #
                     10: /*
                     11: **  Global Declarations
                     12: **
                     13: **     Virtually all non-local variable declarations are made in this
                     14: **     file.  Exceptions are those things which are initialized, which
                     15: **     are defined in "externs.c", and things which are local to one
                     16: **     program file.
                     17: **
                     18: **     So far as I know, nothing in here must be preinitialized to
                     19: **     zero.
                     20: **
                     21: **     You may have problems from the loader if you move this to a
                     22: **     different machine.  These things actually get allocated in each
                     23: **     source file, which UNIX allows; however, you may (on other
                     24: **     systems) have to change everything in here to be "extern" and
                     25: **     actually allocate stuff in "externs.c"
                     26: */
                     27: 
                     28: /* external function definitions */
                     29: extern double  franf();        /* floating random number function */
                     30: extern double  sqrt();         /* square root */
                     31: extern double  sin(), cos();   /* trig functions */
                     32: extern double  atan2();        /* fancy arc tangent function */
                     33: extern double  log();          /* log base e */
                     34: extern double  pow();          /* power function */
                     35: extern double  fabs();         /* absolute value function */
                     36: extern double  exp();          /* exponential function */
                     37: 
                     38: /*********************  GALAXY  **************************/
                     39: 
                     40: /* galactic parameters */
                     41: # define       NSECTS          10      /* dimensions of quadrant in sectors */
                     42: # define       NQUADS          8       /* dimension of galazy in quadrants */
                     43: # define       NINHAB          32      /* number of quadrants which are inhabited */
                     44: 
                     45: struct quad            /* definition for each quadrant */
                     46: {
                     47:        char    bases;          /* number of bases in this quadrant */
                     48:        char    klings;         /* number of Klingons in this quadrant */
                     49:        char    holes;          /* number of black holes in this quadrant */
                     50:        int     scanned;        /* star chart entry (see below) */
                     51:        char    stars;          /* number of stars in this quadrant */
                     52:        char    qsystemname;    /* starsystem name (see below) */
                     53: };
                     54: 
                     55: # define       Q_DISTRESSED    0200
                     56: # define       Q_SYSTEM        077
                     57: 
                     58: /*  systemname conventions:
                     59:  *     1 -> NINHAB     index into Systemname table for live system.
                     60:  *     + Q_DISTRESSED  distressed starsystem -- systemname & Q_SYSTEM
                     61:  *                     is the index into the Event table which will
                     62:  *                     have the system name
                     63:  *     0               dead or nonexistent starsystem
                     64:  *
                     65:  *  starchart ("scanned") conventions:
                     66:  *     0 -> 999        taken as is
                     67:  *     -1              not yet scanned ("...")
                     68:  *     1000            supernova ("///")
                     69:  *     1001            starbase + ??? (".1.")
                     70: */
                     71: 
                     72: /* ascii names of systems */
                     73: extern char    *Systemname[NINHAB];
                     74: 
                     75: /* quadrant definition */
                     76: struct quad    Quad[NQUADS][NQUADS];
                     77: 
                     78: /* defines for sector map  (below) */
                     79: # define       EMPTY           '.'
                     80: # define       STAR            '*'
                     81: # define       BASE            '#'
                     82: # define       ENTERPRISE      'E'
                     83: # define       QUEENE          'Q'
                     84: # define       KLINGON         'K'
                     85: # define       INHABIT         '@'
                     86: # define       HOLE            ' '
                     87: 
                     88: /* current sector map */
                     89: char   Sect[NSECTS][NSECTS];
                     90: 
                     91: 
                     92: /************************ DEVICES ******************************/
                     93: 
                     94: # define       NDEV            16      /* max number of devices */
                     95: 
                     96: /* device tokens */
                     97: # define       WARP            0       /* warp engines */
                     98: # define       SRSCAN          1       /* short range scanners */
                     99: # define       LRSCAN          2       /* long range scanners */
                    100: # define       PHASER          3       /* phaser control */
                    101: # define       TORPED          4       /* photon torpedo control */
                    102: # define       IMPULSE         5       /* impulse engines */
                    103: # define       SHIELD          6       /* shield control */
                    104: # define       COMPUTER        7       /* on board computer */
                    105: # define       SSRADIO         8       /* subspace radio */
                    106: # define       LIFESUP         9       /* life support systems */
                    107: # define       SINS            10      /* Space Inertial Navigation System */
                    108: # define       CLOAK           11      /* cloaking device */
                    109: # define       XPORTER         12      /* transporter */
                    110: # define       SHUTTLE         13      /* shuttlecraft */
                    111: 
                    112: /* device names */
                    113: struct device
                    114: {
                    115:        char    *name;          /* device name */
                    116:        char    *person;        /* the person who fixes it */
                    117: };
                    118: 
                    119: struct device  Device[NDEV];
                    120: 
                    121: /***************************  EVENTS  ****************************/
                    122: 
                    123: # define       NEVENTS         12      /* number of different event types */
                    124: 
                    125: # define       E_LRTB          1       /* long range tractor beam */
                    126: # define       E_KATSB         2       /* Klingon attacks starbase */
                    127: # define       E_KDESB         3       /* Klingon destroys starbase */
                    128: # define       E_ISSUE         4       /* distress call is issued */
                    129: # define       E_ENSLV         5       /* Klingons enslave a quadrant */
                    130: # define       E_REPRO         6       /* a Klingon is reproduced */
                    131: # define       E_FIXDV         7       /* fix a device */
                    132: # define       E_ATTACK        8       /* Klingon attack during rest period */
                    133: # define       E_SNAP          9       /* take a snapshot for time warp */
                    134: # define       E_SNOVA         10      /* supernova occurs */
                    135: 
                    136: # define       E_GHOST         0100    /* ghost of a distress call if ssradio out */
                    137: # define       E_HIDDEN        0200    /* event that is unreportable because ssradio out */
                    138: # define       E_EVENT         077     /* mask to get event code */
                    139: 
                    140: struct event
                    141: {
                    142:        char    x, y;                   /* coordinates */
                    143:        double  date;                   /* trap stardate */
                    144:        char    evcode;                 /* event type */
                    145:        char    systemname;             /* starsystem name */
                    146: };
                    147: /* systemname conventions:
                    148:  *     1 -> NINHAB     index into Systemname table for reported distress calls
                    149:  *
                    150:  * evcode conventions:
                    151:  *     1 -> NEVENTS-1  event type
                    152:  *     + E_HIDDEN      unreported (SSradio out)
                    153:  *     + E_GHOST       actually already expired
                    154:  *     0               unallocated
                    155:  */
                    156: 
                    157: # define       MAXEVENTS       25      /* max number of concurrently pending events */
                    158: 
                    159: struct event   Event[MAXEVENTS];       /* dynamic event list; one entry per pending event */
                    160: 
                    161: /*****************************  KLINGONS  *******************************/
                    162: 
                    163: struct kling
                    164: {
                    165:        char    x, y;           /* coordinates */
                    166:        int     power;          /* power left */
                    167:        double  dist;           /* distance to Enterprise */
                    168:        double  avgdist;        /* average over this move */
                    169:        char    srndreq;        /* set if surrender has been requested */
                    170: };
                    171: 
                    172: # define       MAXKLQUAD       9       /* maximum klingons per quadrant */
                    173: 
                    174: /********************** MISCELLANEOUS ***************************/
                    175: 
                    176: /* condition codes */
                    177: # define       GREEN           0
                    178: # define       DOCKED          1
                    179: # define       YELLOW          2
                    180: # define       RED             3
                    181: 
                    182: /* starbase coordinates */
                    183: # define       MAXBASES        9       /* maximum number of starbases in galaxy */
                    184: 
                    185: /*  distress calls  */
                    186: # define       MAXDISTR        5       /* maximum concurrent distress calls */
                    187: 
                    188: /* phaser banks */
                    189: # define       NBANKS          6       /* number of phaser banks */
                    190: 
                    191: struct xy
                    192: {
                    193:        char    x, y;           /* coordinates */
                    194: };
                    195: 
                    196: 
                    197: /*
                    198:  *     note that much of the stuff in the following structs CAN NOT
                    199:  *     be moved around!!!!
                    200:  */
                    201: 
                    202: 
                    203: /* information regarding the state of the starship */
                    204: struct
                    205: {
                    206:        double  warp;           /* warp factor */
                    207:        double  warp2;          /* warp factor squared */
                    208:        double  warp3;          /* warp factor cubed */
                    209:        char    shldup;         /* shield up flag */
                    210:        char    cloaked;        /* set if cloaking device on */
                    211:        int     energy;         /* starship's energy */
                    212:        int     shield;         /* energy in shields */
                    213:        double  reserves;       /* life support reserves */
                    214:        int     crew;           /* ship's complement */
                    215:        int     brigfree;       /* space left in brig */
                    216:        char    torped;         /* torpedoes */
                    217:        char    cloakgood;      /* set if we have moved */
                    218:        int     quadx;          /* quadrant x coord */
                    219:        int     quady;          /* quadrant y coord */
                    220:        int     sectx;          /* sector x coord */
                    221:        int     secty;          /* sector y coord */
                    222:        char    cond;           /* condition code */
                    223:        char    sinsbad;        /* Space Inertial Navigation System condition */
                    224:        char    *shipname;      /* name of current starship */
                    225:        char    ship;           /* current starship */
                    226:        int     distressed      /* number of distress calls */
                    227: }      Ship;
                    228: 
                    229: /* sinsbad is set if SINS is working but not calibrated */
                    230: 
                    231: /* game related information, mostly scoring */
                    232: struct
                    233: {
                    234:        int     killk;          /* number of klingons killed */
                    235:        int     deaths;         /* number of deaths onboard Enterprise */
                    236:        char    negenbar;       /* number of hits on negative energy barrier */
                    237:        char    killb;          /* number of starbases killed */
                    238:        int     kills;          /* number of stars killed */
                    239:        char    skill;          /* skill rating of player */
                    240:        char    length;         /* length of game */
                    241:        char    killed;         /* set if you were killed */
                    242:        char    killinhab;      /* number of inhabited starsystems killed */
                    243:        char    tourn;          /* set if a tournament game */
                    244:        char    passwd[15];     /* game password */
                    245:        char    snap;           /* set if snapshot taken */
                    246:        char    helps;          /* number of help calls */
                    247:        int     captives;       /* total number of captives taken */
                    248: }      Game;
                    249: 
                    250: /* per move information */
                    251: struct
                    252: {
                    253:        char    free;           /* set if a move is free */
                    254:        char    endgame;        /* end of game flag */
                    255:        char    shldchg;        /* set if shields changed this move */
                    256:        char    newquad;        /* set if just entered this quadrant */
                    257:        char    resting;        /* set if this move is a rest */
                    258:        double  time;           /* time used this move */
                    259: }      Move;
                    260: 
                    261: /* parametric information */
                    262: struct
                    263: {
                    264:        char    bases;          /* number of starbases */
                    265:        char    klings;         /* number of klingons */
                    266:        double  date;           /* stardate */
                    267:        double  time;           /* time left */
                    268:        double  resource;       /* Federation resources */
                    269:        int     energy;         /* starship's energy */
                    270:        int     shield;         /* energy in shields */
                    271:        double  reserves;       /* life support reserves */
                    272:        int     crew;           /* size of ship's complement */
                    273:        int     brigfree;       /* max possible number of captives */
                    274:        char    torped;         /* photon torpedos */
                    275:        double  damfac[NDEV];   /* damage factor */
                    276:        double  dockfac;        /* docked repair time factor */
                    277:        double  regenfac;       /* regeneration factor */
                    278:        int     stopengy;       /* energy to do emergency stop */
                    279:        int     shupengy;       /* energy to put up shields */
                    280:        int     klingpwr;       /* Klingon initial power */
                    281:        int     warptime;       /* time chewer multiplier */
                    282:        double  phasfac;        /* Klingon phaser power eater factor */
                    283:        char    moveprob[6];    /* probability that a Klingon moves */
                    284:        double  movefac[6];     /* Klingon move distance multiplier */
                    285:        double  eventdly[NEVENTS];      /* event time multipliers */
                    286:        double  navigcrud[2];   /* navigation crudup factor */
                    287:        int     cloakenergy;    /* cloaking device energy per stardate */
                    288:        double  damprob[NDEV];  /* damage probability */
                    289:        double  hitfac;         /* Klingon attack factor */
                    290:        int     klingcrew;      /* number of Klingons in a crew */
                    291:        double  srndrprob;      /* surrender probability */
                    292:        int     energylow;      /* low energy mark (cond YELLOW) */
                    293: }      Param;
                    294: 
                    295: /* Sum of damage probabilities must add to 1000 */
                    296: 
                    297: /* other information kept in a snapshot */
                    298: struct
                    299: {
                    300:        char    bases;          /* number of starbases */
                    301:        char    klings;         /* number of klingons */
                    302:        double  date;           /* stardate */
                    303:        double  time;           /* time left */
                    304:        double  resource;       /* Federation resources */
                    305:        char    distressed;     /* number of currently distressed quadrants */
                    306:        struct event    *eventptr[NEVENTS];     /* pointer to event structs */
                    307:        struct xy       base[MAXBASES];         /* locations of starbases */
                    308: }      Now;
                    309: 
                    310: /* Other stuff, not dumped in a snapshot */
                    311: struct
                    312: {
                    313:        struct kling    klingon[MAXKLQUAD];     /* sorted Klingon list */
                    314:        char            nkling;                 /* number of Klingons in this sector */
                    315:                                                /* < 0 means automatic override mode */
                    316:        char            fast;                   /* set if speed > 300 baud */
                    317:        struct xy       starbase;       /* starbase in current quadrant */
                    318:        char            snapshot[sizeof Quad + sizeof Event + sizeof Now];      /* snapshot for time warp */
                    319:        char            statreport;             /* set to get a status report on a srscan */
                    320: }      Etc;
                    321: 
                    322: /*
                    323:  *     eventptr is a pointer to the event[] entry of the last
                    324:  *     scheduled event of each type.  Zero if no such event scheduled.
                    325:  */
                    326: 
                    327: /* Klingon move indicies */
                    328: # define       KM_OB           0       /* Old quadrant, Before attack */
                    329: # define       KM_OA           1       /* Old quadrant, After attack */
                    330: # define       KM_EB           2       /* Enter quadrant, Before attack */
                    331: # define       KM_EA           3       /* Enter quadrant, After attack */
                    332: # define       KM_LB           4       /* Leave quadrant, Before attack */
                    333: # define       KM_LA           5       /* Leave quadrant, After attack */
                    334: 
                    335: /* you lose codes */
                    336: # define       L_NOTIME        1       /* ran out of time */
                    337: # define       L_NOENGY        2       /* ran out of energy */
                    338: # define       L_DSTRYD        3       /* destroyed by a Klingon */
                    339: # define       L_NEGENB        4       /* ran into the negative energy barrier */
                    340: # define       L_SUICID        5       /* destroyed in a nova */
                    341: # define       L_SNOVA         6       /* destroyed in a supernova */
                    342: # define       L_NOLIFE        7       /* life support died (so did you) */
                    343: # define       L_NOHELP        8       /* you could not be rematerialized */
                    344: # define       L_TOOFAST       9       /* pretty stupid going at warp 10 */
                    345: # define       L_STAR          10      /* ran into a star */
                    346: # define       L_DSTRCT        11      /* self destructed */
                    347: # define       L_CAPTURED      12      /* captured by Klingons */
                    348: # define       L_NOCREW        13      /* you ran out of crew */
                    349: 
                    350: /******************  COMPILE OPTIONS  ***********************/
                    351: 
                    352: /* Trace info */
                    353: # define       xTRACE          1
                    354: int    Trace;

unix.superglobalmegacorp.com

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