xref: /netbsd/games/sail/pl_2.c (revision e5aeb4ea)
1*e5aeb4eaSagc /*	$NetBSD: pl_2.c,v 1.11 2003/08/07 09:37:43 agc Exp $	*/
2982615d7Scgd 
361f28255Scgd /*
4982615d7Scgd  * Copyright (c) 1983, 1993
5982615d7Scgd  *	The Regents of the University of California.  All rights reserved.
661f28255Scgd  *
761f28255Scgd  * Redistribution and use in source and binary forms, with or without
861f28255Scgd  * modification, are permitted provided that the following conditions
961f28255Scgd  * are met:
1061f28255Scgd  * 1. Redistributions of source code must retain the above copyright
1161f28255Scgd  *    notice, this list of conditions and the following disclaimer.
1261f28255Scgd  * 2. Redistributions in binary form must reproduce the above copyright
1361f28255Scgd  *    notice, this list of conditions and the following disclaimer in the
1461f28255Scgd  *    documentation and/or other materials provided with the distribution.
15*e5aeb4eaSagc  * 3. Neither the name of the University nor the names of its contributors
1661f28255Scgd  *    may be used to endorse or promote products derived from this software
1761f28255Scgd  *    without specific prior written permission.
1861f28255Scgd  *
1961f28255Scgd  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
2061f28255Scgd  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2161f28255Scgd  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2261f28255Scgd  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2361f28255Scgd  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2461f28255Scgd  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2561f28255Scgd  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2661f28255Scgd  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2761f28255Scgd  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2861f28255Scgd  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2961f28255Scgd  * SUCH DAMAGE.
3061f28255Scgd  */
3161f28255Scgd 
32bf72b656Schristos #include <sys/cdefs.h>
3361f28255Scgd #ifndef lint
34982615d7Scgd #if 0
35982615d7Scgd static char sccsid[] = "@(#)pl_2.c	8.1 (Berkeley) 5/31/93";
36982615d7Scgd #else
37*e5aeb4eaSagc __RCSID("$NetBSD: pl_2.c,v 1.11 2003/08/07 09:37:43 agc Exp $");
38982615d7Scgd #endif
3961f28255Scgd #endif /* not lint */
4061f28255Scgd 
4161a39e0bSjwise #include <signal.h>
429baf035bSjwise #include "extern.h"
4361f28255Scgd #include "player.h"
4461f28255Scgd 
45bf72b656Schristos void
46dfea9f08Sjwise play(void)
4761f28255Scgd {
48bf72b656Schristos 	struct ship *sp;
4961f28255Scgd 
5061f28255Scgd 	for (;;) {
5161f28255Scgd 		switch (sgetch("~\b", (struct ship *)0, 0)) {
5261f28255Scgd 		case 'm':
5361f28255Scgd 			acceptmove();
5461f28255Scgd 			break;
5561f28255Scgd 		case 's':
5661f28255Scgd 			acceptsignal();
5761f28255Scgd 			break;
5861f28255Scgd 		case 'g':
5961f28255Scgd 			grapungrap();
6061f28255Scgd 			break;
6161f28255Scgd 		case 'u':
6261f28255Scgd 			unfoulplayer();
6361f28255Scgd 			break;
6461f28255Scgd 		case 'v':
65bf72b656Schristos 			Msg("%s", version);
6661f28255Scgd 			break;
6761f28255Scgd 		case 'b':
6861f28255Scgd 			acceptboard();
6961f28255Scgd 			break;
7061f28255Scgd 		case 'f':
7161f28255Scgd 			acceptcombat();
7261f28255Scgd 			break;
7361f28255Scgd 		case 'l':
7461f28255Scgd 			loadplayer();
7561f28255Scgd 			break;
7661f28255Scgd 		case 'c':
7761f28255Scgd 			changesail();
7861f28255Scgd 			break;
7961f28255Scgd 		case 'r':
8061f28255Scgd 			repair();
8161f28255Scgd 			break;
8261f28255Scgd 		case 'B':
83bf72b656Schristos 			Msg("'Hands to stations!'");
8461f28255Scgd 			unboard(ms, ms, 1);	/* cancel DBP's */
8561f28255Scgd 			unboard(ms, ms, 0);	/* cancel offense */
8661f28255Scgd 			break;
8761f28255Scgd 		case '\f':
8861f28255Scgd 			centerview();
8961f28255Scgd 			blockalarm();
9061f28255Scgd 			draw_board();
9161f28255Scgd 			draw_screen();
9261f28255Scgd 			unblockalarm();
9361f28255Scgd 			break;
9461f28255Scgd 		case 'L':
9561f28255Scgd 			mf->loadL = L_EMPTY;
9661f28255Scgd 			mf->loadR = L_EMPTY;
9761f28255Scgd 			mf->readyL = R_EMPTY;
9861f28255Scgd 			mf->readyR = R_EMPTY;
99bf72b656Schristos 			Msg("Broadsides unloaded");
10061f28255Scgd 			break;
10161f28255Scgd 		case 'q':
102bf72b656Schristos 			Msg("Type 'Q' to quit");
10361f28255Scgd 			break;
10461f28255Scgd 		case 'Q':
10561f28255Scgd 			leave(LEAVE_QUIT);
10661f28255Scgd 			break;
10761f28255Scgd 		case 'I':
10861f28255Scgd 			foreachship(sp)
10961f28255Scgd 				if (sp != ms)
11061f28255Scgd 					eyeball(sp);
11161f28255Scgd 			break;
11261f28255Scgd 		case 'i':
11361f28255Scgd 			if ((sp = closestenemy(ms, 0, 1)) == 0)
114bf72b656Schristos 				Msg("No more ships left.");
11561f28255Scgd 			else
11661f28255Scgd 				eyeball(sp);
11761f28255Scgd 			break;
11861f28255Scgd 		case 'C':
11961f28255Scgd 			centerview();
12061f28255Scgd 			blockalarm();
12161f28255Scgd 			draw_view();
12261f28255Scgd 			unblockalarm();
12361f28255Scgd 			break;
12461f28255Scgd 		case 'U':
12561f28255Scgd 			upview();
12661f28255Scgd 			blockalarm();
12761f28255Scgd 			draw_view();
12861f28255Scgd 			unblockalarm();
12961f28255Scgd 			break;
13061f28255Scgd 		case 'D':
13161f28255Scgd 		case 'N':
13261f28255Scgd 			downview();
13361f28255Scgd 			blockalarm();
13461f28255Scgd 			draw_view();
13561f28255Scgd 			unblockalarm();
13661f28255Scgd 			break;
13761f28255Scgd 		case 'H':
13861f28255Scgd 			leftview();
13961f28255Scgd 			blockalarm();
14061f28255Scgd 			draw_view();
14161f28255Scgd 			unblockalarm();
14261f28255Scgd 			break;
14361f28255Scgd 		case 'J':
14461f28255Scgd 			rightview();
14561f28255Scgd 			blockalarm();
14661f28255Scgd 			draw_view();
14761f28255Scgd 			unblockalarm();
14861f28255Scgd 			break;
14961f28255Scgd 		case 'F':
15061f28255Scgd 			lookout();
15161f28255Scgd 			break;
15261f28255Scgd 		case 'S':
15361f28255Scgd 			dont_adjust = !dont_adjust;
15461f28255Scgd 			blockalarm();
15561f28255Scgd 			draw_turn();
15661f28255Scgd 			unblockalarm();
15761f28255Scgd 			break;
15861f28255Scgd 		}
15961f28255Scgd 	}
16061f28255Scgd }
161