X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=sst.c;h=89e069d51696293328651b8a716f6754a14e7120;hp=3352316c823ef74ba3a55aeae740ace684c78af2;hb=aba642f488174f640e8099f07d46f0a64dbb5052;hpb=c079542899cdebd703a1286103a3fce307617e90 diff --git a/sst.c b/sst.c index 3352316..89e069d 100644 --- a/sst.c +++ b/sst.c @@ -2,7 +2,6 @@ #include #include #include -#include "conio.h" #include "sstlinux.h" #include "sst.h" @@ -90,10 +89,13 @@ Eric Raymond's changes: 1. "sos" and "call" becomes "mayday", "freeze" and "save" are both good. + 2. Status report now indicates when dilithium crystals are on board. + */ /* the input queue */ static char line[128], *linep = line; +static usecurses = TRUE; static struct { @@ -101,49 +103,52 @@ static struct int value; } commands[] = { -#define SRSCAN 1 +#define SRSCAN 0 {"SRSCAN", SRSCAN}, - {"STATUS", SRSCAN}, -#define LRSCAN 2 +#define STATUS 1 + {"STATUS", STATUS}, +#define REQUEST 2 + {"REQUEST", REQUEST}, +#define LRSCAN 3 {"LRSCAN", LRSCAN}, -#define PHASERS 3 +#define PHASERS 4 {"PHASERS", PHASERS}, -#define TORPEDO 4 +#define TORPEDO 5 {"TORPEDO", TORPEDO}, {"PHOTONS", TORPEDO}, -#define MOVE 5 +#define MOVE 6 {"MOVE", MOVE}, -#define SHIELDS 6 +#define SHIELDS 7 {"SHIELDS", SHIELDS}, -#define DOCK 7 +#define DOCK 8 {"DOCK", DOCK}, -#define DAMAGES 8 +#define DAMAGES 9 {"DAMAGES", DAMAGES}, -#define CHART 9 +#define CHART 10 {"CHART", CHART}, -#define IMPULSE 10 +#define IMPULSE 11 {"IMPULSE", IMPULSE}, -#define REST 11 +#define REST 12 {"REST", REST}, -#define WARP 12 +#define WARP 13 {"WARP", WARP}, -#define SCORE 13 +#define SCORE 14 {"SCORE", SCORE}, -#define SENSORS 14 +#define SENSORS 15 {"SENSORS", SENSORS}, -#define ORBIT 15 +#define ORBIT 16 {"ORBIT", ORBIT}, -#define TRANSPORT 16 +#define TRANSPORT 17 {"TRANSPORT", TRANSPORT}, -#define MINE 17 +#define MINE 18 {"MINE", MINE}, -#define CRYSTALS 18 +#define CRYSTALS 19 {"CRYSTALS", CRYSTALS}, -#define SHUTTLE 19 +#define SHUTTLE 20 {"SHUTTLE", SHUTTLE}, -#define PLANETS 20 +#define PLANETS 21 {"PLANETS", PLANETS}, -#define REPORT 21 +#define REPORT 22 {"REPORT", REPORT}, #define COMPUTER 23 {"COMPUTER", COMPUTER}, @@ -158,9 +163,9 @@ commands[] = { {"FREEZE", SAVE}, #define ABANDON 28 {"ABANDON", ABANDON}, -#define DESTRUCT 29 +#define DESTRUCT 29 {"DESTRUCT", DESTRUCT}, -#define DEATHRAY 30 +#define DEATHRAY 30 {"DEATHRAY", DEATHRAY}, #define DEBUGCMD 31 {"DEBUG", DEBUGCMD}, @@ -172,19 +177,20 @@ commands[] = { {"QUIT", QUIT}, #define HELP 34 {"HELP", HELP}, -#define REQUEST 35 - {"REQUEST", REQUEST}, }; #define NUMCOMMANDS sizeof(commands)/sizeof(commands[0]) -static void listCommands(int x) { - int i; - prout("LEGAL COMMANDS ARE:"); - for (i = 0; i < NUMCOMMANDS; i++) { - proutn("%-12s ", commands[i].name); - if (i % 5 == 4) +#define MIN_CURSES_COMMAND PHASERS /* might change someday */ + +static void listCommands(int usecurses) { + int i, k = 0; + proutn("LEGAL COMMANDS ARE:"); + for (i = usecurses ? MIN_CURSES_COMMAND : 0; i < NUMCOMMANDS; i++) { + if (k % 5 == 0) skip(1); + proutn("%-12s ", commands[i].name); + k++; } skip(1); } @@ -199,11 +205,11 @@ static void helpme(void) { key = scan(); while (TRUE) { if (key == IHEOL) { - setwnd(BOTTOM_WINDOW); + setwnd(prompt_window); proutn("Help on what command? "); key = scan(); } - setwnd(LOWER_WINDOW); + setwnd(message_window); if (key == IHEOL) return; for (i = 0; i < NUMCOMMANDS; i++) { if (strcasecmp(commands[i].name, citem)==0) { @@ -214,7 +220,7 @@ static void helpme(void) { if (i != NUMCOMMANDS) break; skip(1); prout("Valid commands:"); - listCommands(FALSE); + listCommands(usecurses); key = IHEOL; chew(); skip(1); @@ -259,7 +265,7 @@ static void helpme(void) { while (fgets(linebuf, sizeof(linebuf),fp)) { if (strstr(linebuf, "******")) break; - proutc(linebuf); + proutn(linebuf); } fclose(fp); } @@ -271,7 +277,7 @@ void enqueue(char *s) { static void makemoves(void) { int i, hitme; clrscr(); - setwnd(LOWER_WINDOW); + setwnd(message_window); while (TRUE) { /* command loop */ drawmaps(1); while (TRUE) { /* get a command */ @@ -280,7 +286,7 @@ static void makemoves(void) { Time = 0.0; i = -1; chew(); - setwnd(BOTTOM_WINDOW); + setwnd(prompt_window); clrscr(); proutn("COMMAND> "); if (scan() == IHEOL) { @@ -289,7 +295,7 @@ static void makemoves(void) { } ididit=0; clrscr(); - setwnd(LOWER_WINDOW); + setwnd(message_window); clrscr(); for (i=0; i < ABANDON; i++) if (isit(commands[i].name)) { @@ -303,14 +309,19 @@ static void makemoves(void) { break; } if (i < NUMCOMMANDS) break; - - listCommands(TRUE); + listCommands(usecurses); } commandhook(commands[i].name, TRUE); switch (i) { /* command switch */ case SRSCAN: // srscan srscan(SCAN_FULL); break; + case STATUS: // status + srscan(SCAN_STATUS); + break; + case REQUEST: // status request + srscan(SCAN_REQUEST); + break; case LRSCAN: // lrscan lrscan(); break; @@ -383,14 +394,11 @@ static void makemoves(void) { case REPORT: // Game Report report(); break; - case REQUEST: // status request - srscan(SCAN_REQUEST); - break; case COMPUTER: // use COMPUTER! eta(); break; case COMMANDS: - listCommands(TRUE); + listCommands(usecurses); break; case EMEXIT: // Emergency exit clrscr(); // Hide screen @@ -467,7 +475,7 @@ static void makemoves(void) { int main(int argc, char **argv) { - int i, option, usecurses = TRUE; + int i, option; while ((option = getopt(argc, argv, "t")) != -1) { switch (option) { @@ -489,6 +497,8 @@ int main(int argc, char **argv) { strcat(line, " "); } while (TRUE) { /* Play a game */ + setwnd(fullscreen_window); + clrscr(); prelim(); setup(line[0] == '\0'); if (alldone) { @@ -509,11 +519,8 @@ int main(int argc, char **argv) { } proutn("Do you want to play again? "); if (!ja()) break; - setwnd(FULLSCREEN_WINDOW); - clrscr(); } skip(1); - ioend(); prout("May the Great Bird of the Galaxy roost upon your home planet."); return 0; } @@ -616,9 +623,9 @@ int scan(void) { } cgetline(line, sizeof(line)); fflush(stdin); - if (curwnd==BOTTOM_WINDOW){ + if (curwnd==prompt_window){ clrscr(); - setwnd(LOWER_WINDOW); + setwnd(message_window); clrscr(); } linep = line;