warp.h revision 1.1 1 1.1 kamil /* $Header: /tank/opengrok/rsync2/NetBSD/src/games/warp/warp.h,v 1.1 2020/11/09 23:37:05 kamil Exp $ */
2 1.1 kamil
3 1.1 kamil /* $Log: warp.h,v $
4 1.1 kamil /* Revision 1.1 2020/11/09 23:37:05 kamil
5 1.1 kamil /* Add Warp Kit, Version 7.0 by Larry Wall
6 1.1 kamil /*
7 1.1 kamil /* Warp is a real-time space war game that doesn't get boring very quickly.
8 1.1 kamil /* Read warp.doc and the manual page for more information.
9 1.1 kamil /*
10 1.1 kamil /* games/warp originally distributed with 4.3BSD-Reno, is back to the BSD
11 1.1 kamil /* world via NetBSD. Its remnants were still mentioned in games/Makefile.
12 1.1 kamil /*
13 1.1 kamil /* Larry Wall, the original author and the copyright holder, generously
14 1.1 kamil /* donated the game and copyright to The NetBSD Foundation, Inc.
15 1.1 kamil /*
16 1.1 kamil /* Import the game sources as-is from 4.3BSD-Reno, with the cession
17 1.1 kamil /* of the copyright and license to BSD-2-clause NetBSD-style.
18 1.1 kamil /*
19 1.1 kamil /* Signed-off-by: Larry Wall <larry (at) wall.org>
20 1.1 kamil /* Signed-off-by: Kamil Rytarowski <kamil (at) netbsd.org>
21 1.1 kamil /*
22 1.1 kamil * Revision 7.0.1.2 86/12/12 17:08:42 lwall
23 1.1 kamil * Baseline for net release.
24 1.1 kamil *
25 1.1 kamil * Revision 7.0.1.1 86/10/16 10:54:26 lwall
26 1.1 kamil * Added Damage. Fixed random bugs.
27 1.1 kamil *
28 1.1 kamil * Revision 7.0 86/10/08 15:17:55 lwall
29 1.1 kamil * Split into separate files. Added amoebas and pirates.
30 1.1 kamil *
31 1.1 kamil */
32 1.1 kamil
33 1.1 kamil extern int errno;
34 1.1 kamil
35 1.1 kamil #include "config.h" /* generated by Configure script */
36 1.1 kamil
37 1.1 kamil #include <stdio.h>
38 1.1 kamil #include <signal.h>
39 1.1 kamil #include <ctype.h>
40 1.1 kamil #include <sys/types.h>
41 1.1 kamil #include <sys/stat.h>
42 1.1 kamil #include <errno.h>
43 1.1 kamil
44 1.1 kamil /* WARPLIB must be readable and writeable by warp, but not by anyone who you
45 1.1 kamil * don't trust. In other words, to set up warp so everyone can play and
46 1.1 kamil * no one can cheat, give warp a uid of its own and make warp setuid to
47 1.1 kamil * that uid. WARPLIB must then NOT be made writeable by the world,
48 1.1 kamil * since no attempt is made to encrypt saved games or anything.
49 1.1 kamil * (It must be readable by the world, however, due to a strangeness in
50 1.1 kamil * access.)
51 1.1 kamil */
52 1.1 kamil
53 1.1 kamil #define SAVEDIR "./"
54 1.1 kamil #define NEWSFILE "warp.news"
55 1.1 kamil #define HELPFILE "warp.doc"
56 1.1 kamil #define LOCKFILE ".warp.lock"
57 1.1 kamil #define LOGFILE "warp.log"
58 1.1 kamil #define SCOREBOARD "warp.top"
59 1.1 kamil #define LSCOREBOARD "warp.lowtop"
60 1.1 kamil #define FSCOREBOARD "warp.funtop"
61 1.1 kamil #define TMPSCOREBOARD "warp.topnew"
62 1.1 kamil #define WARPMACRO "%X/Kbmap.%{TERM}"
63 1.1 kamil
64 1.1 kamil /* warp library */
65 1.1 kamil #ifndef WARPLIB /* ~ and %l only ("~%l" is permissable) */
66 1.1 kamil # ifdef PRIVLIB
67 1.1 kamil # define WARPLIB PRIVLIB
68 1.1 kamil # else
69 1.1 kamil # define WARPLIB "/usr/games/warp"
70 1.1 kamil # endif
71 1.1 kamil #endif
72 1.1 kamil
73 1.1 kamil EXT char *warplib;
74 1.1 kamil
75 1.1 kamil #define PERMMAPS 8 /* how many starmaps are permanent */
76 1.1 kamil #define MAPS 20 /* how many starmaps to choose from */
77 1.1 kamil /* (MAPS - PERMMAPS is # of half-gone universes) */
78 1.1 kamil
79 1.1 kamil /*
80 1.1 kamil * Screen size info, minimum screen size is 23x40 (actually 24x80).
81 1.1 kamil * YSIZE and XSIZE should be relatively prime so that a torpedo launched
82 1.1 kamil * at an angle will eventually cover the whole screen.
83 1.1 kamil * To calculate a new position for something:
84 1.1 kamil * new_position = (current_position + delta + ?SIZE00) % ?SIZE
85 1.1 kamil * This allows for negative deltas of up to ?SIZE00 (% doesn't work right
86 1.1 kamil * on negative numbers).
87 1.1 kamil * ?SIZE01, etc. are fudges for efficiency--they already include a delta.
88 1.1 kamil */
89 1.1 kamil
90 1.1 kamil #define XYSIZE 920
91 1.1 kamil #define XYSIZEx4 3680
92 1.1 kamil
93 1.1 kamil #define YSIZE 23
94 1.1 kamil #define YSIZE00 2300
95 1.1 kamil #define YSIZE01 2301
96 1.1 kamil #define YSIZE99 2299
97 1.1 kamil
98 1.1 kamil #define XSIZE 40
99 1.1 kamil #define XSIZE00 4000
100 1.1 kamil #define XSIZE01 4001
101 1.1 kamil #define XSIZE99 3999
102 1.1 kamil #define XSIZE02 4002
103 1.1 kamil #define XSIZE98 3998
104 1.1 kamil #define XSIZE03 4003
105 1.1 kamil #define XSIZE97 3997
106 1.1 kamil #define XSIZE08 4008
107 1.1 kamil #define XSIZE92 3992
108 1.1 kamil
109 1.1 kamil EXT char amb[YSIZE][XSIZE];
110 1.1 kamil
111 1.1 kamil #ifdef WHOAMI
112 1.1 kamil # include <whoami.h>
113 1.1 kamil #endif
114 1.1 kamil
115 1.1 kamil #ifndef isalnum
116 1.1 kamil # define isalnum(c) (isalpha(c) || isdigit(c))
117 1.1 kamil #endif
118 1.1 kamil
119 1.1 kamil #ifdef TERMIO
120 1.1 kamil # include <termio.h>
121 1.1 kamil #else
122 1.1 kamil # include <sgtty.h>
123 1.1 kamil #endif
124 1.1 kamil
125 1.1 kamil #include <sys/timeb.h>
126 1.1 kamil
127 1.1 kamil # include <pwd.h>
128 1.1 kamil
129 1.1 kamil #define BITSPERBYTE 8
130 1.1 kamil #define LBUFLEN 512 /* line buffer length */
131 1.1 kamil
132 1.1 kamil #ifdef pdp11
133 1.1 kamil # define CBUFLEN 256 /* command buffer length */
134 1.1 kamil # define PUSHSIZE 128
135 1.1 kamil #else
136 1.1 kamil # define CBUFLEN 512 /* command buffer length */
137 1.1 kamil # define PUSHSIZE 256
138 1.1 kamil #endif
139 1.1 kamil #ifdef pdp11
140 1.1 kamil # define MAXFILENAME 128
141 1.1 kamil #else
142 1.1 kamil # define MAXFILENAME 512
143 1.1 kamil #endif
144 1.1 kamil #define FINISHCMD 0177
145 1.1 kamil
146 1.1 kamil /* some handy defs */
147 1.1 kamil
148 1.1 kamil #define bool char
149 1.1 kamil #define TRUE (1)
150 1.1 kamil #define FALSE (0)
151 1.1 kamil #define Null(t) ((t)0)
152 1.1 kamil #define Nullch Null(char *)
153 1.1 kamil #define Nullfp Null(FILE *)
154 1.1 kamil
155 1.1 kamil #define Ctl(ch) (ch & 037)
156 1.1 kamil
157 1.1 kamil #define strNE(s1,s2) (strcmp(s1,s2))
158 1.1 kamil #define strEQ(s1,s2) (!strcmp(s1,s2))
159 1.1 kamil #define strnNE(s1,s2,l) (strncmp(s1,s2,l))
160 1.1 kamil #define strnEQ(s1,s2,l) (!strncmp(s1,s2,l))
161 1.1 kamil
162 1.1 kamil #define sgn(x) ((x) < 0 ? -1 : (x) > 0)
163 1.1 kamil
164 1.1 kamil /* Things we can figure out ourselves */
165 1.1 kamil
166 1.1 kamil #ifdef SIGPROF
167 1.1 kamil # define BSD42 /* do we have Berkeley 4.2? */
168 1.1 kamil #endif
169 1.1 kamil
170 1.1 kamil #ifdef FIONREAD
171 1.1 kamil # define PENDING
172 1.1 kamil #else
173 1.1 kamil # ifdef O_NDELAY
174 1.1 kamil # define PENDING
175 1.1 kamil # else
176 1.1 kamil # ifdef RDCHK
177 1.1 kamil # define PENDING
178 1.1 kamil # endif
179 1.1 kamil # endif
180 1.1 kamil #endif
181 1.1 kamil
182 1.1 kamil #define UNLINK(victim) unlink(victim)
183 1.1 kamil
184 1.1 kamil /* Valid substitutions for strings marked with % comment are:
185 1.1 kamil * %H Host name (yours)
186 1.1 kamil * %L Login name (yours)
187 1.1 kamil * %N Full name (yours)
188 1.1 kamil * %O Original working directory (where you ran warp from)
189 1.1 kamil * %X Warp library directory
190 1.1 kamil * %~ Home directory
191 1.1 kamil * %. Directory containing . files
192 1.1 kamil * %$ current process number
193 1.1 kamil * %{name} Environment variable "name". %{name-default} form allowed.
194 1.1 kamil * %"prompt"
195 1.1 kamil * Print prompt and insert what is typed.
196 1.1 kamil * %`command`
197 1.1 kamil * Insert output of command.
198 1.1 kamil * %(test_text=pattern?if_text:else_text)
199 1.1 kamil * Substitute if_text if test_text matches pattern, otherwise
200 1.1 kamil * substitute else_text. Use != for negated match.
201 1.1 kamil * % substitutions are done on test_text, if_text, and else_text.
202 1.1 kamil * (Note: %() only works if CONDSUB defined.)
203 1.1 kamil */
204 1.1 kamil
205 1.1 kamil /* *** System Dependent Stuff *** */
206 1.1 kamil
207 1.1 kamil /* NOTE: many of these are defined in the config.h file */
208 1.1 kamil
209 1.1 kamil #ifndef ROOTID
210 1.1 kamil # define ROOTID 0 /* uid of superuser */
211 1.1 kamil #endif
212 1.1 kamil
213 1.1 kamil # define sigset Signal
214 1.1 kamil # define sigignore(sig) Signal(sig,SIG_IGN)
215 1.1 kamil
216 1.1 kamil #ifndef LOGDIRFIELD
217 1.1 kamil # define LOGDIRFIELD 6 /* Which field (origin 1) is the */
218 1.1 kamil /* login directory in /etc/passwd? */
219 1.1 kamil /* (If it is not kept in passwd, */
220 1.1 kamil /* but getpwnam() returns it, */
221 1.1 kamil /* define the symbol GETPWENT) */
222 1.1 kamil #endif
223 1.1 kamil #ifndef GCOSFIELD
224 1.1 kamil # define GCOSFIELD 5
225 1.1 kamil #endif
226 1.1 kamil
227 1.1 kamil /* Undefine any of the following features to save both I and D space */
228 1.1 kamil /* In general, earlier ones are easier to get along without */
229 1.1 kamil /* Pdp11's without split I and D may have to undefine them all */
230 1.1 kamil #define DEBUGGING /* include debugging code */
231 1.1 kamil #define PUSHBACK /* macros and keymaps using pushback buffer */
232 1.1 kamil #define CONDSUB /* allow %(cond?text:text) */
233 1.1 kamil #define BACKTICK /* allow %`command` */
234 1.1 kamil #define PROMPTTTY /* allow %"prompt" */
235 1.1 kamil #define GETLOGIN /* use getlogin() routine as backup to environment */
236 1.1 kamil /* variables USER or LOGNAME */
237 1.1 kamil #define TILDENAME /* allow ~logname expansion */
238 1.1 kamil #define GETWD /* use our getwd() instead of piped in pwd */
239 1.1 kamil #define SETUIDGID /* substitute eaccess() for access() so that rn */
240 1.1 kamil /* can run setuid or setgid */
241 1.1 kamil /* if not setuid or setgid, you don't need it */
242 1.1 kamil #define VERBOSE /* compile in more informative messages */
243 1.1 kamil #define TERSE /* compile in shorter messages */
244 1.1 kamil
245 1.1 kamil /* some dependencies among options */
246 1.1 kamil
247 1.1 kamil #ifndef SETUIDGID
248 1.1 kamil # define eaccess access
249 1.1 kamil #endif
250 1.1 kamil
251 1.1 kamil #ifdef VERBOSE
252 1.1 kamil # ifdef TERSE
253 1.1 kamil # define IF(c) if (c)
254 1.1 kamil # define ELSE else
255 1.1 kamil # else /* !TERSE */
256 1.1 kamil # define IF(c)
257 1.1 kamil # define ELSE
258 1.1 kamil # endif
259 1.1 kamil #else /* !VERBOSE */
260 1.1 kamil # ifndef TERSE
261 1.1 kamil # define TERSE
262 1.1 kamil # endif
263 1.1 kamil # define IF(c) "IF" outside of VERBOSE???
264 1.1 kamil # define ELSE "ELSE" outside of VERBOSE???
265 1.1 kamil #endif
266 1.1 kamil
267 1.1 kamil #ifdef DEBUGGING
268 1.1 kamil # define assert(ex) {if (!(ex)){fprintf(stderr,"Assertion failed: file %s, line %d\r\n", __FILE__, __LINE__);sig_catcher(0);}}
269 1.1 kamil #else
270 1.1 kamil # define assert(ex) ;
271 1.1 kamil #endif
272 1.1 kamil
273 1.1 kamil #define TCSIZE 512 /* capacity for termcap strings */
274 1.1 kamil
275 1.1 kamil /* End of Space Conservation Section */
276 1.1 kamil
277 1.1 kamil /* More System Dependencies */
278 1.1 kamil
279 1.1 kamil /* preferred shell for use in doshell routine */
280 1.1 kamil /* ksh or sh would be okay here */
281 1.1 kamil #ifndef PREFSHELL
282 1.1 kamil # define PREFSHELL "/bin/csh"
283 1.1 kamil #endif
284 1.1 kamil
285 1.1 kamil /* path to fastest starting shell */
286 1.1 kamil #ifndef SH
287 1.1 kamil # define SH "/bin/sh"
288 1.1 kamil #endif
289 1.1 kamil
290 1.1 kamil /* location of macro file */
291 1.1 kamil #ifndef WARPMACRO
292 1.1 kamil # ifdef PUSHBACK
293 1.1 kamil # define WARPMACRO "%./.warpmac"
294 1.1 kamil # endif
295 1.1 kamil #endif
296 1.1 kamil
297 1.1 kamil /* location of full name */
298 1.1 kamil #ifndef FULLNAMEFILE
299 1.1 kamil # ifndef PASSNAMES
300 1.1 kamil # define FULLNAMEFILE "%./.fullname"
301 1.1 kamil # endif
302 1.1 kamil #endif
303 1.1 kamil
304 1.1 kamil /* a motd-like file for warp */
305 1.1 kamil #ifndef WARPNEWSNAME /* % and ~ */
306 1.1 kamil # define WARPNEWSNAME "%X/warp.news"
307 1.1 kamil #endif
308 1.1 kamil
309 1.1 kamil /* typedefs */
310 1.1 kamil
311 1.1 kamil typedef unsigned int MEM_SIZE; /* for passing to malloc */
312 1.1 kamil
313 1.1 kamil /* *** end of the machine dependent stuff *** */
314 1.1 kamil
315 1.1 kamil /* GLOBAL THINGS */
316 1.1 kamil
317 1.1 kamil /* file statistics area */
318 1.1 kamil
319 1.1 kamil EXT struct stat filestat;
320 1.1 kamil
321 1.1 kamil /* various things of type char */
322 1.1 kamil
323 1.1 kamil char *index();
324 1.1 kamil char *rindex();
325 1.1 kamil char *getenv();
326 1.1 kamil char *strcat();
327 1.1 kamil char *strcpy();
328 1.1 kamil
329 1.1 kamil EXT char buf[LBUFLEN+1]; /* general purpose line buffer */
330 1.1 kamil
331 1.1 kamil EXT char *cwd INIT(Nullch); /* current working directory */
332 1.1 kamil
333 1.1 kamil /* switches */
334 1.1 kamil
335 1.1 kamil #ifdef DEBUGGING
336 1.1 kamil EXT int debug INIT(0); /* -D */
337 1.1 kamil # define DEB_FILEXP 64
338 1.1 kamil #endif
339 1.1 kamil
340 1.1 kamil #ifdef VERBOSE
341 1.1 kamil # ifdef TERSE
342 1.1 kamil EXT bool verbose INIT(TRUE); /* +t */
343 1.1 kamil # endif
344 1.1 kamil #endif
345 1.1 kamil
346 1.1 kamil /* miscellania */
347 1.1 kamil
348 1.1 kamil EXT FILE *tmpfp INIT(Nullfp); /* scratch fp */
349 1.1 kamil
350 1.1 kamil #define NOMARKING 0
351 1.1 kamil #define STANDOUT 1
352 1.1 kamil #define UNDERLINE 2
353 1.1 kamil
354 1.1 kamil /* Factored strings */
355 1.1 kamil
356 1.1 kamil EXT char nullstr[] INIT("");
357 1.1 kamil EXT char readerr[] INIT("warp read error");
358 1.1 kamil EXT char cantopen[] INIT("Can't open %s\r\n");
359 1.1 kamil
360 1.1 kamil #ifdef VERBOSE
361 1.1 kamil EXT char nocd[] INIT("Can't chdir to directory %s\r\n");
362 1.1 kamil #else
363 1.1 kamil EXT char nocd[] INIT("Can't find %s\r\n");
364 1.1 kamil #endif
365 1.1 kamil
366 1.1 kamil extern int errno;
367 1.1 kamil
368 1.1 kamil EXT bool justonemoretime INIT(TRUE);
369 1.1 kamil EXT bool keepgoing INIT(TRUE);
370 1.1 kamil
371 1.1 kamil EXT bool friendspec INIT(FALSE);
372 1.1 kamil EXT bool piratespec INIT(FALSE);
373 1.1 kamil EXT bool amoebaspec INIT(FALSE);
374 1.1 kamil EXT bool starspec INIT(FALSE);
375 1.1 kamil EXT bool klingspec INIT(FALSE);
376 1.1 kamil EXT bool apolspec INIT(FALSE);
377 1.1 kamil EXT bool crushspec INIT(FALSE);
378 1.1 kamil EXT bool romspec INIT(FALSE);
379 1.1 kamil EXT bool prespec INIT(FALSE);
380 1.1 kamil EXT bool tholspec INIT(FALSE);
381 1.1 kamil EXT bool gornspec INIT(FALSE);
382 1.1 kamil EXT bool beginner INIT(FALSE);
383 1.1 kamil EXT bool massacre INIT(FALSE);
384 1.1 kamil EXT bool lowspeed INIT(FALSE);
385 1.1 kamil EXT bool debugging INIT(FALSE);
386 1.1 kamil EXT bool didkill INIT(FALSE);
387 1.1 kamil EXT bool experimenting INIT(FALSE);
388 1.1 kamil EXT bool scorespec INIT(FALSE);
389 1.1 kamil EXT bool metakey INIT(FALSE);
390 1.1 kamil
391 1.1 kamil EXT bool bombed_out;
392 1.1 kamil EXT bool panic INIT(FALSE);
393 1.1 kamil EXT bool madgorns;
394 1.1 kamil
395 1.1 kamil EXT int madfriends;
396 1.1 kamil
397 1.1 kamil EXT int inumpirates;
398 1.1 kamil EXT int numpirates;
399 1.1 kamil EXT int inumfriends;
400 1.1 kamil EXT int numfriends;
401 1.1 kamil EXT int inumamoebas;
402 1.1 kamil EXT int numamoebas;
403 1.1 kamil EXT int inumstars;
404 1.1 kamil EXT int numstars;
405 1.1 kamil EXT int inumenemies;
406 1.1 kamil EXT int numenemies;
407 1.1 kamil EXT int inumroms;
408 1.1 kamil EXT int inumthols;
409 1.1 kamil EXT int inumapollos;
410 1.1 kamil EXT int numapollos;
411 1.1 kamil EXT int apolloflag;
412 1.1 kamil EXT int inumcrushes;
413 1.1 kamil EXT int numcrushes;
414 1.1 kamil EXT int inumgorns;
415 1.1 kamil EXT int numgorns;
416 1.1 kamil EXT int deados;
417 1.1 kamil EXT int deadmudds;
418 1.1 kamil EXT int smarts;
419 1.1 kamil EXT int ismarts INIT(0);
420 1.1 kamil EXT int numos INIT(0);
421 1.1 kamil EXT int numxes INIT(0);
422 1.1 kamil EXT int ient;
423 1.1 kamil EXT int numents;
424 1.1 kamil EXT int ibase;
425 1.1 kamil EXT int numbases;
426 1.1 kamil EXT int inuminhab;
427 1.1 kamil EXT int numinhab;
428 1.1 kamil EXT int wave;
429 1.1 kamil EXT int cumsmarts;
430 1.1 kamil EXT int prescene INIT(-1);
431 1.1 kamil EXT int scandist;
432 1.1 kamil EXT int antibase;
433 1.1 kamil EXT int sm35;
434 1.1 kamil EXT int sm45;
435 1.1 kamil EXT int sm50;
436 1.1 kamil EXT int sm55;
437 1.1 kamil EXT int sm80;
438 1.1 kamil EXT int sm95;
439 1.1 kamil EXT int entmax;
440 1.1 kamil EXT int basemax;
441 1.1 kamil EXT int enemshields;
442 1.1 kamil EXT int super;
443 1.1 kamil EXT int whenok;
444 1.1 kamil EXT int yamblast;
445 1.1 kamil EXT int xamblast;
446 EXT int ambsize;
447
448 EXT char spbuf[512];
449
450 char *index(), *ttyname(), *malloc(), *ctime(), *strcpy();
451 char *getenv(), cmstore(), *tgoto();
452 long atol();
453
454 #define Fclose (void)fclose
455 #define Fflush (void)fflush
456 #define Fgets (void)fgets
457 #define Sprintf (void)sprintf
458 #define Signal (void)signal
459 #define Safecpy (void)safecpy
460 #define Cpytill (void)cpytill
461 #define Tract (void)tract
462 #define Make_object (void)make_object
463 #define Read_tty (void)read_tty
464