X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=io.c;h=d87d097990a70e5fc4b2cd2926d5c879977aa658;hb=c5c08c8b43daf955ad447af2b72ade2f8579b0d2;hp=3016890ee3060a6a2f91521f83b42978411e7acc;hpb=a079e80bb32020a22aff8199d61b036cdd2d20ea;p=super-star-trek.git diff --git a/io.c b/io.c index 3016890..d87d097 100644 --- a/io.c +++ b/io.c @@ -1,3 +1,4 @@ +#define _GNU_SOURCE #include #include #include @@ -8,13 +9,13 @@ #include #include "conio.h" -#include "sstlinux.h" #include "sst.h" +#include "sstlinux.h" #ifndef SERGEEV static int linecount; /* for paging */ -#endif /* SERGEEV */ static int screenheight = 24, screenwidth = 80; +#endif /* SERGEEV */ #ifndef SERGEEV static int curses = FALSE; #else /* SERGEEV */ @@ -22,16 +23,20 @@ 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 */ +#ifndef SERGEEV static void outro(int sig) { /* wrap up, either normally or due to signal */ if (curses) { @@ -48,9 +53,11 @@ static void fastexit(int sig) { putchar('\n'); exit(0); } +#endif /* SERGEEV */ void iostart(int usecurses) { #ifdef SERGEEV + initconio(); textattr(7); clrscr(); setwnd(FULLSCREEN_WINDOW); @@ -164,9 +171,11 @@ void skip(int i) { } #else /* SERGEEV */ while (i-- > 0) proutn("\n\r"); +#endif /* SERGEEV */ } static void vproutn(char *fmt, va_list ap) { +#ifdef SERGEEV char *s, *p; vasprintf(&s, fmt, ap); p=s; @@ -284,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 @@ -344,15 +339,15 @@ void drawmaps(short l) { if (l==1) sensor(); if (l!=2) setwnd(LEFTUPPER_WINDOW); gotoxy(1,1); - strcpy(line,"s"); - srscan(1); + enqueue("no"); + srscan(SCAN_FULL); if (l!=2){ setwnd(SRSCAN_WINDOW); clrscr(); - srscan(2); + srscan(SCAN_NO_LEFTSIDE); setwnd(LRSCAN_WINDOW); clrscr(); - strcpy(line,"l"); + enqueue("l"); lrscan(); _setcursortype(_NORMALCURSOR); } @@ -420,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); @@ -442,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); }