Fixed up so all targets are made at once.
[unix-history] / usr / src / games / sail / pl_2.c
CommitLineData
b5f0675e 1/*
1e008c14 2 * Copyright (c) 1983 Regents of the University of California.
c0ca48ec
KB
3 * All rights reserved.
4 *
b2e7427f 5 * %sccs.include.redist.c%
b5f0675e
EW
6 */
7
5f9f07ce 8#ifndef lint
b2e7427f 9static char sccsid[] = "@(#)pl_2.c 5.4 (Berkeley) %G%";
c0ca48ec 10#endif /* not lint */
7fc06086 11
5f9f07ce
CL
12#include "player.h"
13
fe0cae24 14play()
5f9f07ce 15{
fe0cae24 16 register struct ship *sp;
5f9f07ce 17
fe0cae24
EW
18 for (;;) {
19 switch (sgetch("~\b", (struct ship *)0, 0)) {
20 case 'm':
21 acceptmove();
b3a57661 22 break;
fe0cae24
EW
23 case 's':
24 acceptsignal();
b3a57661 25 break;
fe0cae24
EW
26 case 'g':
27 grapungrap();
b3a57661 28 break;
fe0cae24
EW
29 case 'u':
30 unfoulplayer();
b3a57661 31 break;
fe0cae24
EW
32 case 'v':
33 Signal("%s", (struct ship *)0, version);
b3a57661 34 break;
fe0cae24
EW
35 case 'b':
36 acceptboard();
b3a57661 37 break;
fe0cae24
EW
38 case 'f':
39 acceptcombat();
40 break;
41 case 'l':
42 loadplayer();
43 break;
44 case 'c':
45 changesail();
b3a57661
EW
46 break;
47 case 'r':
fe0cae24 48 repair();
b3a57661 49 break;
fe0cae24
EW
50 case 'B':
51 Signal("'Hands to stations!'", (struct ship *)0);
52 unboard(ms, ms, 1); /* cancel DBP's */
53 unboard(ms, ms, 0); /* cancel offense */
b3a57661 54 break;
fe0cae24
EW
55 case '\f':
56 centerview();
490c485f 57 blockalarm();
fe0cae24
EW
58 draw_board();
59 draw_screen();
490c485f 60 unblockalarm();
b3a57661 61 break;
fe0cae24
EW
62 case 'L':
63 mf->loadL = L_EMPTY;
64 mf->loadR = L_EMPTY;
65 mf->readyL = R_EMPTY;
66 mf->readyR = R_EMPTY;
67 Signal("Broadsides unloaded", (struct ship *)0);
68 break;
69 case 'q':
70 Signal("Type 'Q' to quit", (struct ship *)0);
71 break;
72 case 'Q':
73 leave(LEAVE_QUIT);
74 break;
75 case 'I':
76 foreachship(sp)
77 if (sp != ms)
78 eyeball(sp);
79 break;
80 case 'i':
81 if ((sp = closestenemy(ms, 0, 1)) == 0)
82 Signal("No more ships left.");
b3a57661 83 else
fe0cae24 84 eyeball(sp);
b3a57661 85 break;
fe0cae24
EW
86 case 'C':
87 centerview();
490c485f 88 blockalarm();
fe0cae24 89 draw_view();
490c485f 90 unblockalarm();
5f9f07ce 91 break;
fe0cae24
EW
92 case 'U':
93 upview();
490c485f 94 blockalarm();
fe0cae24 95 draw_view();
490c485f 96 unblockalarm();
5f9f07ce 97 break;
fe0cae24
EW
98 case 'D':
99 case 'N':
100 downview();
490c485f 101 blockalarm();
fe0cae24 102 draw_view();
490c485f 103 unblockalarm();
5f9f07ce 104 break;
fe0cae24
EW
105 case 'H':
106 leftview();
490c485f 107 blockalarm();
fe0cae24 108 draw_view();
490c485f 109 unblockalarm();
fe0cae24
EW
110 break;
111 case 'J':
112 rightview();
490c485f 113 blockalarm();
fe0cae24 114 draw_view();
490c485f 115 unblockalarm();
fe0cae24
EW
116 break;
117 case 'F':
118 lookout();
119 break;
120 case 'S':
121 dont_adjust = !dont_adjust;
490c485f 122 blockalarm();
04bbf8e2 123 draw_turn();
490c485f 124 unblockalarm();
5f9f07ce 125 break;
b3a57661 126 }
5f9f07ce 127 }
5f9f07ce 128}