bool idebug; // debug mode
FILE *logfp, *replayfp;
-char *systnames[NINHAB + 1];
+char *systnames[NINHAB];
char *device[NDEVICES];
static struct
{"HELP", HELP, 0},
#define SEED 37
{"SEED", SEED, 0},
-#if BSD_BUG_FOR_BUG
+#ifdef BSD_BUG_FOR_BUG
#define VISUAL 38
{"VISUAL", VISUAL, 0},
#endif
};
-#define NUMCOMMANDS sizeof(commands)/sizeof(commands[0])
+#define NUMCOMMANDS ARRAY_SIZE(commands)
#define ACCEPT(i) (!commands[i].option || (commands[i].option & game.options))
static void listCommands(void)
key = scan();
}
setwnd(message_window);
- if (key == IHEOL) return;
+ if (key == IHEOL)
+ return;
for (i = 0; i < NUMCOMMANDS; i++) {
if (ACCEPT(i) && strcasecmp(commands[i].name, citem)==0) {
i = commands[i].value;
break;
}
}
- if (i != NUMCOMMANDS) break;
+ if (i != NUMCOMMANDS)
+ break;
skip(1);
listCommands();
key = IHEOL;
fclose(fp);
}
-void enqueue(char *s)
-/* enqueue input for the command parser */
-{
- chew();
- strcpy(line, s);
-}
-
static void makemoves(void)
/* command-interpretation loop */
{
clrscr();
proutn("COMMAND> ");
if (scan() == IHEOL) {
- makechart();
+ if (game.options & OPTION_CURSES)
+ makechart();
continue;
}
game.ididit = false;
commandhook(commands[i].name, true);
switch (v) { /* command switch */
case SRSCAN: // srscan
- srscan(SCAN_FULL);
+ srscan();
break;
case STATUS: // status
- srscan(SCAN_STATUS);
+ status(0);
break;
case REQUEST: // status request
- srscan(SCAN_REQUEST);
+ request();
break;
case LRSCAN: // lrscan
lrscan();
break;
case PHASERS: // phasers
phasers();
- if (game.ididit) hitme = true;
+ if (game.ididit)
+ hitme = true;
break;
case TORPEDO: // photons
photon();
- if (game.ididit) hitme = true;
+ if (game.ididit)
+ hitme = true;
break;
case MOVE: // move
warp(false);
break;
case DOCK: // dock
dock(true);
- if (game.ididit) attack(false);
+ if (game.ididit)
+ attack(false);
break;
case DAMAGES: // damages
- dreprt();
+ damagereport();
break;
case CHART: // chart
- chart(false);
+ makechart();
break;
case IMPULSE: // impulse
- impuls();
+ impulse();
break;
case REST: // rest
wait();
- if (game.ididit) hitme = true;
+ if (game.ididit)
+ hitme = true;
break;
case WARP: // warp
- setwrp();
+ setwarp();
break;
case SCORE: // score
score();
break;
case ORBIT: // orbit
orbit();
- if (game.ididit) hitme = true;
+ if (game.ididit)
+ hitme = true;
break;
case TRANSPORT: // transport "beam"
beam();
break;
case MINE: // mine
mine();
- if (game.ididit) hitme = true;
+ if (game.ididit)
+ hitme = true;
break;
case CRYSTALS: // crystals
usecrystals();
- if (game.ididit) hitme = true;
+ if (game.ididit)
+ hitme = true;
break;
case SHUTTLE: // shuttle
shuttle();
- if (game.ididit) hitme = true;
+ if (game.ididit)
+ hitme = true;
break;
case PLANETS: // Planet list
- preport();
+ survey();
break;
case REPORT: // Game Report
report();
break;
case PROBE:
probe(); // Launch probe
- if (game.ididit) hitme = true;
+ if (game.ididit)
+ hitme = true;
break;
case ABANDON: // Abandon Ship
- abandn();
+ abandon();
break;
case DESTRUCT: // Self Destruct
selfdestruct();
break;
case DEATHRAY: // Try a desparation measure
deathray();
- if (game.ididit) hitme = true;
+ if (game.ididit)
+ hitme = true;
break;
case DEBUGCMD: // What do we want for debug???
debugme();
break;
case MAYDAY: // Call for help
mayday();
- if (game.ididit) hitme = true;
+ if (game.ididit)
+ hitme = true;
break;
case QUIT:
game.alldone = true; // quit the game
if (key == IHREAL)
seed = (int)aaitem;
break;
-#if BSD_BUG_FOR_BUG
+#ifdef BSD_BUG_FOR_BUG
case VISUAL:
visual(); // perform visual scan
break;
}
commandhook(commands[i].name, false);
for (;;) {
- if (game.alldone) break; // Game has ended
+ if (game.alldone)
+ break; // Game has ended
if (game.optime != 0.0) {
events();
- if (game.alldone) break; // Events did us in
+ if (game.alldone)
+ break; // Events did us in
}
if (game.state.galaxy[game.quadrant.x][game.quadrant.y].supernova) { // Galaxy went Nova!
atover(false);
}
if (hitme && !game.justin) {
attack(true);
- if (game.alldone) break;
+ if (game.alldone)
+ break;
if (game.state.galaxy[game.quadrant.x][game.quadrant.y].supernova) { // went NOVA!
atover(false);
hitme = true;
}
break;
}
- if (game.alldone) break;
+ if (game.alldone)
+ break;
}
- if (idebug) prout("=== Ending");
+ if (idebug)
+ prout("=== Ending");
}
replayfp = fopen(optarg, "r");
if (replayfp == NULL) {
fprintf(stderr, "sst: can't open replay file %s\n", optarg);
- exit(1);
+ exit(1);
}
if (fscanf(replayfp, "seed %d\n", &seed) != 1) {
fprintf(stderr, "sst: replay file %s is ill-formed\n", optarg);
- exit(1);
+ exit(1);
}
/* FALL THROUGH */
case 't':
}
}
/* where to save the input in case of bugs */
- logfp = fopen("sst-input.log", "w");
- setlinebuf(logfp);
- fprintf(logfp, "seed %d\n", seed);
+ logfp = fopen("/usr/tmp/sst-input.log", "w");
+ if (logfp) {
+ setlinebuf(logfp);
+ fprintf(logfp, "seed %d\n", seed);
+ }
srand(seed);
- srand(seed);
iostart();
line[0] = '\0';
score();
game.alldone = false;
}
- else makemoves();
+ else
+ makemoves();
skip(1);
stars();
skip(1);
}
}
proutn(_("Do you want to play again? "));
- if (!ja()) break;
+ if (!ja())
+ break;
}
skip(1);
prout(_("May the Great Bird of the Galaxy roost upon your home planet."));
{
static char buf[32];
buf[0] = '\0';
- if (key == quadrant) strcpy(buf, _("Quadrant "));
- else if (key == sector) strcpy(buf, _("Sector "));
+ if (key == quadrant)
+ strcpy(buf, _("Quadrant "));
+ else if (key == sector)
+ strcpy(buf, _("Sector "));
sprintf(buf+strlen(buf), "%d - %d", w.x, w.y);
return buf;
}
void crmena(bool stars, feature enemy, enum loctype key, coord w)
/* print an enemy and his location */
{
- if (stars) proutn("***");
+ if (stars)
+ proutn("***");
cramen(enemy);
proutn(_(" at "));
proutn(cramlc(key, w));
chew();
return IHEOL;
}
- if (isdigit(*linep) || *linep=='+' || *linep=='-' || *linep=='.') {
- // treat as a number
- i = 0;
- if (sscanf(linep, "%lf%n", &aaitem, &i) < 1) {
- linep = line; // Invalid numbers are ignored
- *linep = 0;
- return IHEOL;
- }
- else {
- // skip to end
- linep += i;
- return IHREAL;
- }
+ i = 0;
+ // try a number
+ if (sscanf(linep, "%lf%n", &aaitem, &i) > 0) {
+ // skip to end
+ linep += i;
+ return IHREAL;
}
// Treat as alpha
cp = citem;
while (*linep && *linep!=' ') {
- if ((cp - citem) < 9) *cp++ = tolower(*linep);
+ if ((cp - citem) < 9)
+ *cp++ = tolower(*linep);
linep++;
}
*cp = 0;
for(;;) {
scan();
chew();
- if (*citem == 'y') return true;
- if (*citem == 'n') return false;
+ if (*citem == 'y')
+ return true;
+ if (*citem == 'n')
+ return false;
proutn(_("Please answer with \"y\" or \"n\": "));
}
}
{
proutn("Reset levels? ");
if (ja() == true) {
- if (game.energy < game.inenrg) game.energy = game.inenrg;
+ if (game.energy < game.inenrg)
+ game.energy = game.inenrg;
game.shield = game.inshld;
game.torps = game.intorps;
game.lsupres = game.inlsr;
proutn("Toggle debug flag? ");
if (ja() == true) {
idebug = !idebug;
- if (idebug) prout("Debug output ON");
- else prout("Debug output OFF");
+ if (idebug)
+ prout("Debug output ON");
+ else
+ prout("Debug output OFF");
}
proutn("Cause selective damage? ");
if (ja() == true) {