Add __attribute__((__noreturn__)) to various function prototypes in games/.
[dragonfly.git] / games / hunt / huntd / server.h
CommitLineData
6693db17 1/*-
82a5c12e
MD
2 * Copyright (c) 1983-2003, Regents of the University of California.
3 * All rights reserved.
6693db17
SW
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
82a5c12e 7 * met:
6693db17
SW
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. 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 * 3. 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.
18 *
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
82a5c12e
MD
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 *
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 $
82a5c12e
MD
33 */
34
35
36#include <stdio.h>
37#include <sys/socket.h>
2e058dd0 38#include <sys/types.h>
82a5c12e
MD
39
40#ifndef __GNUC__
41#define __attribute__(x)
42#endif
43
44/*
45 * Choose MAXPL and MAXMON carefully. The screen is assumed to be
46 * 23 lines high and will only tolerate (MAXPL == 17 && MAXMON == 0)
47 * or (MAXPL + MAXMON <= 16).
48 */
49#define MAXPL 14
50#define MAXMON 2
51#if (MAXPL + MAXMON > 16)
52#warning "MAXPL + MAXMON is excessive"
53#endif
54
55#define MSGLEN SCREEN_WIDTH
56
57#define UBOUND 1
58#define DBOUND (HEIGHT - 1)
59#define LBOUND 1
60#define RBOUND (WIDTH - 1)
61
62#define NASCII 128
63
64/* Layout of the scoreboard: */
65#define STAT_LABEL_COL 60
66#define STAT_VALUE_COL 74
67#define STAT_NAME_COL 61
68#define STAT_SCAN_COL (STAT_NAME_COL + 5)
69#define STAT_AMMO_ROW 0
70#define STAT_GUN_ROW 1
71#define STAT_DAM_ROW 2
72#define STAT_KILL_ROW 3
73#define STAT_PLAY_ROW 5
74#define STAT_MON_ROW (STAT_PLAY_ROW + MAXPL + 1)
75#define STAT_NAME_LEN 18
76
77/* Number of boots: */
78#define NBOOTS 2
79
80/* Bitmask of directions */
81#define NORTH 01
82#define SOUTH 02
83#define EAST 010
84#define WEST 020
85
86# undef CTRL
87#define CTRL(x) ((x) & 037)
88
89#define BULREQ 1 /* 0 */
90#define GRENREQ 9 /* 1 */
91#define SATREQ 25 /* 2 */
92#define BOMB7REQ 49 /* 3 */
93#define BOMB9REQ 81 /* 4 */
94#define BOMB11REQ 121 /* 5 */
95#define BOMB13REQ 169 /* 6 */
96#define BOMB15REQ 225 /* 7 */
97#define BOMB17REQ 289 /* 8 */
98#define BOMB19REQ 361 /* 9 */
99#define BOMB21REQ 441 /* 10 */
100#define MAXBOMB 11
101
102#define SLIMEREQ 5 /* 0 */
103#define SSLIMEREQ 10 /* 1 */
104#define SLIME2REQ 15 /* 2 */
105#define SLIME3REQ 20 /* 3 */
106#define MAXSLIME 4
107
108#define EXPLEN 16
109
110#define _scan_char(pp) (((pp)->p_scan < 0) ? ' ' : '*')
111#define _cloak_char(pp) (((pp)->p_cloak < 0) ? _scan_char(pp) : '+')
112#define stat_char(pp) (((pp)->p_flying < 0) ? _cloak_char(pp) : FLYER)
113
114typedef struct bullet_def BULLET;
115typedef struct expl_def EXPL;
116typedef struct player_def PLAYER;
117typedef struct ident_def IDENT;
118typedef struct regen_def REGEN;
119
120#define ALL_PLAYERS ((PLAYER *)1)
121
122struct ident_def {
123 char i_name[NAMELEN];
124 char i_team;
125 u_int32_t i_machine;
126 uid_t i_uid;
127 float i_kills;
128 int i_entries;
129 float i_score;
130 int i_absorbed;
131 int i_faced;
132 int i_shot;
133 int i_robbed;
134 int i_slime;
135 int i_missed;
136 int i_ducked;
137 int i_gkills, i_bkills, i_deaths, i_stillb, i_saved;
138 IDENT *i_next;
139};
140
141struct player_def {
142 IDENT *p_ident;
143 char p_over;
144 int p_face;
145 int p_undershot;
146 int p_flying;
147 int p_flyx, p_flyy;
148 int p_nboots;
149 FILE *p_output;
150 int p_fd;
151 int p_mask;
152 int p_damage;
153 int p_damcap;
154 int p_ammo;
155 int p_ncshot;
156 int p_scan;
157 int p_cloak;
158 int p_x, p_y;
159 int p_ncount;
160 int p_nexec;
161 long p_nchar;
162 char p_death[MSGLEN];
163 char p_maze[HEIGHT][WIDTH2];
164 int p_curx, p_cury;
165 int p_lastx, p_lasty;
166 char p_cbuf[BUFSIZ];
167};
168
169struct bullet_def {
170 int b_x, b_y;
171 int b_face;
172 int b_charge;
173 char b_type;
174 char b_size;
175 char b_over;
176 PLAYER *b_owner;
177 IDENT *b_score;
178 FLAG b_expl;
179 BULLET *b_next;
180};
181
182struct expl_def {
183 int e_x, e_y;
184 char e_char;
185 EXPL *e_next;
186};
187
188struct regen_def {
189 int r_x, r_y;
190 REGEN *r_next;
191};
192
193struct spawn {
194 int fd;
195 int reading_msg;
196 struct sockaddr source;
197 socklen_t sourcelen;
198 uid_t uid;
199 char name[NAMELEN+1];
200 u_int8_t team;
201 u_int32_t enter_status;
202 char ttyname[NAMELEN];
203 u_int32_t mode;
204 char msg[BUFSIZ];
205 int msglen;
206 struct spawn * next;
207 struct spawn ** prevnext;
208 int inlen;
209 char inbuf[ sizeof (u_int32_t) + NAMELEN +
210 sizeof (u_int8_t) + sizeof (u_int32_t) +
211 NAMELEN + sizeof (u_int32_t) ];
212};
213
214extern struct spawn * Spawn;
215
216extern int Socket;
217
218/* answer.c */
219void answer_first(void);
220int answer_next(struct spawn *);
221int rand_dir(void);
222void answer_info(FILE *);
223
224/* draw.c */
225void drawmaze(PLAYER *);
226void look(PLAYER *);
227void check(PLAYER *, int, int);
228void showstat(PLAYER *);
229void drawplayer(PLAYER *, FLAG);
230void message(PLAYER *, const char *);
231
232/* driver.c */
233int rand_num(int);
234void checkdam(PLAYER *, PLAYER *, IDENT *, int, char);
09ac707a 235void cleanup(int) __dead2;
82a5c12e
MD
236
237/* execute.c */
238void mon_execute(PLAYER *);
239void execute(PLAYER *);
240void add_shot(int, int, int, char, int, PLAYER *, int, char);
241BULLET *create_shot(int, int, int, char, int, int, PLAYER *, IDENT *,
242 int, char);
243void ammo_update(PLAYER *);
244
245/* expl.c */
246void showexpl(int, int, char);
247void rollexpl(void);
248void clearwalls(void);
249int can_rollexpl(void);
250
251/* makemaze.c */
252void makemaze(void);
253
254/* shots.c */
255int can_moveshots(void);
256void moveshots(void);
257PLAYER *play_at(int, int);
258int opposite(int, char);
259BULLET *is_bullet(int, int);
260void fixshots(int, int, char);
261
262/* terminal.c */
263void cgoto(PLAYER *, int, int);
264void outch(PLAYER *, char);
265void outstr(PLAYER *, const char *, int);
266void outyx(PLAYER *, int, int, const char *, ...)
267 __attribute__((format (printf, 4, 5)));
268void clrscr(PLAYER *);
269void ce(PLAYER *);
270void sendcom(PLAYER *, int, ...);
271void flush(PLAYER *);
272void logit(int, const char *, ...)
273 __attribute__((format (printf, 2, 3)));
274void logx(int, const char *, ...)
275 __attribute__((format (printf, 2, 3)));
276
277/* extern.c */
278extern FLAG Am_monitor;
279extern char Buf[BUFSIZ];
280extern char Maze[HEIGHT][WIDTH2];
281extern char Orig_maze[HEIGHT][WIDTH2];
282extern fd_set Fds_mask;
283extern fd_set Have_inp;
284extern int Nplayer;
285extern int Num_fds;
286extern int Status;
287extern int See_over[NASCII];
288extern BULLET * Bullets;
289extern EXPL * Expl[EXPLEN];
290extern EXPL * Last_expl;
291extern PLAYER Player[MAXPL];
292extern PLAYER * End_player;
293extern PLAYER Boot[NBOOTS];
294extern IDENT * Scores;
295extern PLAYER Monitor[MAXMON];
296extern PLAYER * End_monitor;
297extern int volcano;
298extern int shot_req[MAXBOMB];
299extern int shot_type[MAXBOMB];
300extern int slime_req[MAXSLIME];