-/* $NetBSD: trek.h,v 1.10 2004/01/27 20:30:31 jsm Exp $ */
+/* $NetBSD: trek.h,v 1.18 2009/08/12 08:54:54 dholland Exp $ */
/*
* Copyright (c) 1980, 1993
/********************* GALAXY **************************/
+#include <float.h>
+
/* galactic parameters */
-# define NSECTS 10 /* dimensions of quadrant in sectors */
-# define NQUADS 8 /* dimension of galazy in quadrants */
-# define NINHAB 32 /* number of quadrants which are inhabited */
+#define NSECTS 10 /* dimensions of quadrant in sectors */
+#define NQUADS 8 /* dimension of galazy in quadrants */
+#define NINHAB 32 /* number of quadrants which are inhabited */
-struct quad /* definition for each quadrant */
-{
+/* definition for each quadrant */
+struct quad {
unsigned char bases; /* number of bases in this quadrant */
char klings; /* number of Klingons in this quadrant */
char holes; /* number of black holes in this quadrant */
char qsystemname; /* starsystem name (see below) */
};
-# define Q_DISTRESSED 0200
-# define Q_SYSTEM 077
+#define Q_DISTRESSED 0200
+#define Q_SYSTEM 077
-/* systemname conventions:
+/*
+ * systemname conventions:
* 1 -> NINHAB index into Systemname table for live system.
* + Q_DISTRESSED distressed starsystem -- systemname & Q_SYSTEM
* is the index into the Event table which will
* -1 not yet scanned ("...")
* 1000 supernova ("///")
* 1001 starbase + ??? (".1.")
-*/
+ */
/* ascii names of systems */
extern const char *const Systemname[NINHAB];
extern struct quad Quad[NQUADS][NQUADS];
/* defines for sector map (below) */
-# define EMPTY '.'
-# define STAR '*'
-# define BASE '#'
-# define ENTERPRISE 'E'
-# define QUEENE 'Q'
-# define KLINGON 'K'
-# define INHABIT '@'
-# define HOLE ' '
+#define EMPTY '.'
+#define STAR '*'
+#define BASE '#'
+#define ENTERPRISE 'E'
+#define QUEENE 'Q'
+#define KLINGON 'K'
+#define INHABIT '@'
+#define HOLE ' '
/* current sector map */
extern char Sect[NSECTS][NSECTS];
/************************ DEVICES ******************************/
-# define NDEV 16 /* max number of devices */
+#define NDEV 16 /* max number of devices */
/* device tokens */
-# define WARP 0 /* warp engines */
-# define SRSCAN 1 /* short range scanners */
-# define LRSCAN 2 /* long range scanners */
-# define PHASER 3 /* phaser control */
-# define TORPED 4 /* photon torpedo control */
-# define IMPULSE 5 /* impulse engines */
-# define SHIELD 6 /* shield control */
-# define COMPUTER 7 /* on board computer */
-# define SSRADIO 8 /* subspace radio */
-# define LIFESUP 9 /* life support systems */
-# define SINS 10 /* Space Inertial Navigation System */
-# define CLOAK 11 /* cloaking device */
-# define XPORTER 12 /* transporter */
-# define SHUTTLE 13 /* shuttlecraft */
+#define WARP 0 /* warp engines */
+#define SRSCAN 1 /* short range scanners */
+#define LRSCAN 2 /* long range scanners */
+#define PHASER 3 /* phaser control */
+#define TORPED 4 /* photon torpedo control */
+#define IMPULSE 5 /* impulse engines */
+#define SHIELD 6 /* shield control */
+#define COMPUTER 7 /* on board computer */
+#define SSRADIO 8 /* subspace radio */
+#define LIFESUP 9 /* life support systems */
+#define SINS 10 /* Space Inertial Navigation System */
+#define CLOAK 11 /* cloaking device */
+#define XPORTER 12 /* transporter */
+#define SHUTTLE 13 /* shuttlecraft */
/* device names */
-struct device
-{
+struct device {
const char *name; /* device name */
const char *person; /* the person who fixes it */
};
/*************************** EVENTS ****************************/
-# define NEVENTS 12 /* number of different event types */
-
-# define E_LRTB 1 /* long range tractor beam */
-# define E_KATSB 2 /* Klingon attacks starbase */
-# define E_KDESB 3 /* Klingon destroys starbase */
-# define E_ISSUE 4 /* distress call is issued */
-# define E_ENSLV 5 /* Klingons enslave a quadrant */
-# define E_REPRO 6 /* a Klingon is reproduced */
-# define E_FIXDV 7 /* fix a device */
-# define E_ATTACK 8 /* Klingon attack during rest period */
-# define E_SNAP 9 /* take a snapshot for time warp */
-# define E_SNOVA 10 /* supernova occurs */
-
-# define E_GHOST 0100 /* ghost of a distress call if ssradio out */
-# define E_HIDDEN 0200 /* event that is unreportable because ssradio out */
-# define E_EVENT 077 /* mask to get event code */
-
-struct event
-{
+#define NEVENTS 12 /* number of different event types */
+
+#define E_LRTB 1 /* long range tractor beam */
+#define E_KATSB 2 /* Klingon attacks starbase */
+#define E_KDESB 3 /* Klingon destroys starbase */
+#define E_ISSUE 4 /* distress call is issued */
+#define E_ENSLV 5 /* Klingons enslave a quadrant */
+#define E_REPRO 6 /* a Klingon is reproduced */
+#define E_FIXDV 7 /* fix a device */
+#define E_ATTACK 8 /* Klingon attack during rest period */
+#define E_SNAP 9 /* take a snapshot for time warp */
+#define E_SNOVA 10 /* supernova occurs */
+
+#define E_GHOST 0100 /* ghost of a distress call if ssradio out */
+#define E_HIDDEN 0200 /* event unreportable because ssradio out */
+#define E_EVENT 077 /* mask to get event code */
+
+struct event {
unsigned char x, y; /* coordinates */
double date; /* trap stardate */
char evcode; /* event type */
unsigned char systemname; /* starsystem name */
};
-/* systemname conventions:
+
+/*
+ * systemname conventions:
* 1 -> NINHAB index into Systemname table for reported distress calls
*
* evcode conventions:
* 0 unallocated
*/
-# define MAXEVENTS 25 /* max number of concurrently pending events */
+/* max number of concurrently pending events */
+#define MAXEVENTS 25
-extern struct event Event[MAXEVENTS]; /* dynamic event list; one entry per pending event */
+/* dynamic event list; one entry per pending event */
+extern struct event Event[MAXEVENTS];
/***************************** KLINGONS *******************************/
-struct kling
-{
+struct kling {
unsigned char x, y; /* coordinates */
int power; /* power left */
double dist; /* distance to Enterprise */
char srndreq; /* set if surrender has been requested */
};
-# define MAXKLQUAD 9 /* maximum klingons per quadrant */
+#define MAXKLQUAD 9 /* maximum klingons per quadrant */
/********************** MISCELLANEOUS ***************************/
/* condition codes */
-# define GREEN 0
-# define DOCKED 1
-# define YELLOW 2
-# define RED 3
+#define GREEN 0
+#define DOCKED 1
+#define YELLOW 2
+#define RED 3
/* starbase coordinates */
-# define MAXBASES 9 /* maximum number of starbases in galaxy */
+#define MAXBASES 9 /* maximum number of starbases in galaxy */
/* distress calls */
-# define MAXDISTR 5 /* maximum concurrent distress calls */
+#define MAXDISTR 5 /* maximum concurrent distress calls */
/* phaser banks */
-# define NBANKS 6 /* number of phaser banks */
+#define NBANKS 6 /* number of phaser banks */
-struct xy
-{
+struct xy {
unsigned char x, y; /* coordinates */
};
-extern const struct cvntab Skitab[];
-extern const struct cvntab Lentab[];
-
/*
* note that much of the stuff in the following structs CAN NOT
* be moved around!!!!
/* information regarding the state of the starship */
-struct Ship_struct
-{
+struct Ship_struct {
double warp; /* warp factor */
double warp2; /* warp factor squared */
double warp3; /* warp factor cubed */
int sectx; /* sector x coord */
int secty; /* sector y coord */
unsigned char cond; /* condition code */
- char sinsbad; /* Space Inertial Navigation System condition */
+ /* sinsbad is set if SINS is working but not calibrated */
+ char sinsbad; /* Space Inertial Navigation System condition*/
const char *shipname; /* name of current starship */
char ship; /* current starship */
int distressed; /* number of distress calls */
};
extern struct Ship_struct Ship;
-/* sinsbad is set if SINS is working but not calibrated */
/* game related information, mostly scoring */
-struct Game_struct
-{
+struct Game_struct {
int killk; /* number of klingons killed */
int deaths; /* number of deaths onboard Enterprise */
char negenbar; /* number of hits on negative energy barrier */
extern struct Game_struct Game;
/* per move information */
-struct Move_struct
-{
+struct Move_struct {
char free; /* set if a move is free */
char endgame; /* end of game flag */
char shldchg; /* set if shields changed this move */
extern struct Move_struct Move;
/* parametric information */
-struct Param_struct
-{
+struct Param_struct {
unsigned char bases; /* number of starbases */
char klings; /* number of klingons */
double date; /* stardate */
/* Sum of damage probabilities must add to 1000 */
/* other information kept in a snapshot */
-struct Now_struct
-{
+struct Now_struct {
unsigned char bases; /* number of starbases */
char klings; /* number of klingons */
double date; /* stardate */
extern struct Now_struct Now;
/* Other stuff, not dumped in a snapshot */
-struct Etc_struct
-{
- struct kling klingon[MAXKLQUAD]; /* sorted Klingon list */
- short nkling; /* number of Klingons in this sector */
- /* < 0 means automatic override mode */
- char fast; /* set if speed > 300 baud */
- struct xy starbase; /* starbase in current quadrant */
- char snapshot[sizeof Quad + sizeof Event + sizeof Now]; /* snapshot for time warp */
- char statreport; /* set to get a status report on a srscan */
+struct Etc_struct {
+ struct kling klingon[MAXKLQUAD];/* sorted Klingon list */
+ short nkling; /* number of Klingons in this sector */
+ /* < 0 means automatic override mode */
+ char fast; /* set if speed > 300 baud */
+ struct xy starbase; /* starbase in current quadrant */
+ char snapshot[sizeof Quad + sizeof Event + sizeof Now];
+ /* snapshot for time warp */
+ char statreport; /* set to get a status report on a srscan */
};
extern struct Etc_struct Etc;
*/
/* Klingon move indicies */
-# define KM_OB 0 /* Old quadrant, Before attack */
-# define KM_OA 1 /* Old quadrant, After attack */
-# define KM_EB 2 /* Enter quadrant, Before attack */
-# define KM_EA 3 /* Enter quadrant, After attack */
-# define KM_LB 4 /* Leave quadrant, Before attack */
-# define KM_LA 5 /* Leave quadrant, After attack */
+#define KM_OB 0 /* Old quadrant, Before attack */
+#define KM_OA 1 /* Old quadrant, After attack */
+#define KM_EB 2 /* Enter quadrant, Before attack */
+#define KM_EA 3 /* Enter quadrant, After attack */
+#define KM_LB 4 /* Leave quadrant, Before attack */
+#define KM_LA 5 /* Leave quadrant, After attack */
/* you lose codes */
-# define L_NOTIME 1 /* ran out of time */
-# define L_NOENGY 2 /* ran out of energy */
-# define L_DSTRYD 3 /* destroyed by a Klingon */
-# define L_NEGENB 4 /* ran into the negative energy barrier */
-# define L_SUICID 5 /* destroyed in a nova */
-# define L_SNOVA 6 /* destroyed in a supernova */
-# define L_NOLIFE 7 /* life support died (so did you) */
-# define L_NOHELP 8 /* you could not be rematerialized */
-# define L_TOOFAST 9 /* pretty stupid going at warp 10 */
-# define L_STAR 10 /* ran into a star */
-# define L_DSTRCT 11 /* self destructed */
-# define L_CAPTURED 12 /* captured by Klingons */
-# define L_NOCREW 13 /* you ran out of crew */
+#define L_NOTIME 1 /* ran out of time */
+#define L_NOENGY 2 /* ran out of energy */
+#define L_DSTRYD 3 /* destroyed by a Klingon */
+#define L_NEGENB 4 /* ran into the negative energy barrier */
+#define L_SUICID 5 /* destroyed in a nova */
+#define L_SNOVA 6 /* destroyed in a supernova */
+#define L_NOLIFE 7 /* life support died (so did you) */
+#define L_NOHELP 8 /* you could not be rematerialized */
+#define L_TOOFAST 9 /* pretty stupid going at warp 10 */
+#define L_STAR 10 /* ran into a star */
+#define L_DSTRCT 11 /* self destructed */
+#define L_CAPTURED 12 /* captured by Klingons */
+#define L_NOCREW 13 /* you ran out of crew */
/****************** COMPILE OPTIONS ***********************/
/* Trace info */
-# define xTRACE 1
+#define xTRACE 1
extern int Trace;
+#define TOOLARGE (DBL_MAX / 2) /* < DOUBLE_MAX for everyone */
+
/* abandon.c */
void abandon(int);
/* capture.c */
void capture(int);
-struct kling *selectklingon(void);
-
-/* cgetc.c */
-char cgetc(int);
/* check_out.c */
int check_out(int);
void klmove(int);
/* lose.c */
-void lose(int) __attribute__((__noreturn__));
+void lose(int) __dead;
/* lrscan.c */
void lrscan(int);
void phaser(int);
/* play.c */
-void myreset(int) __attribute__((__noreturn__));
-void play(void) __attribute__((__noreturn__));
+void play(void) __dead;
/* ram.c */
void ram(int, int );
void warp(int, int, double);
/* win.c */
-void win(void) __attribute__((__noreturn__));
+void win(void) __dead;