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