1 /*
2 * Copyright (c) 1983, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * %sccs.include.redist.c%
6 */
7
8 #ifndef lint
9 static char sccsid[] = "@(#)pl_2.c 8.1 (Berkeley) 05/31/93";
10 #endif /* not lint */
11
12 #include "player.h"
13
play()14 play()
15 {
16 register struct ship *sp;
17
18 for (;;) {
19 switch (sgetch("~\b", (struct ship *)0, 0)) {
20 case 'm':
21 acceptmove();
22 break;
23 case 's':
24 acceptsignal();
25 break;
26 case 'g':
27 grapungrap();
28 break;
29 case 'u':
30 unfoulplayer();
31 break;
32 case 'v':
33 Signal("%s", (struct ship *)0, version);
34 break;
35 case 'b':
36 acceptboard();
37 break;
38 case 'f':
39 acceptcombat();
40 break;
41 case 'l':
42 loadplayer();
43 break;
44 case 'c':
45 changesail();
46 break;
47 case 'r':
48 repair();
49 break;
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 */
54 break;
55 case '\f':
56 centerview();
57 blockalarm();
58 draw_board();
59 draw_screen();
60 unblockalarm();
61 break;
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.");
83 else
84 eyeball(sp);
85 break;
86 case 'C':
87 centerview();
88 blockalarm();
89 draw_view();
90 unblockalarm();
91 break;
92 case 'U':
93 upview();
94 blockalarm();
95 draw_view();
96 unblockalarm();
97 break;
98 case 'D':
99 case 'N':
100 downview();
101 blockalarm();
102 draw_view();
103 unblockalarm();
104 break;
105 case 'H':
106 leftview();
107 blockalarm();
108 draw_view();
109 unblockalarm();
110 break;
111 case 'J':
112 rightview();
113 blockalarm();
114 draw_view();
115 unblockalarm();
116 break;
117 case 'F':
118 lookout();
119 break;
120 case 'S':
121 dont_adjust = !dont_adjust;
122 blockalarm();
123 draw_turn();
124 unblockalarm();
125 break;
126 }
127 }
128 }
129