1 /* $NetBSD: hunt.h,v 1.32 2021/05/02 12:50:45 rillig Exp $ */ 2 3 /* 4 * Copyright (c) 1983-2003, Regents of the University of California. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions are 9 * met: 10 * 11 * + Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * + Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * + Neither the name of the University of California, San Francisco nor 17 * the names of its contributors may be used to endorse or promote 18 * products derived from this software without specific prior written 19 * permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 22 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 23 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 24 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34 #include <stdbool.h> 35 #include <stdio.h> 36 #include <string.h> 37 #include <syslog.h> 38 39 #include <sys/ioctl.h> 40 #include <sys/types.h> 41 #include <sys/uio.h> 42 #include <sys/poll.h> 43 44 #include "hunt_common.h" 45 46 extern const int shot_req[]; 47 extern const int shot_type[]; 48 #ifdef OOZE 49 extern const int slime_req[]; 50 #endif 51 52 typedef struct bullet_def BULLET; 53 typedef struct expl_def EXPL; 54 typedef struct player_def PLAYER; 55 typedef struct ident_def IDENT; 56 typedef struct regen_def REGEN; 57 58 struct ident_def { 59 char i_name[WIRE_NAMELEN]; 60 char i_team; 61 uint32_t i_machine; 62 uint32_t i_uid; 63 float i_kills; 64 int i_entries; 65 float i_score; 66 int i_absorbed; 67 int i_faced; 68 int i_shot; 69 int i_robbed; 70 int i_slime; 71 int i_missed; 72 int i_ducked; 73 int i_gkills, i_bkills, i_deaths, i_stillb, i_saved; 74 IDENT *i_next; 75 }; 76 77 struct player_def { 78 IDENT *p_ident; 79 char p_over; 80 int p_face; 81 int p_undershot; 82 #ifdef FLY 83 int p_flying; 84 int p_flyx, p_flyy; 85 #endif 86 #ifdef BOOTS 87 int p_nboots; 88 #endif 89 FILE *p_output; 90 int p_fd; 91 int p_mask; 92 int p_damage; 93 int p_damcap; 94 int p_ammo; 95 int p_ncshot; 96 int p_scan; 97 int p_cloak; 98 int p_x, p_y; 99 int p_ncount; 100 int p_nexec; 101 long p_nchar; 102 char p_death[MSGLEN]; 103 char p_maze[HEIGHT][WIDTH2]; 104 int p_curx, p_cury; 105 int p_lastx, p_lasty; 106 char p_cbuf[BUFSIZ]; 107 }; 108 109 struct bullet_def { 110 int b_x, b_y; 111 int b_face; 112 int b_charge; 113 char b_type; 114 char b_size; 115 char b_over; 116 PLAYER *b_owner; 117 IDENT *b_score; 118 bool b_expl; 119 BULLET *b_next; 120 }; 121 122 struct expl_def { 123 int e_x, e_y; 124 char e_char; 125 EXPL *e_next; 126 }; 127 128 struct regen_def { 129 int r_x, r_y; 130 REGEN *r_next; 131 }; 132 133 /* 134 * external variables 135 */ 136 137 extern char Buf[BUFSIZ], Maze[HEIGHT][WIDTH2], Orig_maze[HEIGHT][WIDTH2]; 138 139 extern int Nplayer; 140 extern int huntsock; 141 extern struct pollfd fdset[]; 142 143 extern int See_over[NASCII]; 144 145 extern BULLET *Bullets; 146 147 extern IDENT *Scores; 148 149 extern PLAYER Player[MAXPL], *End_player; 150 #ifdef BOOTS 151 extern PLAYER Boot[NBOOTS]; 152 #endif 153 154 #ifdef MONITOR 155 extern PLAYER Monitor[MAXMON], *End_monitor; 156 #endif 157 158 /* 159 * function types 160 */ 161 162 /* in answer.c */ 163 bool answer(void); 164 int rand_dir(void); 165 166 /* in draw.c */ 167 void drawmaze(PLAYER *); 168 void look(PLAYER *); 169 void check(PLAYER *, int, int); 170 void showstat(PLAYER *); 171 void drawplayer(PLAYER *, bool); 172 void message(PLAYER *, const char *); 173 174 /* in driver.c */ 175 void checkdam(PLAYER *, PLAYER *, IDENT *, int, char); 176 int rand_num(int); 177 __dead void cleanup(int); 178 179 /* in execute.c */ 180 void mon_execute(PLAYER *); /* ifdef MONITOR only */ 181 void execute(PLAYER *); 182 void add_shot(int, int, int, char, int, PLAYER *, int, char); 183 BULLET *create_shot(int, int, int, char, int, int, PLAYER *, 184 IDENT *, int, char); 185 186 /* in expl.c */ 187 void showexpl(int, int, char); 188 void rollexpl(void); 189 void clearwalls(void); 190 191 /* in makemaze.c */ 192 void makemaze(void); 193 194 /* in shots.c */ 195 void moveshots(void); 196 PLAYER *play_at(int, int); 197 bool opposite(int, char); 198 BULLET *is_bullet(int, int); 199 void fixshots(int, int, char); 200 201 /* in support.c */ 202 __printflike(2, 3) void complain(int level, const char *fmt, ...); 203 204 /* in terminal.c */ 205 void cgoto(PLAYER *, int, int); 206 void outch(PLAYER *, int); 207 void outstr(PLAYER *, const char *, int); 208 void clrscr(PLAYER *); 209 void ce(PLAYER *); 210 void sendcom(PLAYER *, int, ...); 211