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