X-Git-Url: https://jxself.org/git/?p=super-star-trek.git;a=blobdiff_plain;f=src%2Fio.c;h=e218c3ee7d2fc191624a7d092262969adb2e36a9;hp=5c5ac644526dc4c91ba5f9db6be3e20b04fab22f;hb=ad6b6f3e8316dc43c8f80ca8bc57be091b0076c6;hpb=ebc4fdc3802c47c9fe7ec31b4cde062faff366fc diff --git a/src/io.c b/src/io.c index 5c5ac64..e218c3e 100644 --- a/src/io.c +++ b/src/io.c @@ -1,10 +1,7 @@ #include #include -#include -#include -#include -#include +#include "config.h" #include "sst.h" #include "sstlinux.h" @@ -22,25 +19,31 @@ static void outro(void) /* wrap up, either normally or due to signal */ { if (game.options & OPTION_CURSES) { - clear(); - curs_set(1); - (void)refresh(); - (void)resetterm(); - //(void)echo(); - (void)endwin(); + //clear(); + //curs_set(1); + //refresh(); + //resetterm(); + //echo(); + endwin(); putchar('\n'); } + if (logfp) + fclose(logfp); } void iostart(void) { + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + 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); @@ -82,21 +85,21 @@ void waitfor(void) getch(); } -void pause_game(int i) +void pause_game(bool announcement) { char *prompt; char buf[BUFSIZ]; - if (i==1) { + if (announcement) { if (game.skill > SKILL_FAIR) - prompt = "[ANOUNCEMENT ARRIVING...]"; + prompt = _("[ANOUNCEMENT ARRIVING...]"); else - prompt = "[IMPORTANT ANNOUNCEMENT ARRIVING -- PRESS ENTER TO CONTINUE]"; + prompt = _("[IMPORTANT ANNOUNCEMENT ARRIVING -- PRESS ENTER TO CONTINUE]"); } else { if (game.skill > SKILL_FAIR) - prompt = "[CONTINUE?]"; + prompt = _("[CONTINUE?]"); else - prompt = "[PRESS ENTER TO CONTINUE]"; + prompt = _("[PRESS ENTER TO CONTINUE]"); } if (game.options & OPTION_CURSES) { @@ -112,7 +115,7 @@ void pause_game(int i) putchar('\n'); proutn(prompt); fgets(buf, sizeof(buf), stdin); - if (i != 0) { + if (announcement) { int j; for (j = 0; j < rows; j++) putchar('\n'); @@ -127,7 +130,7 @@ void skip(int i) while (i-- > 0) { if (game.options & OPTION_CURSES) { if (curwnd == message_window && linecount >= getmaxy(curwnd) - 3) { - pause_game(0); + pause_game(false); clrscr(); } else { proutn("\n"); @@ -137,7 +140,7 @@ void skip(int i) } else { linecount++; if (linecount >= rows) - pause_game(0); + pause_game(false); else putchar('\n'); } @@ -199,8 +202,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'; } @@ -301,24 +309,24 @@ void highvideo (void) } } -void commandhook(char *cmd, int before) { +void commandhook(char *cmd, bool before) { } /* * Things past this point have policy implications. */ -void drawmaps(short l) +void drawmaps(int mode) /* hook to be called after moving to redraw maps */ { if (game.options & OPTION_CURSES) { - if (l == 1) + if (mode == 1) sensor(); setwnd(srscan_window); wmove(curwnd, 0, 0); enqueue("no"); srscan(SCAN_FULL); - if (l != 2) { + if (mode != 2) { setwnd(report_window); wclear(report_window); wmove(report_window, 0, 0); @@ -332,26 +340,26 @@ void drawmaps(short l) } } -static void put_srscan_sym(int x, int y, char sym) +static void put_srscan_sym(coord w, char sym) { - wmove(srscan_window, x+1, y*2+2); + wmove(srscan_window, w.x+1, w.y*2+2); waddch(srscan_window, sym); wrefresh(srscan_window); } -void boom(int ii, int jj) +void boom(coord w) /* enemy fall down, go boom */ { if (game.options & OPTION_CURSES) { drawmaps(2); setwnd(srscan_window); wattron(srscan_window, A_REVERSE); - put_srscan_sym(ii, jj, game.quad[ii][jj]); + put_srscan_sym(w, game.quad[w.x][w.y]); sound(500); delay(1000); nosound(); wattroff(srscan_window, A_REVERSE); - put_srscan_sym(ii, jj, game.quad[ii][jj]); + put_srscan_sym(w, game.quad[w.x][w.y]); delay(500); setwnd(message_window); } @@ -372,46 +380,46 @@ void warble(void) } } -void tracktorpedo(int ix, int iy, int l, int i, int n, int iquad) +void tracktorpedo(coord w, int l, int i, int n, int iquad) /* torpedo-track animation */ { if (!game.options & OPTION_CURSES) { if (l == 1) { if (n != 1) { skip(1); - proutn("Track for torpedo number %d- ", i); + proutn(_("Track for torpedo number %d- "), i); } else { skip(1); - proutn("Torpedo track- "); + proutn(_("Torpedo track- ")); } } else if (l==4 || l==9) skip(1); - proutn("%d - %d ", ix, iy); + proutn("%d - %d ", w.x, w.y); } else { - if (game.damage[DSRSENS]==0 || game.condit==IHDOCKED) { + if (!damaged(DSRSENS) || game.condition==docked) { if (i != 1 && l == 1) { drawmaps(2); delay(400); } if ((iquad==IHDOT)||(iquad==IHBLANK)){ - put_srscan_sym(ix, iy, '+'); + put_srscan_sym(w, '+'); sound(l*10); delay(100); nosound(); - put_srscan_sym(ix, iy, iquad); + put_srscan_sym(w, iquad); } else { wattron(curwnd, A_REVERSE); - put_srscan_sym(ix, iy, iquad); + put_srscan_sym(w, iquad); sound(500); delay(1000); nosound(); wattroff(curwnd, A_REVERSE); - put_srscan_sym(ix, iy, iquad); + put_srscan_sym(w, iquad); } } else { - proutn("%d - %d ", ix, iy); + proutn("%d - %d ", w.x, w.y); } } } @@ -421,24 +429,6 @@ void makechart(void) if (game.options & OPTION_CURSES) { setwnd(message_window); wclear(message_window); - chart(0); - } -} - -void setpassword(void) -{ - if (!(game.options & OPTION_CURSES)) { - while (TRUE) { - scan(); - strcpy(game.passwd, citem); - chew(); - if (*game.passwd != 0) break; - proutn("Please type in a secret password-"); - } - } else { - int i; - for(i=0;i<3;i++) game.passwd[i]=(char)(97+(int)(Rand()*25)); - game.passwd[3]=0; + chart(false); } } -