Pull SERGEEV dependencies out of reports.c.
[super-star-trek.git] / io.c
diff --git a/io.c b/io.c
index 8b766e9876be9a51ed8e633d4a4d8b360574c2f0..bce39c2c8c7f010ac06c73f3b6fd987ca6b6316c 100644 (file)
--- a/io.c
+++ b/io.c
@@ -59,11 +59,7 @@ void iostart(int usecurses) {
        if(signal(SIGQUIT,SIG_IGN) != SIG_IGN)
            (void)signal(SIGQUIT,fastexit);
 
-#ifndef SERGEEV
-       if (curses = usecurses) {
-#else /* SERGEEV */
        if ((curses = usecurses)) {
-#endif /* SERGEEV */
                (void)initscr();
 #ifdef KEY_MIN
                keypad(stdscr, TRUE);
@@ -85,30 +81,18 @@ void ioend(void) {
     outro(0);
 }
 
-void clearscreen(void) {
-       /* Somehow we need to clear the screen */
-#ifdef __BORLANDC__
-       extern void clrscr(void);
-       clrscr();
-#else
-       if (curses) {
-           wclear(stdscr);
-           wrefresh(stdscr);
-       } else {
-               // proutn("\033[2J"); /* Hope for an ANSI display */
-               /* much more in that old-TTY spirit to just throw linefeeds */
-               int i;
-               for (i = 0; i < screenheight; i++)
-                   putchar('\n');
-       }
-#endif
+void waitfor(void) {
+/* wait for user action -- OK to do nothing if on a TTY */
+#ifdef SERGEEV
+       getche();
+#endif /* SERGEEV */
 }
 
 void pause_game(int i) {
+       char *prompt;
 #ifndef SERGEEV
-    char buf[BUFSIZ], *prompt;
+        char buf[BUFSIZ];
 #else /* SERGEEV */
-       char *prompt;
         drawmaps(0);
         setwnd(5);
 #endif /* SERGEEV */
@@ -134,10 +118,13 @@ void pause_game(int i) {
                wrefresh(stdscr);
        } else {
                putchar('\n');
-               prout(prompt);
+               proutn(prompt);
                fgets(buf, sizeof(buf), stdin);
                if (i != 0) {
-                       clearscreen();
+                   /* much more in that old-TTY spirit to throw linefeeds */
+                   int j;
+                   for (j = 0; j < screenheight; j++)
+                       putchar('\n');
                }
                linecount = 0;
        }
@@ -173,14 +160,14 @@ void skip(int i) {
 }
 
 static void vproutn(char *fmt, va_list ap) {
-    char *strbuf, *p, *s;
-    vasprintf(&strbuf, fmt, ap);
-    p=s=strbuf;
+    char *s, *p;
+    vasprintf(&s, fmt, ap);
+    p=s;
     if ((curwnd==4)&&(wherey()==wnds[curwnd].wndbottom-wnds[curwnd].wndtop)){
-       if (strchr(strbuf,'\n')){
-          p=strchr(strbuf,'\n');
+       if (strchr(s,'\n')) {
+          p=strchr(s,'\n');
           p[0]=0;
-          cprintf("%s",strbuf);
+          cprintf("%s",s);
           p++;
           pause_game(0);
        }
@@ -192,7 +179,7 @@ static void vproutn(char *fmt, va_list ap) {
 //        setwnd(curwnd);
     if (strchr(s,'\n') || strchr(s,'\r')) clreol();
     cprintf("%s",p);
-    free(strbuf);
+    free(s);
 #endif /* SERGEEV */
 }
 
@@ -249,10 +236,11 @@ static void prchr(char *s){
 }
 
 static void vprouts(char *fmt, va_list ap) {
-    char *s;
+    char *s, *p;
     vasprintf(&s, fmt, ap);
-    while (*s) {
-        prchr(s++);
+    p=s;
+    while (*p) {
+        prchr(p++);
         delay(30);
     }
     free(s);
@@ -289,11 +277,55 @@ void prouts(char *fmt, ...) {
 #endif /* SERGEEV */
 }
 
+void c_printf (char *format, ... )
+{
+    char buffer[BUFSIZ]; /* Well, BUFSIZ is from ncurses...  */
+    va_list argp;
+    va_start(argp,format);
+    vsprintf(buffer,format,argp);
+    va_end(argp);
+#ifdef SERGEEV
+    waddstr(conio_scr,buffer);
+#else
+    proutn(buffer);
+#endif /* SERGEEV */
+}
+
+void warble(void)
+/* sound and visual effects for teleportation */
+{
+#ifdef SERGEEV
+    int posx, posy;
+    posx=wherex();
+    posy=wherey();
+    drawmaps(1);
+    setwnd(4);
+    gotoxy(posx,posy);
+    sound(50);
+    delay(1000);
+    nosound();
+#else
+    prouts(" . . . . . ");
+#endif /* SERGEEV */
+}
+
+void setpassword(void) {
 #ifndef SERGEEV
-void getline(char *line, int max) {
-#else /* SERGEEV */
-void cgetline(char *line, int max) {
+       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;
 #endif /* SERGEEV */
+}
+
+void getline(char *line, int max) {
     if (curses) {
 #ifndef SERGEEV
        wgetnstr(stdscr, line, max);