X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=sst.h;h=203a1690473f8b777861e89c5da8a7ca7ea3297c;hb=bdcf85461c171a9263fb0ba0e0ec07661bd082f5;hp=5b6fb04de36b60801697bf9a2e27031ba8d72708;hpb=5db6160de8bad4de189d3b54dd54011260c7a34f;p=super-star-trek.git diff --git a/sst.h b/sst.h index 5b6fb04..203a169 100644 --- a/sst.h +++ b/sst.h @@ -21,6 +21,15 @@ #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+1; i++) +#define for_sectors(i) for (i = 1; i < QUADSIZE+1; i++) + typedef struct { int x; /* Quadrant location of planet */ int y; @@ -40,11 +49,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 @@ -55,28 +62,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 @@ -135,7 +136,6 @@ EXTERN struct { 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, @@ -221,7 +221,8 @@ EXTERN struct { probex, probey, probeinx, - probeiny; + probeiny, + height; } game; #define inkling game.inkling // Initial number of klingons @@ -403,6 +404,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);