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