(linenum→info "unix/slp.c:2238")

bsd-games/2.17/trek/trek.h

    1: /*      $NetBSD: trek.h,v 1.11 2005/02/15 12:54:50 jsm Exp $ */
    2: 
    3: /*
    4:  * Copyright (c) 1980, 1993
    5:  *      The Regents of the University of California.  All rights reserved.
    6:  *
    7:  * Redistribution and use in source and binary forms, with or without
    8:  * modification, are permitted provided that the following conditions
    9:  * are met:
   10:  * 1. Redistributions of source code must retain the above copyright
   11:  *    notice, this list of conditions and the following disclaimer.
   12:  * 2. Redistributions in binary form must reproduce the above copyright
   13:  *    notice, this list of conditions and the following disclaimer in the
   14:  *    documentation and/or other materials provided with the distribution.
   15:  * 3. Neither the name of the University nor the names of its contributors
   16:  *    may be used to endorse or promote products derived from this software
   17:  *    without specific prior written permission.
   18:  *
   19:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   20:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   21:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   22:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   23:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   24:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   25:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   26:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   27:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   28:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   29:  * SUCH DAMAGE.
   30:  *
   31:  *      @(#)trek.h   8.1 (Berkeley) 5/31/93
   32:  */
   33: 
   34: /*
   35: **  Global Declarations
   36: **
   37: **      Virtually all non-local variable declarations are made in this
   38: **      file.  Exceptions are those things which are initialized, which
   39: **      are defined in "externs.c", and things which are local to one
   40: **      program file.
   41: **
   42: **      So far as I know, nothing in here must be preinitialized to
   43: **      zero.
   44: */
   45: 
   46: /* external function definitions */
   47: 
   48: /*********************  GALAXY  **************************/
   49: 
   50: /* galactic parameters */
   51: # define        NSECTS         10     /* dimensions of quadrant in sectors */
   52: # define        NQUADS         8      /* dimension of galazy in quadrants */
   53: # define        NINHAB         32     /* number of quadrants which are inhabited */
   54: 
   55: struct quad             /* definition for each quadrant */
   56: {
   57:         unsigned char  bases;   /* number of bases in this quadrant */
   58:         char   klings;           /* number of Klingons in this quadrant */
   59:         char   holes;            /* number of black holes in this quadrant */
   60:         int    scanned;   /* star chart entry (see below) */
   61:         short  stars;           /* number of stars in this quadrant */
   62:         char   qsystemname;      /* starsystem name (see below) */
   63: };
   64: 
   65: # define        Q_DISTRESSED   0200
   66: # define        Q_SYSTEM       077
   67: 
   68: /*  systemname conventions:
   69:  *      1 -> NINHAB  index into Systemname table for live system.
   70:  *      + Q_DISTRESSED       distressed starsystem -- systemname & Q_SYSTEM
   71:  *                      is the index into the Event table which will
   72:  *                      have the system name
   73:  *      0            dead or nonexistent starsystem
   74:  *
   75:  *  starchart ("scanned") conventions:
   76:  *      0 -> 999     taken as is
   77:  *      -1           not yet scanned ("...")
   78:  *      1000         supernova ("///")
   79:  *      1001         starbase + ??? (".1.")
   80: */
   81: 
   82: /* ascii names of systems */
   83: extern const char       *const Systemname[NINHAB];
   84: 
   85: /* quadrant definition */
   86: extern struct quad      Quad[NQUADS][NQUADS];
   87: 
   88: /* defines for sector map  (below) */
   89: # define        EMPTY          '.'
   90: # define        STAR           '*'
   91: # define        BASE           '#'
   92: # define        ENTERPRISE     'E'
   93: # define        QUEENE         'Q'
   94: # define        KLINGON                'K'
   95: # define        INHABIT                '@'
   96: # define        HOLE           ' '
   97: 
   98: /* current sector map */
   99: extern char     Sect[NSECTS][NSECTS];
  100: 
  101: 
  102: 
  103: /************************ DEVICES ******************************/
  104: 
  105: # define        NDEV           16       /* max number of devices */
  106: 
  107: /* device tokens */
  108: # define        WARP           0        /* warp engines */
  109: # define        SRSCAN         1      /* short range scanners */
  110: # define        LRSCAN         2      /* long range scanners */
  111: # define        PHASER         3      /* phaser control */
  112: # define        TORPED         4      /* photon torpedo control */
  113: # define        IMPULSE                5     /* impulse engines */
  114: # define        SHIELD         6      /* shield control */
  115: # define        COMPUTER       7     /* on board computer */
  116: # define        SSRADIO                8     /* subspace radio */
  117: # define        LIFESUP                9     /* life support systems */
  118: # define        SINS           10       /* Space Inertial Navigation System */
  119: # define        CLOAK          11      /* cloaking device */
  120: # define        XPORTER                12    /* transporter */
  121: # define        SHUTTLE                13    /* shuttlecraft */
  122: 
  123: /* device names */
  124: struct device
  125: {
  126:         const char     *name;              /* device name */
  127:         const char     *person;    /* the person who fixes it */
  128: };
  129: 
  130: extern const struct device      Device[NDEV];
  131: 
  132: /***************************  EVENTS  ****************************/
  133: 
  134: # define        NEVENTS                12    /* number of different event types */
  135: 
  136: # define        E_LRTB         1      /* long range tractor beam */
  137: # define        E_KATSB                2     /* Klingon attacks starbase */
  138: # define        E_KDESB                3     /* Klingon destroys starbase */
  139: # define        E_ISSUE                4     /* distress call is issued */
  140: # define        E_ENSLV                5     /* Klingons enslave a quadrant */
  141: # define        E_REPRO                6     /* a Klingon is reproduced */
  142: # define        E_FIXDV                7     /* fix a device */
  143: # define        E_ATTACK       8     /* Klingon attack during rest period */
  144: # define        E_SNAP         9      /* take a snapshot for time warp */
  145: # define        E_SNOVA                10    /* supernova occurs */
  146: 
  147: # define        E_GHOST                0100  /* ghost of a distress call if ssradio out */
  148: # define        E_HIDDEN       0200  /* event that is unreportable because ssradio out */
  149: # define        E_EVENT                077   /* mask to get event code */
  150: 
  151: struct event
  152: {
  153:         unsigned char  x, y;           /* coordinates */
  154:         double         date;          /* trap stardate */
  155:         char           evcode;          /* event type */
  156:         unsigned char  systemname;      /* starsystem name */
  157: };
  158: /* systemname conventions:
  159:  *      1 -> NINHAB  index into Systemname table for reported distress calls
  160:  *
  161:  * evcode conventions:
  162:  *      1 -> NEVENTS-1       event type
  163:  *      + E_HIDDEN   unreported (SSradio out)
  164:  *      + E_GHOST    actually already expired
  165:  *      0            unallocated
  166:  */
  167: 
  168: # define        MAXEVENTS      25   /* max number of concurrently pending events */
  169: 
  170: extern struct event     Event[MAXEVENTS];   /* dynamic event list; one entry per pending event */
  171: 
  172: /*****************************  KLINGONS  *******************************/
  173: 
  174: struct kling
  175: {
  176:         unsigned char  x, y;    /* coordinates */
  177:         int    power;             /* power left */
  178:         double dist;           /* distance to Enterprise */
  179:         double avgdist;        /* average over this move */
  180:         char   srndreq;  /* set if surrender has been requested */
  181: };
  182: 
  183: # define        MAXKLQUAD      9    /* maximum klingons per quadrant */
  184: 
  185: /********************** MISCELLANEOUS ***************************/
  186: 
  187: /* condition codes */
  188: # define        GREEN          0
  189: # define        DOCKED         1
  190: # define        YELLOW         2
  191: # define        RED            3
  192: 
  193: /* starbase coordinates */
  194: # define        MAXBASES       9     /* maximum number of starbases in galaxy */
  195: 
  196: /*  distress calls  */
  197: # define        MAXDISTR       5     /* maximum concurrent distress calls */
  198: 
  199: /* phaser banks */
  200: # define        NBANKS         6      /* number of phaser banks */
  201: 
  202: struct xy
  203: {
  204:         unsigned char  x, y;            /* coordinates */
  205: };
  206: 
  207: 
  208: /*
  209:  *      note that much of the stuff in the following structs CAN NOT
  210:  *      be moved around!!!!
  211:  */
  212: 
  213: 
  214: /* information regarding the state of the starship */
  215: struct Ship_struct
  216: {
  217:         double warp;           /* warp factor */
  218:         double warp2;          /* warp factor squared */
  219:         double warp3;          /* warp factor cubed */
  220:         char   shldup;           /* shield up flag */
  221:         char   cloaked;  /* set if cloaking device on */
  222:         int    energy;            /* starship's energy */
  223:         int    shield;            /* energy in shields */
  224:         double reserves;       /* life support reserves */
  225:         int    crew;              /* ship's complement */
  226:         int    brigfree;  /* space left in brig */
  227:         char   torped;           /* torpedoes */
  228:         char   cloakgood;        /* set if we have moved */
  229:         int    quadx;             /* quadrant x coord */
  230:         int    quady;             /* quadrant y coord */
  231:         int    sectx;             /* sector x coord */
  232:         int    secty;             /* sector y coord */
  233:         unsigned char  cond;    /* condition code */
  234:         char   sinsbad;  /* Space Inertial Navigation System condition */
  235:         const char *shipname;  /* name of current starship */
  236:         char   ship;             /* current starship */
  237:         int    distressed;        /* number of distress calls */
  238: };
  239: extern struct Ship_struct Ship;
  240: 
  241: /* sinsbad is set if SINS is working but not calibrated */
  242: 
  243: /* game related information, mostly scoring */
  244: struct Game_struct
  245: {
  246:         int    killk;             /* number of klingons killed */
  247:         int    deaths;            /* number of deaths onboard Enterprise */
  248:         char   negenbar; /* number of hits on negative energy barrier */
  249:         char   killb;            /* number of starbases killed */
  250:         int    kills;             /* number of stars killed */
  251:         char   skill;            /* skill rating of player */
  252:         char   length;           /* length of game */
  253:         char   killed;           /* set if you were killed */
  254:         char   killinhab;        /* number of inhabited starsystems killed */
  255:         char   tourn;            /* set if a tournament game */
  256:         char   passwd[15];       /* game password */
  257:         char   snap;             /* set if snapshot taken */
  258:         char   helps;            /* number of help calls */
  259:         int    captives;  /* total number of captives taken */
  260: };
  261: extern struct Game_struct Game;
  262: 
  263: /* per move information */
  264: struct Move_struct
  265: {
  266:         char   free;             /* set if a move is free */
  267:         char   endgame;  /* end of game flag */
  268:         char   shldchg;  /* set if shields changed this move */
  269:         char   newquad;  /* set if just entered this quadrant */
  270:         char   resting;  /* set if this move is a rest */
  271:         double time;           /* time used this move */
  272: };
  273: extern struct Move_struct Move;
  274: 
  275: /* parametric information */
  276: struct Param_struct
  277: {
  278:         unsigned char  bases;   /* number of starbases */
  279:         char   klings;           /* number of klingons */
  280:         double date;           /* stardate */
  281:         double time;           /* time left */
  282:         double resource;       /* Federation resources */
  283:         int    energy;            /* starship's energy */
  284:         int    shield;            /* energy in shields */
  285:         double reserves;       /* life support reserves */
  286:         int    crew;              /* size of ship's complement */
  287:         int    brigfree;  /* max possible number of captives */
  288:         char   torped;           /* photon torpedos */
  289:         double damfac[NDEV];   /* damage factor */
  290:         double dockfac;        /* docked repair time factor */
  291:         double regenfac;       /* regeneration factor */
  292:         int    stopengy;  /* energy to do emergency stop */
  293:         int    shupengy;  /* energy to put up shields */
  294:         int    klingpwr;  /* Klingon initial power */
  295:         int    warptime;  /* time chewer multiplier */
  296:         double phasfac;        /* Klingon phaser power eater factor */
  297:         char   moveprob[6];      /* probability that a Klingon moves */
  298:         double movefac[6];     /* Klingon move distance multiplier */
  299:         double eventdly[NEVENTS];      /* event time multipliers */
  300:         double navigcrud[2];   /* navigation crudup factor */
  301:         int    cloakenergy;       /* cloaking device energy per stardate */
  302:         double damprob[NDEV];  /* damage probability */
  303:         double hitfac;         /* Klingon attack factor */
  304:         int    klingcrew; /* number of Klingons in a crew */
  305:         double srndrprob;      /* surrender probability */
  306:         int    energylow; /* low energy mark (cond YELLOW) */
  307: };
  308: extern struct Param_struct Param;
  309: 
  310: /* Sum of damage probabilities must add to 1000 */
  311: 
  312: /* other information kept in a snapshot */
  313: struct Now_struct
  314: {
  315:         unsigned char  bases;   /* number of starbases */
  316:         char   klings;           /* number of klingons */
  317:         double date;           /* stardate */
  318:         double time;           /* time left */
  319:         double resource;       /* Federation resources */
  320:         char   distressed;       /* number of currently distressed quadrants */
  321:         struct event   *eventptr[NEVENTS];       /* pointer to event structs */
  322:         struct xy      base[MAXBASES];              /* locations of starbases */
  323: };
  324: extern struct Now_struct Now;
  325: 
  326: /* Other stuff, not dumped in a snapshot */
  327: struct Etc_struct
  328: {
  329:         struct kling   klingon[MAXKLQUAD];       /* sorted Klingon list */
  330:         short          nkling;                 /* number of Klingons in this sector */
  331:                                                 /* < 0 means automatic override mode */
  332:         char           fast;                    /* set if speed > 300 baud */
  333:         struct xy      starbase;    /* starbase in current quadrant */
  334:         char           snapshot[sizeof Quad + sizeof Event + sizeof Now];       /* snapshot for time warp */
  335:         char           statreport;              /* set to get a status report on a srscan */
  336: };
  337: extern struct Etc_struct Etc;
  338: 
  339: /*
  340:  *      eventptr is a pointer to the event[] entry of the last
  341:  *      scheduled event of each type.  Zero if no such event scheduled.
  342:  */
  343: 
  344: /* Klingon move indicies */
  345: # define        KM_OB          0       /* Old quadrant, Before attack */
  346: # define        KM_OA          1       /* Old quadrant, After attack */
  347: # define        KM_EB          2       /* Enter quadrant, Before attack */
  348: # define        KM_EA          3       /* Enter quadrant, After attack */
  349: # define        KM_LB          4       /* Leave quadrant, Before attack */
  350: # define        KM_LA          5       /* Leave quadrant, After attack */
  351: 
  352: /* you lose codes */
  353: # define        L_NOTIME       1     /* ran out of time */
  354: # define        L_NOENGY       2     /* ran out of energy */
  355: # define        L_DSTRYD       3     /* destroyed by a Klingon */
  356: # define        L_NEGENB       4     /* ran into the negative energy barrier */
  357: # define        L_SUICID       5     /* destroyed in a nova */
  358: # define        L_SNOVA                6     /* destroyed in a supernova */
  359: # define        L_NOLIFE       7     /* life support died (so did you) */
  360: # define        L_NOHELP       8     /* you could not be rematerialized */
  361: # define        L_TOOFAST      9    /* pretty stupid going at warp 10 */
  362: # define        L_STAR         10     /* ran into a star */
  363: # define        L_DSTRCT       11    /* self destructed */
  364: # define        L_CAPTURED     12  /* captured by Klingons */
  365: # define        L_NOCREW       13    /* you ran out of crew */
  366: 
  367: /******************  COMPILE OPTIONS  ***********************/
  368: 
  369: /* Trace info */
  370: # define        xTRACE         1
  371: extern int      Trace;
  372: 
  373: /* abandon.c */
  374: void abandon(int);
  375: 
  376: /* attack.c */
  377: void attack(int);
  378: 
  379: /* autover.c */
  380: void autover(void);
  381: 
  382: /* capture.c */
  383: void capture(int);
  384: struct kling *selectklingon(void);
  385: 
  386: /* cgetc.c */
  387: char cgetc(int);
  388: 
  389: /* check_out.c */
  390: int check_out(int);
  391: 
  392: /* checkcond.c */
  393: void checkcond(void);
  394: 
  395: /* compkl.c */
  396: void compkldist(int);
  397: 
  398: /* computer.c */
  399: void computer(int);
  400: 
  401: /* damage.c */
  402: void damage(int, double);
  403: 
  404: /* damaged.c */
  405: int damaged(int);
  406: 
  407: /* dcrept.c */
  408: void dcrept(int);
  409: 
  410: /* destruct.c */
  411: void destruct(int);
  412: 
  413: /* dock.c */
  414: void dock(int);
  415: void undock(int);
  416: 
  417: /* dumpgame.c */
  418: void dumpgame(int);
  419: int restartgame(void);
  420: 
  421: /* dumpme.c */
  422: void dumpme(int);
  423: 
  424: /* dumpssradio.c */
  425: int dumpssradio(void);
  426: 
  427: /* events.c */
  428: int events(int);
  429: 
  430: /* externs.c */
  431: 
  432: /* getcodi.c */
  433: int getcodi(int *, double *);
  434: 
  435: /* help.c */
  436: void help(int);
  437: 
  438: /* impulse.c */
  439: void impulse(int);
  440: 
  441: /* initquad.c */
  442: void initquad(int);
  443: void sector(int *, int *);
  444: 
  445: /* kill.c */
  446: void killk(int, int );
  447: void killb(int, int );
  448: void kills(int, int , int);
  449: void killd(int, int , int);
  450: 
  451: /* klmove.c */
  452: void klmove(int);
  453: 
  454: /* lose.c */
  455: void lose(int) __attribute__((__noreturn__));
  456: 
  457: /* lrscan.c */
  458: void lrscan(int);
  459: 
  460: /* move.c */
  461: double move(int, int, double, double);
  462: 
  463: /* nova.c */
  464: void nova(int, int );
  465: 
  466: /* out.c */
  467: void out(int);
  468: 
  469: /* phaser.c */
  470: void phaser(int);
  471: 
  472: /* play.c */
  473: void myreset(int) __attribute__((__noreturn__));
  474: void play(void) __attribute__((__noreturn__));
  475: 
  476: /* ram.c */
  477: void ram(int, int );
  478: 
  479: /* ranf.c */
  480: int ranf(int);
  481: double franf(void);
  482: 
  483: /* rest.c */
  484: void rest(int);
  485: 
  486: /* schedule.c */
  487: struct event *schedule(int, double, int, int , int);
  488: void reschedule(struct event *, double);
  489: void unschedule(struct event *);
  490: struct event *xsched(int, int, int, int , int );
  491: void xresched(struct event *, int, int);
  492: 
  493: /* score.c */
  494: long score(void);
  495: 
  496: /* setup.c */
  497: void setup(void);
  498: 
  499: /* setwarp.c */
  500: void setwarp(int);
  501: 
  502: /* shield.c */
  503: void shield(int);
  504: 
  505: /* snova.c */
  506: void snova(int, int );
  507: 
  508: /* srscan.c */
  509: void srscan(int);
  510: 
  511: /* systemname.c */
  512: const char *systemname(const struct quad *);
  513: 
  514: /* torped.c */
  515: void torped(int);
  516: 
  517: /* visual.c */
  518: void visual(int);
  519: 
  520: /* warp.c */
  521: void dowarp(int);
  522: void warp(int, int, double);
  523: 
  524: /* win.c */
  525: void win(void) __attribute__((__noreturn__));
1
Syntax (Markdown)