Rewrite to get ride of FORTRANish galaxy and newstuff arrays. It's
[super-star-trek.git] / sst.h
diff --git a/sst.h b/sst.h
index 64dd1bc9845c36c61ed8d844fdd1e1d824748433..9a67c1d063ac1dd44cafcb6a6d15c34ff7edc51c 100644 (file)
--- a/sst.h
+++ b/sst.h
@@ -14,7 +14,6 @@
 
 // #define DEBUG
 
-#define NDEVICES (15)  // Number of devices
 #define PHASEFAC (2.0)
 #define PLNETMAX (10)
 #define NEVENTS (8)
@@ -41,11 +40,9 @@ typedef struct {
        basekl,                 // destroyed bases
        killk,                  // Klingons killed
        killc,                  // commanders killed
-       galaxy[GALSIZE+1][GALSIZE+1],   // The Galaxy (subscript 0 not used)
        cx[QUADSIZE+1],cy[QUADSIZE+1],  // Commander quadrant coordinates
        baseqx[BASEMAX],                // Base quadrant X
        baseqy[BASEMAX],                // Base quadrant Y
-       newstuf[GALSIZE+1][GALSIZE+1],  // Extended galaxy goodies
        isx, isy,               // Coordinate of Super Commander
        nscrem,                 // remaining super commanders
        nromkl,                 // Romulans killed
@@ -56,28 +53,22 @@ typedef struct {
        double date,            // stardate
            remres,             // remaining resources
            remtime;            // remaining time
+    struct {
+       int stars;
+       int planets;
+       int starbase;
+       int klingons;
+       int romulans;
+       int supernova;
+       int charted;
+    } galaxy[GALSIZE+1][GALSIZE+1];    // The Galaxy (subscript 0 not used)
+    struct {
+       int stars;
+       int starbase;
+       int klingons;
+    } chart[GALSIZE+1][GALSIZE+1];     // the starchart (subscript 0 not used)
 } snapshot;                            // Data that is snapshot
 
-/*
- * This is how the integers in the galaxy array are encoded.
- * Someday these should turn into structure fields.
- */
-#define SUPERNOVA_PLACE        1000
-#define KLINGON_PLACE  100
-#define BASE_PLACE     10
-#define STAR_PLACE     1
-#define KLINGONS(n)    ((n)/KLINGON_PLACE)
-#define BASES(n)       (((n)%KLINGON_PLACE)/BASE_PLACE)
-#define STARS(n)       ((n)%BASE_PLACE)
-#define NOEXIT(s)      ((s) > 899)     /* supernova or >8 Klingons */
-
-/* for newstuff */
-#define ROMULAN_PLACE  10
-#define ROMULANS(n)    ((n)/ROMULAN_PLACE)
-
-/* for starch */
-#define CHART_UNKNOWN  -1
-
 #define SKILL_NONE     0
 #define SKILL_NOVICE   1
 #define SKILL_FAIR     2
@@ -95,6 +86,24 @@ typedef struct {
 #define OPTION_THINGY  0x00000010      /* Space Thingy can shoot back */
 #define OPTION_PROBE   0x00000020      /* deep-space probes */
 
+/* Define devices */
+#define DSRSENS 0
+#define DLRSENS 1
+#define DPHASER 2
+#define DPHOTON 3
+#define DLIFSUP 4
+#define DWARPEN 5
+#define DIMPULS 6
+#define DSHIELD 7
+#define DRADIO  8
+#define DSHUTTL 9
+#define DCOMPTR 10
+#define DTRANSP 11
+#define DSHCTRL 12
+#define DDRAY   13  // Added deathray
+#define DDSP    14  // Added deep space probe
+#define NDEVICES (15)  // Number of devices
+
 // Scalar variables that are needed for freezing the game
 // are placed in a structure. #defines are used to access by their
 // original names. Gee, I could have done this with the d structure,
@@ -113,12 +122,11 @@ EXTERN struct {
     double kpower[(QUADSIZE+1)*(QUADSIZE+1)];          // enemy energy levels
     double kdist[(QUADSIZE+1)*(QUADSIZE+1)];           // enemy distances
     double kavgd[(QUADSIZE+1)*(QUADSIZE+1)];           // average distances
-    double damage[NDEVICES+1]; // damage encountered
+    double damage[NDEVICES];   // damage encountered
     double future[NEVENTS+1];  // future events
     char passwd[10];           // Self Destruct password
     int kx[(QUADSIZE+1)*(QUADSIZE+1)];                 // enemy sector locations
     int ky[(QUADSIZE+1)*(QUADSIZE+1)];
-    int starch[GALSIZE+1][GALSIZE+1];          // star chart
     /* members with macro definitions start here */
     int inkling,
        inbase,
@@ -294,7 +302,7 @@ EXTERN struct {
 #define nprobes game.nprobes           // number of probes available
 
 /* the following global state doesn't need to be saved */
-EXTERN char    *device[NDEVICES+1];
+EXTERN char    *device[NDEVICES];
 EXTERN int iscore, iskill; // Common PLAQ
 EXTERN double perdate;
 EXTERN double aaitem;
@@ -310,23 +318,6 @@ typedef enum {FWON, FDEPLETE, FLIFESUP, FNRG, FBATTLE,
                          FHOLE} FINTYPE ;
 enum loctype {neither, quadrant, sector};
 
-/* Define devices */
-#define DSRSENS 1
-#define DLRSENS 2
-#define DPHASER 3
-#define DPHOTON 4
-#define DLIFSUP 5
-#define DWARPEN 6
-#define DIMPULS 7
-#define DSHIELD 8
-#define DRADIO  9
-#define DSHUTTL 10
-#define DCOMPTR 11
-#define DTRANSP 12
-#define DSHCTRL 13
-#define DDRAY   14  // Added deathray
-#define DDSP    15  // Added deep space probe
-
 /* Define future events */
 #define FSPY   0       // Spy event happens always (no future[] entry)
                                        // can cause SC to tractor beam Enterprise
@@ -340,8 +331,7 @@ enum loctype {neither, quadrant, sector};
 #define FDSPROB 8   // Move deep space probe
 
 #ifdef INCLUDED
-char *device[NDEVICES+1] = {
-       "",
+char *device[NDEVICES] = {
        "S. R. Sensors",
        "L. R. Sensors",
        "Phasers",
@@ -355,8 +345,8 @@ char *device[NDEVICES+1] = {
        "Computer",
        "Transporter",
        "Shield Control",
-    "Death Ray",
-    "D. S. Probe"};                                                                    
+       "Death Ray",
+       "D. S. Probe"};                                                                 
 #endif
 
 #ifndef TRUE
@@ -404,6 +394,7 @@ void doshield(int);
 void dock(int);
 void dreprt(void);
 void chart(int);
+void rechart(void);
 void impuls(void);
 void wait(void);
 void setwrp(void);