games - hunt - minor include fix for portability.
[dragonfly.git] / games / hunt / huntd / server.h
bloba7a7ddd2dce76257ad8ab3ee38f235338860465d
1 /*
2 * Copyright (c) 1983-2003, Regents of the University of California.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met:
8 *
9 * + Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * + Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * + Neither the name of the University of California, San Francisco nor
15 * the names of its contributors may be used to endorse or promote
16 * products derived from this software without specific prior written
17 * permission.
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
22 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 * $OpenBSD: server.h,v 1.9 2004/01/16 00:13:19 espie Exp $
32 * $NetBSD: hunt.h,v 1.5 1998/09/13 15:27:28 hubertf Exp $
33 * $DragonFly: src/games/hunt/huntd/server.h,v 1.1 2008/09/02 21:50:21 dillon Exp $
37 #include <stdio.h>
38 #include <sys/socket.h>
39 #include <sys/types.h>
41 #ifndef __GNUC__
42 #define __attribute__(x)
43 #endif
46 * Choose MAXPL and MAXMON carefully. The screen is assumed to be
47 * 23 lines high and will only tolerate (MAXPL == 17 && MAXMON == 0)
48 * or (MAXPL + MAXMON <= 16).
50 #define MAXPL 14
51 #define MAXMON 2
52 #if (MAXPL + MAXMON > 16)
53 #warning "MAXPL + MAXMON is excessive"
54 #endif
56 #define MSGLEN SCREEN_WIDTH
58 #define UBOUND 1
59 #define DBOUND (HEIGHT - 1)
60 #define LBOUND 1
61 #define RBOUND (WIDTH - 1)
63 #define NASCII 128
65 /* Layout of the scoreboard: */
66 #define STAT_LABEL_COL 60
67 #define STAT_VALUE_COL 74
68 #define STAT_NAME_COL 61
69 #define STAT_SCAN_COL (STAT_NAME_COL + 5)
70 #define STAT_AMMO_ROW 0
71 #define STAT_GUN_ROW 1
72 #define STAT_DAM_ROW 2
73 #define STAT_KILL_ROW 3
74 #define STAT_PLAY_ROW 5
75 #define STAT_MON_ROW (STAT_PLAY_ROW + MAXPL + 1)
76 #define STAT_NAME_LEN 18
78 /* Number of boots: */
79 #define NBOOTS 2
81 /* Bitmask of directions */
82 #define NORTH 01
83 #define SOUTH 02
84 #define EAST 010
85 #define WEST 020
87 # undef CTRL
88 #define CTRL(x) ((x) & 037)
90 #define BULREQ 1 /* 0 */
91 #define GRENREQ 9 /* 1 */
92 #define SATREQ 25 /* 2 */
93 #define BOMB7REQ 49 /* 3 */
94 #define BOMB9REQ 81 /* 4 */
95 #define BOMB11REQ 121 /* 5 */
96 #define BOMB13REQ 169 /* 6 */
97 #define BOMB15REQ 225 /* 7 */
98 #define BOMB17REQ 289 /* 8 */
99 #define BOMB19REQ 361 /* 9 */
100 #define BOMB21REQ 441 /* 10 */
101 #define MAXBOMB 11
103 #define SLIMEREQ 5 /* 0 */
104 #define SSLIMEREQ 10 /* 1 */
105 #define SLIME2REQ 15 /* 2 */
106 #define SLIME3REQ 20 /* 3 */
107 #define MAXSLIME 4
109 #define EXPLEN 16
111 #define _scan_char(pp) (((pp)->p_scan < 0) ? ' ' : '*')
112 #define _cloak_char(pp) (((pp)->p_cloak < 0) ? _scan_char(pp) : '+')
113 #define stat_char(pp) (((pp)->p_flying < 0) ? _cloak_char(pp) : FLYER)
115 typedef struct bullet_def BULLET;
116 typedef struct expl_def EXPL;
117 typedef struct player_def PLAYER;
118 typedef struct ident_def IDENT;
119 typedef struct regen_def REGEN;
121 #define ALL_PLAYERS ((PLAYER *)1)
123 struct ident_def {
124 char i_name[NAMELEN];
125 char i_team;
126 u_int32_t i_machine;
127 uid_t i_uid;
128 float i_kills;
129 int i_entries;
130 float i_score;
131 int i_absorbed;
132 int i_faced;
133 int i_shot;
134 int i_robbed;
135 int i_slime;
136 int i_missed;
137 int i_ducked;
138 int i_gkills, i_bkills, i_deaths, i_stillb, i_saved;
139 IDENT *i_next;
142 struct player_def {
143 IDENT *p_ident;
144 char p_over;
145 int p_face;
146 int p_undershot;
147 int p_flying;
148 int p_flyx, p_flyy;
149 int p_nboots;
150 FILE *p_output;
151 int p_fd;
152 int p_mask;
153 int p_damage;
154 int p_damcap;
155 int p_ammo;
156 int p_ncshot;
157 int p_scan;
158 int p_cloak;
159 int p_x, p_y;
160 int p_ncount;
161 int p_nexec;
162 long p_nchar;
163 char p_death[MSGLEN];
164 char p_maze[HEIGHT][WIDTH2];
165 int p_curx, p_cury;
166 int p_lastx, p_lasty;
167 char p_cbuf[BUFSIZ];
170 struct bullet_def {
171 int b_x, b_y;
172 int b_face;
173 int b_charge;
174 char b_type;
175 char b_size;
176 char b_over;
177 PLAYER *b_owner;
178 IDENT *b_score;
179 FLAG b_expl;
180 BULLET *b_next;
183 struct expl_def {
184 int e_x, e_y;
185 char e_char;
186 EXPL *e_next;
189 struct regen_def {
190 int r_x, r_y;
191 REGEN *r_next;
194 struct spawn {
195 int fd;
196 int reading_msg;
197 struct sockaddr source;
198 socklen_t sourcelen;
199 uid_t uid;
200 char name[NAMELEN+1];
201 u_int8_t team;
202 u_int32_t enter_status;
203 char ttyname[NAMELEN];
204 u_int32_t mode;
205 char msg[BUFSIZ];
206 int msglen;
207 struct spawn * next;
208 struct spawn ** prevnext;
209 int inlen;
210 char inbuf[ sizeof (u_int32_t) + NAMELEN +
211 sizeof (u_int8_t) + sizeof (u_int32_t) +
212 NAMELEN + sizeof (u_int32_t) ];
215 extern struct spawn * Spawn;
217 extern int Socket;
219 /* answer.c */
220 void answer_first(void);
221 int answer_next(struct spawn *);
222 int rand_dir(void);
223 void answer_info(FILE *);
225 /* draw.c */
226 void drawmaze(PLAYER *);
227 void look(PLAYER *);
228 void check(PLAYER *, int, int);
229 void showstat(PLAYER *);
230 void drawplayer(PLAYER *, FLAG);
231 void message(PLAYER *, const char *);
233 /* driver.c */
234 int rand_num(int);
235 void checkdam(PLAYER *, PLAYER *, IDENT *, int, char);
236 void cleanup(int);
238 /* execute.c */
239 void mon_execute(PLAYER *);
240 void execute(PLAYER *);
241 void add_shot(int, int, int, char, int, PLAYER *, int, char);
242 BULLET *create_shot(int, int, int, char, int, int, PLAYER *, IDENT *,
243 int, char);
244 void ammo_update(PLAYER *);
246 /* expl.c */
247 void showexpl(int, int, char);
248 void rollexpl(void);
249 void clearwalls(void);
250 int can_rollexpl(void);
252 /* makemaze.c */
253 void makemaze(void);
255 /* shots.c */
256 int can_moveshots(void);
257 void moveshots(void);
258 PLAYER *play_at(int, int);
259 int opposite(int, char);
260 BULLET *is_bullet(int, int);
261 void fixshots(int, int, char);
263 /* terminal.c */
264 void cgoto(PLAYER *, int, int);
265 void outch(PLAYER *, char);
266 void outstr(PLAYER *, const char *, int);
267 void outyx(PLAYER *, int, int, const char *, ...)
268 __attribute__((format (printf, 4, 5)));
269 void clrscr(PLAYER *);
270 void ce(PLAYER *);
271 void sendcom(PLAYER *, int, ...);
272 void flush(PLAYER *);
273 void logit(int, const char *, ...)
274 __attribute__((format (printf, 2, 3)));
275 void logx(int, const char *, ...)
276 __attribute__((format (printf, 2, 3)));
278 /* extern.c */
279 extern FLAG Am_monitor;
280 extern char Buf[BUFSIZ];
281 extern char Maze[HEIGHT][WIDTH2];
282 extern char Orig_maze[HEIGHT][WIDTH2];
283 extern fd_set Fds_mask;
284 extern fd_set Have_inp;
285 extern int Nplayer;
286 extern int Num_fds;
287 extern int Status;
288 extern int See_over[NASCII];
289 extern BULLET * Bullets;
290 extern EXPL * Expl[EXPLEN];
291 extern EXPL * Last_expl;
292 extern PLAYER Player[MAXPL];
293 extern PLAYER * End_player;
294 extern PLAYER Boot[NBOOTS];
295 extern IDENT * Scores;
296 extern PLAYER Monitor[MAXMON];
297 extern PLAYER * End_monitor;
298 extern int volcano;
299 extern int shot_req[MAXBOMB];
300 extern int shot_type[MAXBOMB];
301 extern int slime_req[MAXSLIME];