bool idebug; // debug mode
FILE *logfp, *replayfp;
-char *device[NDEVICES] = {
- "S. R. Sensors",
- "L. R. Sensors",
- "Phasers",
- "Photon Tubes",
- "Life Support",
- "Warp Engines",
- "Impulse Engines",
- "Shields",
- "Subspace Radio",
- "Shuttle Craft",
- "Computer",
- "Navigation System",
- "Transporter",
- "Shield Control",
- "Death Ray",
- "D. S. Probe"};
+char *systnames[NINHAB];
+char *device[NDEVICES];
static struct
{
{"HELP", HELP, 0},
#define SEED 37
{"SEED", SEED, 0},
+#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)
/* generate a list of legal commands */
{
int i, k = 0;
- proutn("LEGAL COMMANDS ARE:");
+ proutn(_("LEGAL COMMANDS ARE:"));
for (i = 0; i < NUMCOMMANDS; i++) {
if (!ACCEPT(i))
continue;
for(;;) {
if (key == IHEOL) {
setwnd(prompt_window);
- proutn("Help on what command? ");
+ proutn(_("Help on what command? "));
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);
- prout("Valid commands:");
listCommands();
key = IHEOL;
chew();
if (fp == NULL)
fp = fopen(DOC_NAME, "r");
if (fp == NULL) {
- prout("Spock- \"Captain, that information is missing from the");
- prout(" computer. You need to find "DOC_NAME" and put it in the");
- prout(" current directory or to "SSTDOC".\"");
+ prout(_("Spock- \"Captain, that information is missing from the"));
+ proutn(_(" computer. You need to find "));
+ proutn(DOC_NAME);
+ prout(_(" and put it in the"));
+ proutn(_(" current directory or to "));
+ proutn(SSTDOC);
+ prout(".\"");
/*
* This used to continue: "You need to find SST.DOC and put
* it in the current directory."
}
for (;;) {
if (fgets(linebuf, sizeof(linebuf), fp) == NULL) {
- prout("Spock- \"Captain, there is no information on that command.\"");
+ prout(_("Spock- \"Captain, there is no information on that command.\""));
fclose(fp);
return;
}
}
skip(1);
- prout("Spock- \"Captain, I've found the following information:\"");
+ prout(_("Spock- \"Captain, I've found the following information:\""));
skip(1);
- while (fgets(linebuf, sizeof(linebuf),fp)) {
+ while (fgets(linebuf, sizeof(linebuf), fp)) {
+ char *eol;
if (strstr(linebuf, "******"))
break;
- proutn(linebuf);
+ if ((eol = strpbrk(linebuf, "\r\n")))
+ *eol = 0;
+ prout(linebuf);
}
fclose(fp);
}
-void enqueue(char *s)
-/* enqueue input for the command parser */
-{
- 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);
case SHIELDS: // shields
doshield(false);
if (game.ididit) {
- hitme=true;
- game.shldchg = 0;
+ hitme = true;
+ game.shldchg = false;
}
break;
case DOCK: // dock
- dock(1);
- if (game.ididit) attack(0);
+ dock(true);
+ 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();
freeze(false);
clrscr();
if (game.skill > SKILL_GOOD)
- prout("WARNING--Saved games produce no plaques!");
+ prout(_("WARNING--Saved games produce no plaques!"));
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;
+#ifdef BSD_BUG_FOR_BUG
+ case VISUAL:
+ visual(); // perform visual scan
+ break;
+#endif
}
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);
continue;
}
if (hitme && !game.justin) {
- attack(2);
- if (game.alldone) break;
+ attack(true);
+ 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);
if (game.tourn && game.alldone) {
- proutn("Do you want your score recorded?");
+ proutn(_("Do you want your score recorded?"));
if (ja() == true) {
chew2();
freeze(false);
}
}
- proutn("Do you want to play again? ");
- if (!ja()) break;
+ proutn(_("Do you want to play again? "));
+ if (!ja())
+ break;
}
skip(1);
- prout("May the Great Bird of the Galaxy roost upon your home planet.");
+ prout(_("May the Great Bird of the Galaxy roost upon your home planet."));
return 0;
}
char *s;
switch (i) {
- case IHR: s = "Romulan"; break;
- case IHK: s = "Klingon"; break;
- case IHC: s = "Commander"; break;
- case IHS: s = "Super-commander"; break;
- case IHSTAR: s = "Star"; break;
- case IHP: s = "Planet"; break;
- case IHB: s = "Starbase"; break;
- case IHBLANK: s = "Black hole"; break;
- case IHT: s = "Tholian"; break;
- case IHWEB: s = "Tholian web"; break;
- case IHQUEST: s = "Stranger"; break;
+ case IHR: s = _("Romulan"); break;
+ case IHK: s = _("Klingon"); break;
+ case IHC: s = _("Commander"); break;
+ case IHS: s = _("Super-commander"); break;
+ case IHSTAR: s = _("Star"); break;
+ case IHP: s = _("Planet"); break;
+ case IHB: s = _("Starbase"); break;
+ case IHBLANK: s = _("Black hole"); break;
+ case IHT: s = _("Tholian"); break;
+ case IHWEB: s = _("Tholian web"); break;
+ case IHQUEST: s = _("Stranger"); break;
+ case IHW: s = _("Inhabited World"); break;
default: s = "Unknown??"; break;
}
proutn(s);
{
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(_(" at "));
proutn(cramlc(key, w));
}
{
char *s;
switch (game.ship) {
- case IHE: s = "Enterprise"; break;
- case IHF: s = "Faerie Queene"; break;
+ case IHE: s = _("Enterprise"); break;
+ case IHF: s = _("Faerie Queene"); break;
default: s = "Ship???"; break;
}
proutn(s);
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;
- proutn("Please answer with \"Y\" or \"N\": ");
+ if (*citem == 'y')
+ return true;
+ if (*citem == 'n')
+ return false;
+ proutn(_("Please answer with \"y\" or \"n\": "));
}
}
{
chew();
skip(1);
- prout("Beg your pardon, Captain?");
+ prout(_("Beg your pardon, Captain?"));
}
bool isit(char *s)
{
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) {