1*86d7f5d3SJohn Marino /* help.c Larn is copyrighted 1986 by Noah Morgan. */ 2*86d7f5d3SJohn Marino /* $FreeBSD: src/games/larn/help.c,v 1.4 1999/11/16 02:57:21 billf Exp $ */ 3*86d7f5d3SJohn Marino /* $DragonFly: src/games/larn/help.c,v 1.4 2006/08/26 17:05:05 pavalos Exp $ */ 4*86d7f5d3SJohn Marino #include "header.h" 5*86d7f5d3SJohn Marino 6*86d7f5d3SJohn Marino static void retcont(void); 7*86d7f5d3SJohn Marino static int openhelp(void); 8*86d7f5d3SJohn Marino /* 9*86d7f5d3SJohn Marino * help function to display the help info 10*86d7f5d3SJohn Marino * 11*86d7f5d3SJohn Marino * format of the .larn.help file 12*86d7f5d3SJohn Marino * 13*86d7f5d3SJohn Marino * 1st character of file: # of pages of help available (ascii digit) 14*86d7f5d3SJohn Marino * page (23 lines) for the introductory message (not counted in above) 15*86d7f5d3SJohn Marino * pages of help text (23 lines per page) 16*86d7f5d3SJohn Marino */ 17*86d7f5d3SJohn Marino void help(void)18*86d7f5d3SJohn Marinohelp(void) 19*86d7f5d3SJohn Marino { 20*86d7f5d3SJohn Marino int i, j; 21*86d7f5d3SJohn Marino #ifndef VT100 22*86d7f5d3SJohn Marino char tmbuf[128]; /* intermediate translation buffer when not a VT100 */ 23*86d7f5d3SJohn Marino #endif /* VT100 */ 24*86d7f5d3SJohn Marino if ((j = openhelp()) < 0) /* open the help file and get # pages */ 25*86d7f5d3SJohn Marino return; 26*86d7f5d3SJohn Marino for (i = 0; i < 23; i++) /* skip over intro message */ 27*86d7f5d3SJohn Marino lgetl(); 28*86d7f5d3SJohn Marino for (; j > 0; j--) { 29*86d7f5d3SJohn Marino clear(); 30*86d7f5d3SJohn Marino for (i = 0; i < 23; i++) 31*86d7f5d3SJohn Marino #ifdef VT100 32*86d7f5d3SJohn Marino lprcat(lgetl()); /* print out each line that we read in */ 33*86d7f5d3SJohn Marino #else /* VT100 */ 34*86d7f5d3SJohn Marino { 35*86d7f5d3SJohn Marino tmcapcnv(tmbuf, lgetl()); 36*86d7f5d3SJohn Marino lprcat(tmbuf); 37*86d7f5d3SJohn Marino } /* intercept \33's */ 38*86d7f5d3SJohn Marino #endif /* VT100 */ 39*86d7f5d3SJohn Marino if (j > 1) { 40*86d7f5d3SJohn Marino lprcat(" ---- Press "); 41*86d7f5d3SJohn Marino standout("return"); 42*86d7f5d3SJohn Marino lprcat(" to exit, "); 43*86d7f5d3SJohn Marino standout("space"); 44*86d7f5d3SJohn Marino lprcat(" for more help ---- "); 45*86d7f5d3SJohn Marino i = 0; 46*86d7f5d3SJohn Marino while ((i != ' ') && (i != '\n') && (i != '\33')) 47*86d7f5d3SJohn Marino i = getchr(); 48*86d7f5d3SJohn Marino if ((i == '\n') || (i == '\33')) { 49*86d7f5d3SJohn Marino lrclose(); 50*86d7f5d3SJohn Marino setscroll(); 51*86d7f5d3SJohn Marino drawscreen(); 52*86d7f5d3SJohn Marino return; 53*86d7f5d3SJohn Marino } 54*86d7f5d3SJohn Marino } 55*86d7f5d3SJohn Marino } 56*86d7f5d3SJohn Marino lrclose(); 57*86d7f5d3SJohn Marino retcont(); 58*86d7f5d3SJohn Marino drawscreen(); 59*86d7f5d3SJohn Marino } 60*86d7f5d3SJohn Marino 61*86d7f5d3SJohn Marino /* 62*86d7f5d3SJohn Marino * function to display the welcome message and background 63*86d7f5d3SJohn Marino */ 64*86d7f5d3SJohn Marino void welcome(void)65*86d7f5d3SJohn Marinowelcome(void) 66*86d7f5d3SJohn Marino { 67*86d7f5d3SJohn Marino int i; 68*86d7f5d3SJohn Marino #ifndef VT100 69*86d7f5d3SJohn Marino char tmbuf[128]; /* intermediate translation buffer when not a VT100 */ 70*86d7f5d3SJohn Marino #endif /* VT100 */ 71*86d7f5d3SJohn Marino if (openhelp() < 0) /* open the help file */ 72*86d7f5d3SJohn Marino return; 73*86d7f5d3SJohn Marino clear(); 74*86d7f5d3SJohn Marino for (i = 0; i < 23; i++) 75*86d7f5d3SJohn Marino #ifdef VT100 76*86d7f5d3SJohn Marino lprcat(lgetl());/* print out each line that we read in */ 77*86d7f5d3SJohn Marino #else /* VT100 */ 78*86d7f5d3SJohn Marino { 79*86d7f5d3SJohn Marino tmcapcnv(tmbuf, lgetl()); 80*86d7f5d3SJohn Marino lprcat(tmbuf); 81*86d7f5d3SJohn Marino } /* intercept \33's */ 82*86d7f5d3SJohn Marino #endif /* VT100 */ 83*86d7f5d3SJohn Marino lrclose(); 84*86d7f5d3SJohn Marino retcont(); /* press return to continue */ 85*86d7f5d3SJohn Marino } 86*86d7f5d3SJohn Marino 87*86d7f5d3SJohn Marino /* 88*86d7f5d3SJohn Marino * function to say press return to continue and reset scroll when done 89*86d7f5d3SJohn Marino */ 90*86d7f5d3SJohn Marino static void retcont(void)91*86d7f5d3SJohn Marinoretcont(void) 92*86d7f5d3SJohn Marino { 93*86d7f5d3SJohn Marino cursor(1, 24); 94*86d7f5d3SJohn Marino lprcat("Press "); 95*86d7f5d3SJohn Marino standout("return"); 96*86d7f5d3SJohn Marino lprcat(" to continue: "); 97*86d7f5d3SJohn Marino while (getchr() != '\n') 98*86d7f5d3SJohn Marino ; /* nothing */ 99*86d7f5d3SJohn Marino setscroll(); 100*86d7f5d3SJohn Marino } 101*86d7f5d3SJohn Marino 102*86d7f5d3SJohn Marino /* 103*86d7f5d3SJohn Marino * routine to open the help file and return the first character - '0' 104*86d7f5d3SJohn Marino */ 105*86d7f5d3SJohn Marino static int openhelp(void)106*86d7f5d3SJohn Marinoopenhelp(void) 107*86d7f5d3SJohn Marino { 108*86d7f5d3SJohn Marino if (lopen(helpfile) < 0) { 109*86d7f5d3SJohn Marino lprintf("Can't open help file \"%s\" ", helpfile); 110*86d7f5d3SJohn Marino lflush(); 111*86d7f5d3SJohn Marino sleep(4); 112*86d7f5d3SJohn Marino drawscreen(); 113*86d7f5d3SJohn Marino setscroll(); 114*86d7f5d3SJohn Marino return (-1); 115*86d7f5d3SJohn Marino } 116*86d7f5d3SJohn Marino resetscroll(); 117*86d7f5d3SJohn Marino return (lgetc() - '0'); 118*86d7f5d3SJohn Marino } 119