int pclass; /* class M, N, or O (1, 2, or 3) */\r
int crystals; /* has crystals */\r
int known; /* =1 contents known, =2 shuttle on this planet */\r
-} PLANETS;\r
+} planet;\r
\r
-EXTERN struct foo {\r
- int snap, // snapshot taken\r
- remkl, // remaining klingons\r
- remcom, // remaining commanders\r
- rembase, // remaining bases\r
- starkl, // destroyed stars\r
- basekl, // destroyed bases\r
- killk, // Klingons killed\r
- killc, // commanders killed\r
- galaxy[9][9], // The Galaxy (subscript 0 not used)\r
- cx[11],cy[11], // Commander quadrant coordinates\r
- baseqx[6], // Base quadrant X\r
- baseqy[6], // Base quadrant Y\r
- newstuf[9][9], // Extended galaxy goodies\r
- isx, isy, // Coordinate of Super Commander\r
- nscrem, // remaining super commanders\r
- nromkl, // Romulans killed\r
- nromrem, // Romulans remaining\r
- nsckill, // super commanders killed\r
- nplankl; // destroyed planets\r
- PLANETS plnets[PLNETMAX+1]; // Planet information\r
+typedef struct {\r
+ int snap, // snapshot taken\r
+ remkl, // remaining klingons\r
+ remcom, // remaining commanders\r
+ rembase, // remaining bases\r
+ starkl, // destroyed stars\r
+ basekl, // destroyed bases\r
+ killk, // Klingons killed\r
+ killc, // commanders killed\r
+ galaxy[9][9], // The Galaxy (subscript 0 not used)\r
+ cx[11],cy[11], // Commander quadrant coordinates\r
+ baseqx[6], // Base quadrant X\r
+ baseqy[6], // Base quadrant Y\r
+ newstuf[9][9], // Extended galaxy goodies\r
+ isx, isy, // Coordinate of Super Commander\r
+ nscrem, // remaining super commanders\r
+ nromkl, // Romulans killed\r
+ nromrem, // Romulans remaining\r
+ nsckill, // super commanders killed\r
+ nplankl; // destroyed planets\r
+ planet plnets[PLNETMAX+1]; // Planet information\r
double date, // stardate\r
- remres, // remaining resources\r
+ remres, // remaining resources\r
remtime; // remaining time\r
-} d, snapsht; // Data that is snapshot\r
-\r
-EXTERN char\r
- quad[11][11]; // contents of our quadrant\r
+} snapshot; // Data that is snapshot\r
\r
// Scalar variables that are needed for freezing the game\r
// are placed in a structure. #defines are used to access by their\r
// but I just didn't think of it back when I started.\r
\r
EXTERN struct foo2 {\r
- int inkling,\r
+ snapshot state;\r
+ snapshot snapsht;\r
+ char quad[11][11]; // contents of our quadrant\r
+ double kpower[21]; // enemy energy levels\r
+ double kdist[21]; // enemy distances\r
+ double kavgd[21]; // average distances\r
+ double damage[ndevice+1]; // damage encountered\r
+ double future[NEVENTS+1]; // future events\r
+ char passwd[10]; // Self Destruct password\r
+ int kx[21]; // enemy sector locations\r
+ int ky[21];\r
+ int starch[9][9]; // star chart\r
+ /* members with macro definitions start here */\r
+ int inkling,\r
inbase,\r
incom,\r
instar,\r
proben,\r
isarmed,\r
nprobes;\r
- double inresor,\r
+ double inresor,\r
intime,\r
inenrg,\r
inshld,\r
#define isarmed game.isarmed // Probe is armed\r
#define nprobes game.nprobes // number of probes available\r
\r
-EXTERN int\r
- kx[21], // enemy sector locations\r
- ky[21],\r
- starch[9][9]; // star chart\r
-\r
+/* the following global state doesn't need to be saved */\r
EXTERN int fromcommandline; // Game start from command line options\r
-\r
-\r
-EXTERN char passwd[10], // Self Destruct password\r
- *device[ndevice+1];\r
-\r
-EXTERN PLANETS nulplanet; // zeroed planet structure\r
-\r
-EXTERN double\r
- kpower[21], // enemy energy levels\r
- kdist[21], // enemy distances\r
- kavgd[21], // average distances\r
- damage[ndevice+1], // damage encountered\r
- future[NEVENTS+1]; // future events\r
-\r
+EXTERN char *device[ndevice+1];\r
+EXTERN planet nulplanet; // zeroed planet structure\r
EXTERN int iscore, iskill; // Common PLAQ\r
EXTERN double perdate;\r
+EXTERN double aaitem;\r
+EXTERN char citem[10];\r
\r
typedef enum {FWON, FDEPLETE, FLIFESUP, FNRG, FBATTLE,\r
FNEG3, FNOVA, FSNOVAED, FABANDN, FDILITHIUM,\r
FPNOVA, FSSC, FSTRACTOR, FDRAY, FTRIBBLE,\r
FHOLE} FINTYPE ;\r
\r
-\r
-EXTERN double aaitem;\r
-EXTERN char citem[10];\r
-\r
-\r
/* Define devices */\r
#define DSRSENS 1\r
#define DLRSENS 2\r
#define FDSPROB 8 // Move deep space probe\r
\r
#ifdef INCLUDED\r
-PLANETS nulplanet = {0};\r
+planet nulplanet = {0};\r
char *device[ndevice+1] = {\r
"",\r
"S. R. Sensors",\r