X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=io.c;h=bce39c2c8c7f010ac06c73f3b6fd987ca6b6316c;hb=a96a31750d67dfc0d4636aae4040155f78d5eda8;hp=8b766e9876be9a51ed8e633d4a4d8b360574c2f0;hpb=b7bbbdd604afc1fac8b7c54563520b7d191ca216;p=super-star-trek.git diff --git a/io.c b/io.c index 8b766e9..bce39c2 100644 --- 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);