X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=sst.c;h=0f8aed65523ed7d25e1ce48ce5af7c18f8578eed;hb=458c7ff54123a67012af3d60d1c83e7a43b8eb74;hp=2e1038b0469d7b2a7a9a7f649d22e157daff8ab1;hpb=4be633b9c4830f6cf8c7213c91a31d3ea12f313c;p=super-star-trek.git diff --git a/sst.c b/sst.c index 2e1038b..0f8aed6 100644 --- a/sst.c +++ b/sst.c @@ -10,8 +10,6 @@ #define SSTDOC "sst.doc" #endif -static char line[128], *linep = line; - /* Here are Tom Almy's changes: @@ -49,63 +47,65 @@ Here are Tom Almy's changes: 6. Perhaps cloaking to be added later? BSD version -Here are Stas Sergeev's changes (controlled by the proprocessor symbol -SERGEEV, not yet completely merged): +Here are Stas Sergeev's changes: 1. The Space Thingy can be shoved, if you it ram, and can fire back if fired upon. - 1 The Tholian can be hit with phasers + 2. The Tholian can be hit with phasers - 2. When you are docked, base covers you with an almost invincible shields + 3. When you are docked, base covers you with an almost invincible shields (a commander can still ram you, or a Romulan can destroy the base, or a SCom can even succeed with direct attack IIRC, but this rarely happens). - 3. SCom can't escape from you if no more enemies remain (without this, - chasing SCom can take an eternity). + 4. SCom can't escape from you if no more enemies remain (without this, + chasing SCom can take an eternity). - 4. Probe target you enter is now the destination quadrant. Before I don't - remember what it was, but it was something I had difficulty using) + 5. Probe target you enter is now the destination quadrant. Before I don't + remember what it was, but it was something I had difficulty using) - 5. Secret password is now autogenerated. + 6. Secret password is now autogenerated. - 6. "Plaque" is adjusted for A4 paper:) + 7. "Plaque" is adjusted for A4 paper :-) - 7. Phasers now tells you how much energy needed, but only if the computer + 8. Phasers now tells you how much energy needed, but only if the computer is alive. - 8. Planets are auto-scanned when you enter the quadrant. + 9. Planets are auto-scanned when you enter the quadrant. - 9. Mining or using crystals in presense of enemy now yields an attack. + 10. Mining or using crystals in presense of enemy now yields an attack. There are other minor adjustments to what yields an attack and what does not. - 10. Ramming a black hole is no longer instant death. There is a - chance you might get timewarped instead. + 11. Ramming a black hole is no longer instant death. There is a + chance you might get timewarped instead. - 11. "freeze" command reverts to "save", most people will understand this + 12. "freeze" command reverts to "save", most people will understand this better anyway. + 13. Screen-oriented interface, with sensor scans always up. + Eric Raymond's changes: - 1. "sos" and "call" becomes "mayday", "freeze" and "save" are both good. + 1. "sos" and "call" becomes "mayday", "freeze" and "save" are both good. */ +/* the input queue */ +static char line[128], *linep = line; + static struct { char *name; int value; } commands[] = { -#ifndef SERGEEV #define SRSCAN 1 {"SRSCAN", SRSCAN}, {"STATUS", SRSCAN}, #define LRSCAN 2 {"LRSCAN", LRSCAN}, -#endif /* SERGEEV */ #define PHASERS 3 {"PHASERS", PHASERS}, #define TORPEDO 4 @@ -129,10 +129,8 @@ commands[] = { {"WARP", WARP}, #define SCORE 13 {"SCORE", SCORE}, -#ifndef SERGEEV #define SENSORS 14 {"SENSORS", SENSORS}, -#endif /* SERGEEV */ #define ORBIT 15 {"ORBIT", ORBIT}, #define TRANSPORT 16 @@ -264,6 +262,10 @@ static void helpme(void) { fclose(fp); } +void enqueue(char *s) { + strcpy(line, s); +} + static void makemoves(void) { int i, hitme; clrscr(); @@ -280,13 +282,7 @@ static void makemoves(void) { clrscr(); proutn("COMMAND> "); if (scan() == IHEOL) { -#ifdef SERGEEV - _setcursortype(_NOCURSOR); - setwnd(LOWER_WINDOW); - clrscr(); - chart(0); - _setcursortype(_NORMALCURSOR); -#endif /* SERGEEV */ + makechart(); continue; } ididit=0; @@ -310,14 +306,12 @@ static void makemoves(void) { } commandhook(commands[i].name, TRUE); switch (i) { /* command switch */ -#ifndef SERGEEV case SRSCAN: // srscan - srscan(1); + srscan(SRSCAN); break; case LRSCAN: // lrscan lrscan(); break; -#endif /* SERGEEV */ case PHASERS: // phasers phasers(); if (ididit) hitme = TRUE; @@ -359,11 +353,9 @@ static void makemoves(void) { case SCORE: // score score(); break; -#ifndef SERGEEV case SENSORS: // sensors sensor(); break; -#endif /* SERGEEV */ case ORBIT: // orbit orbit(); if (ididit) hitme = TRUE;