X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=sst.h;h=9a67c1d063ac1dd44cafcb6a6d15c34ff7edc51c;hp=31fd2f4a58e1fd11bceafa943877855d621d7b42;hb=e536fe754b3a9be00dcaee8f6ec50ea2d8c7a184;hpb=634c187043cf4af8328069b8c1fe410efab2e4c7 diff --git a/sst.h b/sst.h index 31fd2f4..9a67c1d 100644 --- a/sst.h +++ b/sst.h @@ -2,6 +2,7 @@ #include #include #include +#include #ifndef INCLUDED #define EXTERN extern #else @@ -13,10 +14,12 @@ // #define DEBUG -#define NDEVICES (15) // Number of devices #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 +40,9 @@ 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 + cx[QUADSIZE+1],cy[QUADSIZE+1], // Commander quadrant coordinates + baseqx[BASEMAX], // Base quadrant X + baseqy[BASEMAX], // Base quadrant Y isx, isy, // Coordinate of Super Commander nscrem, // remaining super commanders nromkl, // Romulans killed @@ -52,8 +53,57 @@ 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 +#define SKILL_NONE 0 +#define SKILL_NOVICE 1 +#define SKILL_FAIR 2 +#define SKILL_GOOD 3 +#define SKILL_EXPERT 4 +#define SKILL_EMERITUS 5 + +/* game options */ +#define OPTION_ALL 0xffffffff +#define OPTION_TTY 0x00000001 /* old interface */ +#define OPTION_CURSES 0x00000002 /* new interface */ +#define OPTION_IOMODES 0x00000003 /* cover both interfaces */ +#define OPTION_PLANETS 0x00000004 /* planets and mining */ +#define OPTION_THOLIAN 0x00000008 /* Tholians and their webs */ +#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, @@ -61,22 +111,22 @@ typedef struct { #define SSTMAGIC "SST2.0\n" -EXTERN short curwnd; +EXTERN WINDOW *curwnd; EXTERN struct { char magic[sizeof(SSTMAGIC)]; + unsigned long options; 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 - double damage[NDEVICES+1]; // damage encountered + 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]; // 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)]; /* members with macro definitions start here */ int inkling, inbase, @@ -105,8 +155,6 @@ EXTERN struct { justin, alldone, shldchg, - thingx, - thingy, plnetx, plnety, inorbit, @@ -133,8 +181,6 @@ EXTERN struct { batx, baty, ithere, - iqhere, - iqengry, ithx, ithy, iseenit, @@ -196,8 +242,6 @@ EXTERN struct { #define justin game.justin // just entered quadrant #define alldone game.alldone // game is now finished #define shldchg game.shldchg // shield is changing (affects efficiency) -#define thingx game.thingx // location of strange object in galaxy -#define thingy game.thingy // #define plnetx game.plnetx // location of planet in quadrant #define plnety game.plnety // #define inorbit game.inorbit // orbiting @@ -209,8 +253,6 @@ EXTERN struct { #define ishere game.ishere // Super-commander in quandrant #define neutz game.neutz // Romulan Neutral Zone #define irhere game.irhere // Romulans in quadrant -#define iqhere game.iqhere // Thing in quadrant -#define iqengry game.iqengry // Thing attacking #define icraft game.icraft // Kirk in Galileo #define ientesc game.ientesc // Attempted escape from supercommander #define iscraft game.iscraft // =1 if craft on ship, -1 if removed from game @@ -260,12 +302,15 @@ 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; EXTERN char citem[10]; +/* the Space Thingy's global state should *not* be saved! */ +EXTERN int thingx, thingy, iqhere, iqengry; + typedef enum {FWON, FDEPLETE, FLIFESUP, FNRG, FBATTLE, FNEG3, FNOVA, FSNOVAED, FABANDN, FDILITHIUM, FMATERIALIZE, FPHASER, FLOST, FMINING, FDPLANET, @@ -273,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 @@ -303,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", @@ -318,8 +345,8 @@ char *device[NDEVICES+1] = { "Computer", "Transporter", "Shield Control", - "Death Ray", - "D. S. Probe"}; + "Death Ray", + "D. S. Probe"}; #endif #ifndef TRUE @@ -367,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); @@ -398,8 +426,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); @@ -418,11 +445,10 @@ 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); +void sensor(int); void drawmaps(short); void beam(void); void mine(void); @@ -433,9 +459,8 @@ void debugme(void); void attakreport(int); void movetho(void); void probe(void); -void iostart(int); -void ioend(void); -void setwnd(short); +void iostart(void); +void setwnd(WINDOW *); void warble(void); 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); @@ -444,7 +469,7 @@ void waitfor(void); void setpassword(void); void commandhook(char *, int); void makechart(void); -void enqueue(char *s); +void enqueue(char *); /* mode arguments for srscan() */ #define SCAN_FULL 1 @@ -452,10 +477,22 @@ void enqueue(char *s); #define SCAN_STATUS 3 #define SCAN_NO_LEFTSIDE 4 -/* these need to track io.c:wnd */ -#define FULLSCREEN_WINDOW 0 -#define LEFTUPPER_WINDOW 1 -#define SRSCAN_WINDOW 2 -#define LRSCAN_WINDOW 3 -#define LOWER_WINDOW 4 -#define BOTTOM_WINDOW 5 +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 */