Move cursor restoration into io.c.
[super-star-trek.git] / io.c
diff --git a/io.c b/io.c
index e9cc3d7c102c77aa17f151ede5d81b33dbed86ce..d87d097990a70e5fc4b2cd2926d5c879977aa658 100644 (file)
--- a/io.c
+++ b/io.c
@@ -10,6 +10,7 @@
 
 #include "conio.h"
 #include "sst.h"
+#include "sstlinux.h"
 
 #ifndef SERGEEV
 static int linecount;  /* for paging */
@@ -22,12 +23,15 @@ static int curses = TRUE;
 #endif /* SERGEEV */
 
 #ifdef SERGEEV
-wnd wnds[6]={{1,1,80,25},      /* FULLSCREEN_WINDOW */
-            {1,1,25,12},       /* LEFTUPPER_WINDOW */
-            {26,2,80,12},      /* SRSCAN_WINDOW */
-            {65,1,80,10},      /* LRSCAN_WINDOW */
-            {1,13,80,23},      /* LOWER_WINDOW */
-            {1,24,80,25},      /* BOTTOM_WINDOW */
+typedef struct {
+        int wndleft,wndtop,wndright,wndbottom;
+} wnd;
+static wnd wnds[6]={{1,1,80,25},       /* FULLSCREEN_WINDOW */
+                   {1,1,25,12},        /* LEFTUPPER_WINDOW */
+                   {26,2,80,12},       /* SRSCAN_WINDOW */
+                   {65,1,80,10},       /* LRSCAN_WINDOW */
+                   {1,13,80,23},       /* LOWER_WINDOW */
+                   {1,24,80,25},       /* BOTTOM_WINDOW */
 };
 short curwnd;
 #endif /* SERGEEV */
@@ -53,6 +57,7 @@ static void fastexit(int sig) {
 
 void iostart(int usecurses) {
 #ifdef SERGEEV
+       initconio();
         textattr(7);
         clrscr();
         setwnd(FULLSCREEN_WINDOW);
@@ -288,20 +293,6 @@ 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 cgetline(char *line, int max) {
     if (curses) {
 #ifndef SERGEEV
@@ -348,7 +339,7 @@ void drawmaps(short l) {
      if (l==1) sensor();
      if (l!=2) setwnd(LEFTUPPER_WINDOW);
      gotoxy(1,1);
-     enqueue("s");
+     enqueue("no");
      srscan(SCAN_FULL);
      if (l!=2){
         setwnd(SRSCAN_WINDOW);
@@ -424,6 +415,9 @@ void tracktorpedo(int x, int y, int ix, int iy, int wait, int l, int i, int n, i
     proutn("%d - %d   ", (int)x, (int)y);
 #else
     if (game.damage[DSRSENS]==0 || condit==IHDOCKED) {
+       int crx, cry;
+       crx = wherex();
+       cry = wherey();
        drawmaps(2);
        delay((wait!=1)*400);
        gotoxy(iy*2+3,ix+2);
@@ -446,6 +440,7 @@ void tracktorpedo(int x, int y, int ix, int iy, int wait, int l, int i, int n, i
            lowvideo();
            _setcursortype(_NORMALCURSOR);
        }
+       gotoxy(crx, cry);
     } else {
        proutn("%d - %d   ", (int)x, (int)y);
     }