Mercurial > ~darius > hgwebdir.cgi > paradise_client
comparison helpwin.c @ 3:5a977ccbc7a9 default tip
Empty changelog
author | darius |
---|---|
date | Sat, 06 Dec 1997 05:41:29 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
2:fba0b6e6cdc7 | 3:5a977ccbc7a9 |
---|---|
1 /* $Id: helpwin.c,v 1.1.1.1 1997/12/06 05:41:29 darius Exp $ */ | |
2 | |
3 /* | |
4 * helpwin.c | |
5 * copyright 1991 ERic mehlhaff | |
6 * Free to use, hack, etc. Just keep these credits here. | |
7 * Use of this code may be dangerous to your health and/or system. | |
8 * Its use is at your own risk. | |
9 * I assume no responsibility for damages, real, potential, or imagined, | |
10 * resulting from the use of it. | |
11 * | |
12 * Hacked into paradise by Bill Dyess | |
13 */ | |
14 | |
15 #include <stdio.h> | |
16 #include <math.h> | |
17 #include <signal.h> | |
18 #include <sys/types.h> | |
19 | |
20 | |
21 #include "Wlib.h" | |
22 #include "defs.h" | |
23 #include "struct.h" | |
24 #include "data.h" | |
25 | |
26 #ifdef SVR4 | |
27 #include <string.h> | |
28 #else | |
29 #include <strings.h> | |
30 #endif | |
31 | |
32 | |
33 /* this is a set of routines that makes up a multi column help window, | |
34 ** and shows just what the keymaps current keymap representation of the | |
35 ** keys are. | |
36 ** | |
37 ** fillhelp() handles the filling in if the strings for the help window | |
38 ** update_Help_to_Keymap() checks the keymap and sets it up in hte | |
39 ** help window. | |
40 ** | |
41 | |
42 ** | |
43 ** Format for each entry is follows: | |
44 ** first character is the hard-coded character representation for the key | |
45 ** in the keymap. Useful for when you re-key things. This could confuse | |
46 ** people who do'nt know the keymap format. | |
47 ** | |
48 ** the next few spaces are either spaces or keys that also do that | |
49 ** function. Note that if you have more than 3 keys set to do the same | |
50 ** thing, they will not be displayed. | |
51 ** So, you could, I suppose map everything to 'Q' and it would not | |
52 ** show, but that's a pretty bizarre situation. | |
53 ** | |
54 | |
55 ** | |
56 ** Bugs & Comments: | |
57 ** You have to be sure that helpWin is defined to be big enough to handle | |
58 ** all the messages. That's pretty much a trial&error by-hand thing | |
59 ** at this point | |
60 ** | |
61 ** BZZZT! Not anymore, done automatically [BDyess] | |
62 */ | |
63 | |
64 /* fills in the help window to note all keys also mapped to the | |
65 ** listed functions | |
66 */ | |
67 void update_Help_to_Keymap(); | |
68 | |
69 char *help_message[] = | |
70 { | |
71 " 0 Set speed 0", | |
72 " 1 Set speed 1", | |
73 " 2 Set speed 2", | |
74 " 3 Set speed 3", | |
75 " 4 Set speed 4", | |
76 " 5 Set speed 5", | |
77 " 6 Set speed 6", | |
78 " 7 Set speed 7", | |
79 " 8 Set speed 8", | |
80 " 9 Set speed 9", | |
81 "^0 Set speed 10", | |
82 "^1 Set speed 11", | |
83 "^2 Set speed 12", | |
84 "^3 Set speed 13", | |
85 "^4 Set speed 14", | |
86 "^5 Set speed 15", | |
87 "^6 Set speed 16", | |
88 "^7 Set speed 17", | |
89 "^8 Set speed 18", | |
90 "^9 Set speed 19", | |
91 "^) Set speed 20", | |
92 "^! Set speed 21", | |
93 "^@ Set speed 22", | |
94 "^# Set speed 23", | |
95 "^$ Set speed 24", | |
96 "^% Set speed 25", | |
97 "^^ Set speed 26", | |
98 "^& Set speed 27", | |
99 "^* Set speed 28", | |
100 "^( Set speed 29", | |
101 " % speed = maximum", | |
102 " # speed = 1/2 maximum", | |
103 " < slow speed 1", | |
104 " > speed up 1", | |
105 " ` Afterburners", | |
106 " - Engage warp", | |
107 " k Set course", | |
108 " p Fire phaser", | |
109 " t Fire photon torpedo", | |
110 " f Fire plasma torpedo", | |
111 " C Switch special weapon", | |
112 " d detonate enemy torps", | |
113 " D detonate own torps", | |
114 " L List players", | |
115 " P List planets", | |
116 " S Status graph toggle", | |
117 " ] Put up shields", | |
118 " [ Put down shields", | |
119 " u Shield toggle", | |
120 " s Shield toggle", | |
121 " i Info on player/planet", | |
122 " I Extended info on player", | |
123 "^i Info on a planet", | |
124 " b Bomb planet", | |
125 " z Beam up armies", | |
126 " x Beam down armies", | |
127 " { Cloak", | |
128 " } Uncloak", | |
129 " T Toggle tractor beam", | |
130 " y Toggle pressor beam", | |
131 " _ Turn on tractor beam", | |
132 " ^ Turn on pressor beam", | |
133 " $ Turn off tractor/pressor beam", | |
134 " R Enter repair mode", | |
135 " o Orbit planet or dock to outpost", | |
136 " e Docking permission toggle", | |
137 " r Refit (change ship type)", | |
138 " Q Quit", | |
139 " q Fast Quit", | |
140 " ? Message window toggle", | |
141 " c Cloaking device toggle", | |
142 " l Lock on to player/planet", | |
143 " ; Lock on to planet", | |
144 " h Help window toggle", | |
145 " w War declarations window", | |
146 " N Planet names toggle", | |
147 " V Rotate local planet display", | |
148 " B Rotate galactic planet display", | |
149 " * Send in practice robot", | |
150 " E Send Distress signal", | |
151 " F Send armies carried report", | |
152 " U Show rankings window", | |
153 " m Message Window Zoom", | |
154 " ' Message Zoom + start to Team", | |
155 " / Toggle sorted player list", | |
156 " : Toggle message logging", | |
157 " ! activate kitchen sink", | |
158 " + Show UDP options window", | |
159 " = Update all", | |
160 " , Ping stats window", | |
161 " M Show MOTD window", | |
162 #if 0 | |
163 " . NetstatWindow", | |
164 " \\ LagMeter", | |
165 #endif | |
166 | |
167 #ifdef SHORT_PACKETS | |
168 " ~ Toggle PacketWindow", | |
169 " \\ Update small", | |
170 " | Update medium", | |
171 #endif /* SHORT_PACKETS */ | |
172 | |
173 " (space) Unmap special windows", | |
174 | |
175 #ifdef TIMER | |
176 " @ Reset dashboard timer", | |
177 "^t Cycle timer", | |
178 #endif /* TIMER */ | |
179 "^m Toggle map zoom", | |
180 #ifdef WIDE_PLIST | |
181 " K Cycle playerlist", | |
182 #endif /* WIDE_PLIST */ | |
183 | |
184 #ifdef MACROS | |
185 " X Enter Macro Mode", | |
186 " X? Show current Macros", | |
187 #endif /* MACROS */ | |
188 | |
189 " & Reread .paradiserc", | |
190 " ) Rotate galaxy clockwise", | |
191 " ( Rotate galaxy counter-clockwise", | |
192 #ifdef RECORDER | |
193 "^r Stop recording", | |
194 #endif | |
195 #ifdef SOUND | |
196 "^s Sound window toggle", | |
197 #endif | |
198 #ifdef TOOLS | |
199 " \" Toggle shell tools window", | |
200 #endif | |
201 #ifdef AMIGA | |
202 " A Flush queued speech", | |
203 "HELP Show Amiga keys/info", | |
204 #endif | |
205 0 | |
206 }; | |
207 | |
208 int helpmessages = (sizeof(help_message) / sizeof(char *)); | |
209 /* this is the number of help messages there are */ | |
210 | |
211 #define MAXHELP 40 | |
212 /* maximum length in characters of key explanation */ | |
213 | |
214 | |
215 void | |
216 fillhelp() | |
217 { | |
218 register int i = 0, row, column; | |
219 char helpmessage[MAXHELP]; | |
220 | |
221 | |
222 /* 4 column help window. THis may be changed depending on font size */ | |
223 for (column = 0; column < 4; column++) { | |
224 for (row = 1; row < helpmessages / 4 + 2; row++) { | |
225 if (help_message[i] == 0) | |
226 break; | |
227 else { | |
228 strcpy(helpmessage, help_message[i]); | |
229 update_Help_to_Keymap(helpmessage); | |
230 W_WriteText(helpWin, MAXHELP * column, row - 1, textColor, | |
231 helpmessage, strlen(helpmessage), W_RegularFont); | |
232 i++; | |
233 } | |
234 } | |
235 if (help_message[i] == 0) | |
236 break; | |
237 } | |
238 } | |
239 | |
240 | |
241 /* this takes the help messages and puts in the keymap, so the player can | |
242 * see just what does what! | |
243 * | |
244 * ordinary format: "U Show rankings window", | |
245 * translatedd here to "[ sE Computer options window", | |
246 */ | |
247 void | |
248 update_Help_to_Keymap(helpmessage) | |
249 char helpmessage[]; | |
250 { | |
251 int i, num_mapped = 0, key; | |
252 | |
253 key = helpmessage[1]; | |
254 if (helpmessage[0] == '^') { | |
255 /* control character */ | |
256 key += 128; | |
257 } | |
258 if ((int) strlen(helpmessage) < 6) { | |
259 return; | |
260 } | |
261 for (i = 0; i < 256; i++) { | |
262 if (myship->s_keymap[i] != key) | |
263 continue; | |
264 if (i == key) | |
265 continue; /* it's already there! don't add it! */ | |
266 | |
267 /* we've found a key mapped to key! */ | |
268 /* the key is i */ | |
269 num_mapped += 1 + (i > 127) ? 1 : 0; | |
270 if (num_mapped > 3) | |
271 continue; /* we've found too many! */ | |
272 | |
273 /* put the key in the string */ | |
274 if (i > 127) { | |
275 helpmessage[1 + num_mapped] = '^'; | |
276 helpmessage[2 + num_mapped] = i - 128; | |
277 } else { | |
278 helpmessage[2 + num_mapped] = i; | |
279 } | |
280 } | |
281 | |
282 | |
283 /* clear spaces if any area available */ | |
284 /* switch (num_mapped) | |
285 { | |
286 case 0: | |
287 helpmessage[3] = ' '; | |
288 case 1: | |
289 helpmessage[4] = ' '; | |
290 case 2: | |
291 helpmessage[5] = ' '; | |
292 case 3: | |
293 default: | |
294 helpmessage[6] = ' '; | |
295 } | |
296 */ | |
297 return; | |
298 } |