X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=src%2Fsst.h;h=a9bf781e546a588bcd558fdde1a99ff2441fb253;hp=4063c4e86765474e2a0c2109028ce0be92891c7a;hb=4207ce95e80fe7e2d5114079fa4255e0ad506618;hpb=f9acc563cce04f40f3d622f34ce5fd6263bfc619 diff --git a/src/sst.h b/src/sst.h index 4063c4e..a9bf781 100644 --- a/src/sst.h +++ b/src/sst.h @@ -45,14 +45,15 @@ typedef struct {int x; int y;} coord; #define square(i) ((i)*(i)) #define same(c1, c2) ((c1.x == c2.x) && (c1.y == c2.y)) #define distance(c1, c2) sqrt(square(c1.x - c2.x) + square(c1.y - c2.y)) +#define invalidate(w) w.x = w.y = 0 +#define is_valid(w) (w.x == 0 || w.y == 0) typedef struct { coord w; enum {M=0, N=1, O=2} pclass; int inhabited; /* if NZ, an index into a name array */ #define UNINHABITED -1 - int crystals; /* has crystals */ -#define MINED -1 /* used to have crystals, but they were mined out */ + enum {mined=-1, present=0, absent=1} crystals; /* has crystals */ enum {unknown, known, shuttle_down} known; } planet; @@ -80,8 +81,8 @@ typedef enum { } feature; typedef struct { - int snap, // snapshot taken - 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 @@ -112,7 +113,7 @@ typedef struct { } galaxy[GALSIZE+1][GALSIZE+1]; // The Galaxy (subscript 0 not used) struct page { int stars; - int starbase; + bool starbase; int klingons; } chart[GALSIZE+1][GALSIZE+1]; // the starchart (subscript 0 not used) } snapshot; // Data that is snapshot @@ -128,13 +129,6 @@ typedef struct { #define INKLINGTOT (game.inkling + game.incom + game.inscom) #define KLINGKILLED (INKLINGTOT - KLINGREM) -#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 */ @@ -210,6 +204,8 @@ extern double scheduled(int); #define SSTMAGIC "SST2.0\n" +#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0])) + struct game { char magic[sizeof(SSTMAGIC)]; unsigned long options; @@ -234,12 +230,15 @@ struct game { alive, // we are alive (not killed) justin, // just entered quadrant shldup, // shields are up + shldchg, // shield is changing (affects efficiency) comhere, // commander here ishere, // super-commander in quadrant + iscate, // super commander is here ientesc, // attempted escape from supercommander ithere, // Tholian is here resting, // rest time icraft, // Kirk in Galileo + landed, // party on planet (true), on ship (false) alldone, // game is now finished neutz, // Romulan Neutral Zone isarmed, // probe is armed @@ -255,32 +254,39 @@ struct game { docked, dead, } condition; // condition (red/yellow/green/docked) + enum { + onship, + offship, + removed, + } iscraft; // 'onship' if craft on ship, 'removed' if out of game + enum { + SKILL_NONE, + SKILL_NOVICE, + SKILL_FAIR, + SKILL_GOOD, + SKILL_EXPERT, + SKILL_EMERITUS, + } skill; // skill level int inkling, // initial number of klingons inbase, // initial number of bases incom, // initial number of commanders inscom, // initial number of commanders inrom, // initial number of commanders instar, // initial stars - intorps, // initial/Max torpedoes + intorps, // initial/max torpedoes torps, // number of torpedoes ship, // ship type -- 'E' is Enterprise abandoned, // count of crew abandoned in space length, // length of game - skill, // skill level klhere, // klingons here casual, // causalties nhelp, // calls for help nkinks, // count of energy-barrier crossings - shldchg, // shield is changing (affects efficiency) - landed, // party on planet (1), on ship (-1) iplnet, // planet # in quadrant inplan, // initial planets nenhere, // number of enemies in quadrant irhere, // Romulans in quadrant - iscraft, // =1 if craft on ship, -1 if removed from game isatb, // =1 if super commander is attacking base - iscate, // super commander is here - iattak, // attack recursion elimination (was cracks[4]) tourn, // tournament number proben, // number of moves for probe nprobes; // number of probes available @@ -312,6 +318,7 @@ extern struct game game; /* the following global state doesn't need to be saved */ extern char *device[NDEVICES]; +extern char *systnames[NINHAB + 1]; extern int iscore, iskill; // Common PLAQ extern double perdate; extern double aaitem; @@ -393,7 +400,7 @@ coord randplace(int); coord dropin(feature); void newcnd(void); void sortkl(void); -void imove(void); +void imove(bool); void ram(bool, feature, coord); void crmena(bool, feature, enum loctype, coord w); void deadkl(coord, feature, coord); @@ -432,8 +439,10 @@ void setpassword(void); void commandhook(char *, bool); void makechart(void); void enqueue(char *); -char *systemname(int); coord newkling(int); +#if BSD_BUG_FOR_BUG +void visual(void); +#endif extern WINDOW *curwnd; extern WINDOW *fullscreen_window;