Abstract out damage checks.
[super-star-trek.git] / src / io.c
index 48f2e3876266a13dce90226a111656ba74f280c3..ecbe87aff9ddb1d373d471a0925f867d41e4dd4a 100644 (file)
--- a/src/io.c
+++ b/src/io.c
@@ -27,6 +27,8 @@ static void outro(void)
        (void)endwin();
        putchar('\n');
     }
+    if (logfp)
+       fclose(logfp);
 }
 
 void iostart(void) 
@@ -36,13 +38,13 @@ void iostart(void)
     textdomain(PACKAGE);
     gettext("");
 
+    if (atexit(outro)){
+       fprintf(stderr,"Unable to register outro(), exiting...\n");
+       exit(1);
+    }
     if (!(game.options & OPTION_CURSES)) {
        rows = atoi(getenv("LINES"));
     } else {
-       if (atexit(outro)){
-           fprintf(stderr,"Unable to register outro(), exiting...\n");
-           exit(1);
-       }
        (void)initscr();
 #ifdef KEY_MIN
        keypad(stdscr, TRUE);
@@ -201,8 +203,13 @@ void cgetline(char *line, int max)
        strcat(line, "\n");
        wrefresh(curwnd);
     } else {
-       fgets(line, max, stdin);
+       if (replayfp && !feof(replayfp))
+           fgets(line, max, replayfp);
+       else
+           fgets(line, max, stdin);
     }
+    if (logfp)
+       fputs(line, logfp);
     line[strlen(line)-1] = '\0';
 }
 
@@ -391,7 +398,7 @@ void tracktorpedo(int ix, int iy, int l, int i, int n, int iquad)
            skip(1);
        proutn("%d - %d   ", ix, iy);
     } else {
-       if (game.damage[DSRSENS]==0 || game.condit==IHDOCKED) {
+       if (!damaged(DSRSENS) || game.condit==IHDOCKED) {
            if (i != 1 && l == 1) {
                drawmaps(2);
                delay(400);