Get rid of DESTROY macro.
[super-star-trek.git] / src / sst.h
index f9676f83cb2813eadf7468594a8e6611c69f6fcb..7389c5de3aecd4a0c3636b88c172849e9a4d9ea1 100644 (file)
--- a/src/sst.h
+++ b/src/sst.h
 #define min(x, y)      ((x)<(y)?(x):(y))
 #define max(x, y)      ((x)>(y)?(x):(y))
 
-#define PHASEFAC (2.0)
-#define GALSIZE        (8)
-#define NINHAB (GALSIZE * GALSIZE / 2)
-#define MAXUNINHAB (10)
-#define PLNETMAX (NINHAB + MAXUNINHAB)
-#define QUADSIZE (10)
-#define BASEMAX        (5)
+#define PHASEFAC       2.0
+#define GALSIZE                8
+#define NINHAB         (GALSIZE * GALSIZE / 2)
+#define MAXUNINHAB     10
+#define PLNETMAX       (NINHAB + MAXUNINHAB)
+#define QUADSIZE       10
+#define BASEMAX                (GALSIZE * GALSIZE / 12)
+#define MAXKLGAME      127
+#define MAXKLQUAD      9
 
 /*
  * These macros hide the difference between 0-origin and 1-origin addressing.
  */
 #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 <= game.nenhere; i++)
-#define for_starbases(i)       for (i = 1; i <= game.state.rembase; i++)
 
 typedef struct {int x; int y;} coord;
 
@@ -50,15 +47,13 @@ typedef struct {int x; int y;} coord;
 
 typedef struct {
     coord w;
-    enum {M=0, N=1, O=2} pclass;
+    enum {destroyed= -1, M=0, N=1, O=2} pclass;
     int inhabited;     /* if NZ, an index into a name array */
 #define UNINHABITED    -1
     enum {mined=-1, present=0, absent=1} crystals; /* has crystals */
     enum {unknown, known, shuttle_down} known;
 } planet;
 
