Clean up nasty FORTRAN-style if statements.
[super-star-trek.git] / src / sst.c
index ccf7470b64ea04fc4f39152e0fa75ff6e272f5a5..a0d732d31fe5674c79b6e52063016ae028822b1e 100644 (file)
--- a/src/sst.c
+++ b/src/sst.c
@@ -282,7 +282,7 @@ commands[] = {
 #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) 
@@ -318,14 +318,16 @@ static void helpme(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;
@@ -387,13 +389,6 @@ static void helpme(void)
     fclose(fp);
 }
 
-void enqueue(char *s)
-/* enqueue input for the command parser */
-{
-    chew();
-    strcpy(line, s);
-}
-
 static void makemoves(void)
 /* command-interpretation loop */
 {
@@ -413,7 +408,8 @@ static void makemoves(void)
            clrscr();
            proutn("COMMAND> ");
            if (scan() == IHEOL) {
-               makechart();
+               if (game.options & OPTION_CURSES)
+                   makechart();
                continue;
            }
            game.ididit = false;
@@ -439,24 +435,26 @@ static void makemoves(void)
        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);
@@ -470,20 +468,22 @@ static void makemoves(void)
            break;
        case DOCK:                      // dock
            dock(true);
-           if (game.ididit) attack(false);
+           if (game.ididit)
+               attack(false);          
            break;
        case DAMAGES:                   // damages
            dreprt();
            break;
        case CHART:                     // chart
-           chart(false);
+           makechart();
            break;
        case IMPULSE:                   // impulse
            impuls();
            break;
        case REST:                      // rest
            wait();
-           if (game.ididit) hitme = true;
+           if (game.ididit)
+               hitme = true;
            break;
        case WARP:                      // warp
            setwrp();
@@ -496,22 +496,26 @@ static void makemoves(void)
            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();
@@ -532,7 +536,8 @@ static void makemoves(void)
            break;
        case PROBE:
            probe();                    // Launch probe
-           if (game.ididit) hitme = true;
+           if (game.ididit)
+               hitme = true;
            break;
        case ABANDON:                   // Abandon Ship
            abandn();
@@ -548,14 +553,16 @@ static void makemoves(void)
            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
@@ -587,7 +594,8 @@ static void makemoves(void)
            }
            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;
@@ -596,9 +604,11 @@ static void makemoves(void)
            }
            break;
        }
-       if (game.alldone) break;
+       if (game.alldone)
+           break;
     }
-    if (idebug) prout("=== Ending");
+    if (idebug)
+       prout("=== Ending");
 }
 
 
@@ -619,11 +629,11 @@ int main(int argc, char **argv)
            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':
@@ -640,11 +650,12 @@ int main(int argc, char **argv)
     }
     /* where to save the input in case of bugs */
     logfp = fopen("/usr/tmp/sst-input.log", "w");
-    setlinebuf(logfp);
-    fprintf(logfp, "seed %d\n", seed);
+    if (logfp) {
+       setlinebuf(logfp);
+       fprintf(logfp, "seed %d\n", seed);
+    }
     srand(seed);
 
-    srand(seed);
     iostart();
 
     line[0] = '\0';
@@ -661,7 +672,8 @@ int main(int argc, char **argv)
            score();
            game.alldone = false;
        }
-       else makemoves();
+       else
+           makemoves();
        skip(1);
        stars();
        skip(1);
@@ -674,7 +686,8 @@ int main(int argc, char **argv)
            }
        }
        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."));
@@ -711,8 +724,10 @@ char *cramlc(enum loctype key, coord w)
 {
     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;
 }
@@ -720,7 +735,8 @@ char *cramlc(enum loctype key, coord w)
 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));
@@ -825,7 +841,8 @@ int scan(void)
     // 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;
@@ -839,8 +856,10 @@ bool ja(void)
     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\": "));
     }
 }
@@ -864,7 +883,8 @@ void debugme(void)
 {
     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;
@@ -879,8 +899,10 @@ void debugme(void)
     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) {