#include <stdio.h>
#include <unistd.h>
-#include <curses.h>
-#include <signal.h>
-#include <ctype.h>
-#include <stdarg.h>
+#include "config.h"
#include "sst.h"
#include "sstlinux.h"
static int rows, linecount; /* for paging */
WINDOW *curwnd;
+WINDOW *fullscreen_window;
+WINDOW *srscan_window;
+WINDOW *report_window;
+WINDOW *lrscan_window;
+WINDOW *message_window;
+WINDOW *prompt_window;
static void outro(void)
/* wrap up, either normally or due to signal */
(void)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);
char buf[BUFSIZ];
if (i==1) {
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) {
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';
}
}
}
-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);
}
}
-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);
}
}
}
-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.condit==IHDOCKED) {
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);
}
}
}
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);
}
}
-