X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=sst.h;h=5b68074186a972e7fc4c0b43c7141fa4406440f0;hp=da406c1770472f2f8d1b490837211d2b189be10e;hb=8b0a1880ee115e281afe83e1cd0c90e3306dfed8;hpb=2e65db78c58369f165c7d5c4edc849300a2d7f53 diff --git a/sst.h b/sst.h index da406c1..5b68074 100644 --- a/sst.h +++ b/sst.h @@ -2,6 +2,7 @@ #include #include #include +#include #ifndef INCLUDED #define EXTERN extern #else @@ -17,6 +18,9 @@ #define PHASEFAC (2.0) #define PLNETMAX (10) #define NEVENTS (8) +#define GALSIZE (8) +#define QUADSIZE (10) +#define BASEMAX (6) typedef struct { int x; /* Quadrant location of planet */ @@ -37,11 +41,11 @@ typedef struct { basekl, // destroyed bases killk, // Klingons killed killc, // commanders killed - galaxy[9][9], // The Galaxy (subscript 0 not used) - cx[11],cy[11], // Commander quadrant coordinates - baseqx[6], // Base quadrant X - baseqy[6], // Base quadrant Y - newstuf[9][9], // Extended galaxy goodies + 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 @@ -54,6 +58,33 @@ typedef struct { remtime; // remaining time } 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 +#define SKILL_GOOD 3 +#define SKILL_EXPERT 4 +#define SKILL_EMERITUS 5 + // 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, @@ -61,22 +92,22 @@ typedef struct { #define SSTMAGIC "SST2.0\n" -EXTERN short curwnd; +EXTERN WINDOW *curwnd; EXTERN struct { char magic[sizeof(SSTMAGIC)]; snapshot state; snapshot snapsht; - char quad[11][11]; // contents of our quadrant - double kpower[21]; // enemy energy levels - double kdist[21]; // enemy distances - double kavgd[21]; // average distances + char quad[QUADSIZE+1][QUADSIZE+1]; // contents of our quadrant + 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 future[NEVENTS+1]; // future events char passwd[10]; // Self Destruct password - int kx[21]; // enemy sector locations - int ky[21]; - int starch[9][9]; // star chart + 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, @@ -398,8 +429,7 @@ void crmshp(void); char *cramlc(enum loctype, int, int); double expran(double); double Rand(void); -void iran8(int *, int *); -void iran10(int *, int *); +void iran(int, int *, int *); #define square(i) ((i)*(i)) void dropin(int, int*, int*); void newcnd(void); @@ -410,7 +440,7 @@ void crmena(int, int, int, int, int); void deadkl(int, int, int, int, int); void timwrp(void); void movcom(void); -void torpedo(double, double, int, int, double *, int); +void torpedo(double, double, int, int, double *, int, int, int); void huh(void); void pause_game(int); void nova(int, int); @@ -418,14 +448,11 @@ void snova(int, int); void scom(int *); void hittem(double *); void prouts(char *, ...); -void proutc(char *); int isit(char *); void preport(void); void orbit(void); void sensor(void); -#ifdef SERGEEV void drawmaps(short); -#endif /* SERGEEV */ void beam(void); void mine(void); void usecrystals(void); @@ -435,19 +462,40 @@ void debugme(void); void attakreport(int); void movetho(void); void probe(void); -void clearscreen(void); void iostart(int); -void ioend(void); -#ifdef SERGEEV -void setwnd(short); -#endif /* SERGEEV */ +void setwnd(WINDOW *); void warble(void); -void getline(char *, int); +void boom(int ii, int jj); +void tracktorpedo(int x, int y, int ix, int iy, int wait, int l, int i, int n, int iquad); +void cgetline(char *, int); +void waitfor(void); +void setpassword(void); void commandhook(char *, int); +void makechart(void); +void enqueue(char *); -#ifdef SERGEEV -typedef struct { - int wndleft,wndtop,wndright,wndbottom; -} wnd; -extern wnd wnds[6]; -#endif /* SERGEEV */ +/* mode arguments for srscan() */ +#define SCAN_FULL 1 +#define SCAN_REQUEST 2 +#define SCAN_STATUS 3 +#define SCAN_NO_LEFTSIDE 4 + +WINDOW *fullscreen_window; +WINDOW *srscan_window; +WINDOW *report_window; +WINDOW *lrscan_window; +WINDOW *message_window; +WINDOW *prompt_window; + +extern void clreol(void); +extern void clrscr(void); +extern void textcolor(int color); +extern void highvideo(void); + +enum COLORS { + DEFAULT, + BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, + DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE +}; + +#define DAMAGED 128 /* marker for damaged ship in starmap */