-#define DESTROY(pl)    memset(pl, '\0', sizeof(planet))
-
 typedef enum {
     IHR = 'R',
     IHK = 'K',
@@ -81,8 +76,8 @@ typedef enum {
 } feature;
 
 typedef struct {
-    bool snap;         // snapshot taken
-    int crew,          // crew complement
+    bool snap;                 // snapshot taken
+    int crew,                  // crew complement
 #define FULLCREW       428     /* BSD Trek was 387, that's wrong */
        remkl,                  // remaining klingons
        remcom,                 // remaining commanders
@@ -93,9 +88,9 @@ typedef struct {
        nromrem,                // Romulans remaining
        nplankl,                // destroyed uninhabited planets
        nworldkl;               // destroyed inhabited planets
-    planet plnets[PLNETMAX];  // Planet information
+    planet planets[PLNETMAX];  // Planet information
     double date,               // stardate
-       remres,         // remaining resources
+       remres,                 // remaining resources
        remtime;                // remaining time
     coord baseq[BASEMAX+1];    // Base quadrant coordinates
     coord kcmdr[QUADSIZE+1];   // Commander quadrant coordinates
@@ -118,9 +113,6 @@ typedef struct {
     } chart[GALSIZE+1][GALSIZE+1];     // the starchart (subscript 0 not used)
 } snapshot;                            // Data that is snapshot
 
-#define MAXKLGAME      127
-#define MAXKLQUAD      9
-
 #define NKILLK (game.inkling - game.state.remkl)
 #define NKILLC (game.incom - game.state.remcom)
 #define NKILLSC (game.inscom - game.state.nscrem)
@@ -342,102 +334,103 @@ typedef enum {
 enum loctype {neither, quadrant, sector};
 
 /* Function prototypes */
-void prelim(void);
-void attack(bool);
-bool choose(bool);
-void setup(bool);
-void score(void);
-void atover(bool);
-void srscan(void);
-void lrscan(void);
-void phasers(void);
-void photon(void);
-void warp(bool);
-void doshield(bool);
-void dock(bool);
-void dreprt(void);
-void chart(void);
-void rechart(void);
-void impuls(void);
-void wait(void);
-void setwrp(void);
-void events(void);
-void report(void);
-void eta(void);
-void mayday(void);
-void abandn(void);
-void finish(FINTYPE);
-void selfdestruct(void);
-void kaboom(void);
-void freeze(bool);
-bool thaw(void);
-void plaque(void);
-int scan(void);
-void status(int req);
-void request(void);
+extern void prelim(void);
+extern void attack(bool);
+extern bool choose(bool);
+extern void setup(bool);
+extern void score(void);
+extern void atover(bool);
+extern void srscan(void);
+extern void lrscan(void);
+extern void phasers(void);
+extern void photon(void);
+extern void warp(bool);
+extern void doshield(bool);
+extern void dock(bool);
+extern void damagereport(void);
+extern void chart(void);
+extern void rechart(void);
+extern void impulse(void);
+extern void wait(void);
+extern void setwarp(void);
+extern void events(void);
+extern void report(void);
+extern void eta(void);
+extern void mayday(void);
+extern void abandon(void);
+extern void finish(FINTYPE);
+extern void selfdestruct(void);
+extern void kaboom(void);
+extern void freeze(bool);
+extern bool thaw(void);
+extern void plaque(void);
+extern int scan(void);
+extern void status(int req);
+extern void request(void);
 #define IHEOL (0)
 #define IHALPHA (1)
 #define IHREAL (2)
-void chew(void);
-void chew2(void);
-void skip(int);
-void prout(const char *, ...) __attribute__((format(printf, 1, 2)));
-void proutn(const char *, ...) __attribute__((format(printf, 1, 2)));
-void prouts(const char *, ...) __attribute__((format(printf, 1, 2)));
-void prstat(const char *txt, const char *fmt, ...)
+extern void chew(void);
+extern void chew2(void);
+extern void skip(int);
+extern void prout(const char *, ...) __attribute__((format(printf, 1, 2)));
+extern void proutn(const char *, ...) __attribute__((format(printf, 1, 2)));
+extern void prouts(const char *, ...) __attribute__((format(printf, 1, 2)));
+extern void prstat(const char *txt, const char *fmt, ...)
        __attribute__((format(printf, 2, 3)));
-void stars(void);
-void newqad(bool);
-bool ja(void);
-void cramen(feature);
-void crmshp(void);
-char *cramlc(enum loctype, coord w);
-double expran(double);
-double Rand(void);
-coord randplace(int);
-coord dropin(feature);
-void newcnd(void);
-void sortkl(void);
-void imove(bool);
-void ram(bool, feature, coord);
-void crmena(bool, feature, enum loctype, coord w);
-void deadkl(coord, feature, coord);
-void timwrp(void);
-void movcom(void);
-void torpedo(double, double, coord, double *, int, int);
-void huh(void);
-void pause_game(bool);
-void nova(coord);
-void snova(bool, coord *);
-void scom(bool *);
-void hittem(double *);
-bool isit(char *);
-void preport(void);
-void orbit(void);
-void sensor(void);
-void drawmaps(int);
-void beam(void);
-void mine(void);
-void usecrystals(void);
-void shuttle(void);
-void deathray(void);
-void debugme(void);
-void attakreport(bool);
-void movetho(void);
-void probe(void);
-void iostart(void);
-void setwnd(WINDOW *);
-void warble(void);
-void boom(coord);
-void tracktorpedo(coord, int, int, int, int);
-void cgetline(char *, int);
-void waitfor(void);
-void setpassword(void);
-void commandhook(char *, bool);
-void makechart(void);
-coord newkling(int);
+extern void stars(void);
+extern void newqad(bool);
+extern bool ja(void);
+extern void cramen(feature);
+extern void crmshp(void);
+extern char *cramlc(enum loctype, coord w);
+extern double expran(double);
+extern double Rand(void);
+extern coord randplace(int);
+extern coord dropin(feature);
+extern void newcnd(void);
+extern void sortklings(void);
+extern void imove(bool);
+extern void ram(bool, feature, coord);
+extern void crmena(bool, feature, enum loctype, coord w);
+extern void deadkl(coord, feature, coord);
+extern void timwrp(void);
+extern void moveklings(void);
+extern void torpedo(double, double, coord, double *, int, int);
+extern void huh(void);
+extern void pause_reset(void);
+extern void pause_game(bool);
+extern void nova(coord);
+extern void supernova(bool, coord *);
+extern void supercommander(void);
+extern void hittem(double *);
+extern bool isit(char *);
+extern void survey(void);
+extern void orbit(void);
+extern void sensor(void);
+extern void drawmaps(int);
+extern void beam(void);
+extern void mine(void);
+extern void usecrystals(void);
+extern void shuttle(void);
+extern void deathray(void);
+extern void debugme(void);
+extern void attackreport(bool);
+extern void movetholian(void);
+extern void probe(void);
+extern void iostart(void);
+extern void setwnd(WINDOW *);
+extern void warble(void);
+extern void boom(coord);
+extern void tracktorpedo(coord, int, int, int, int);
+extern void cgetline(char *, int);
+extern void waitfor(void);
+extern void setpassword(void);
+extern void commandhook(char *, bool);
+extern void makechart(void);
+extern coord newkling(int);
 #if BSD_BUG_FOR_BUG
-void visual(void);
+extern void visual(void);
 #endif
 
 extern WINDOW *curwnd;