De-FORTRANize the future array.
[super-star-trek.git] / sst.h
diff --git a/sst.h b/sst.h
index 78596102d81c987fcc8c7018ac48fe7f5c2336e3..c9154adf43ea09aa879611bc2ba754cdd6800fa5 100644 (file)
--- a/sst.h
+++ b/sst.h
 
 #define PHASEFAC (2.0)
 #define PLNETMAX (10)
-#define NEVENTS (8)
 #define GALSIZE        (8)
 #define QUADSIZE (10)
 #define BASEMAX        (6)
 
+/*
+ * These macros hide the difference between 0-origin and 1-origin addressing.
+ * They're a step towards de-FORTRANizing the code.
+ */
+#define VALID_QUADRANT(x, y)   ((x)>=1 && (x)<=GALSIZE && (y)>=1 && (y)<=GALSIZE)
+#define VALID_SECTOR(x, y)     ((x)>=1 && (x)<=QUADSIZE && (y)>=1 && (y)<=QUADSIZE)
+#define for_quadrants(i)       for (i = 1; i <= GALSIZE; i++)
+#define for_sectors(i)         for (i = 1; i <= QUADSIZE; i++)
+#define for_commanders(i)      for (i = 1; i <= game.state.remcom; i++)
+#define for_local_enemies(i)   for (i = 1; i <= nenhere; i++)
+#define for_starbases(i)       for (i = 1; i <= game.state.rembase; i++)
+
 typedef struct {
     int x;     /* Quadrant location of planet */
     int y;
@@ -104,6 +115,19 @@ typedef struct {
 #define DDSP    14  // Added deep space probe
 #define NDEVICES (15)  // Number of devices
 
+/* Define future events */
+#define FSPY   0       // Spy event happens always (no future[] entry)
+                                       // can cause SC to tractor beam Enterprise
+#define FSNOVA  1   // Supernova
+#define FTBEAM  2   // Commander tractor beams Enterprise
+#define FSNAP   3   // Snapshot for time warp
+#define FBATTAK 4   // Commander attacks base
+#define FCDBAS  5   // Commander destroys base
+#define FSCMOVE 6   // Supercommander moves (might attack base)
+#define FSCDBAS 7   // Supercommander destroys base
+#define FDSPROB 8   // Move deep space probe
+#define NEVENTS (9)
+
 // 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,
@@ -123,7 +147,7 @@ EXTERN struct {
     double kdist[(QUADSIZE+1)*(QUADSIZE+1)];           // enemy distances
     double kavgd[(QUADSIZE+1)*(QUADSIZE+1)];           // average distances
     double damage[NDEVICES];   // damage encountered
-    double future[NEVENTS+1];  // future events
+    double future[NEVENTS];    // future events
     char passwd[10];           // Self Destruct password
     int kx[(QUADSIZE+1)*(QUADSIZE+1)];                 // enemy sector locations
     int ky[(QUADSIZE+1)*(QUADSIZE+1)];
@@ -319,18 +343,6 @@ typedef enum {FWON, FDEPLETE, FLIFESUP, FNRG, FBATTLE,
                          FHOLE} FINTYPE ;
 enum loctype {neither, quadrant, sector};
 
-/* Define future events */
-#define FSPY   0       // Spy event happens always (no future[] entry)
-                                       // can cause SC to tractor beam Enterprise
-#define FSNOVA  1   // Supernova
-#define FTBEAM  2   // Commander tractor beams Enterprise
-#define FSNAP   3   // Snapshot for time warp
-#define FBATTAK 4   // Commander attacks base
-#define FCDBAS  5   // Commander destroys base
-#define FSCMOVE 6   // Supercommander moves (might attack base)
-#define FSCDBAS 7   // Supercommander destroys base
-#define FDSPROB 8   // Move deep space probe
-
 #ifdef INCLUDED
 char *device[NDEVICES] = {
        "S. R. Sensors",