3
|
1 /* $Id: defs.h,v 1.1.1.1 1997/12/06 05:41:29 darius Exp $ */
|
|
2
|
|
3 /*
|
|
4 * defs.h
|
|
5 */
|
|
6
|
|
7 #ifndef defs_h_
|
|
8 #define defs_h_
|
|
9
|
|
10 #include "copyright.h"
|
|
11
|
|
12 #define MAX_PLAYER 257 /* Maximum number of players we can configure
|
|
13 the game for, not the server's max
|
|
14 players. */
|
|
15
|
|
16 #ifdef HOCKEY
|
|
17 /* defs for hockey [BDyess] */
|
|
18 #define NUM_HOCKEY_LINES 13
|
|
19 #endif /*HOCKEY*/
|
|
20
|
|
21 #ifdef SIZE_LOGGING
|
|
22 /* redefine EXIT as print totals followed by a normal exit [BDyess] */
|
|
23 #define EXIT(x) {print_totals();exit(x);}
|
|
24 #else
|
|
25 #define EXIT exit
|
|
26 #endif /* SIZE_LOGGING */
|
|
27
|
|
28 /* defs for new message window data structure [BDyess] */
|
|
29 #define WREVIEW 0
|
|
30 #define WTEAM 1
|
|
31 #define WINDIV 2
|
|
32 #define WKILL 3
|
|
33 #define WPHASER 4
|
|
34 #define WALL 5
|
|
35 #define WNUM 6
|
|
36 /* message window allow mask */
|
|
37 #define WA_TEAM 1
|
|
38 #define WA_INDIV 2
|
|
39 #define WA_KILL 4
|
|
40 #define WA_PHASER 8
|
|
41 #define WA_ALL 16
|
|
42 #define WA_REVIEW 32
|
|
43 #define WA_MACRO 64
|
|
44
|
|
45 /* defs for updatePlayer [BDyess] */
|
|
46 #define NO_UPDATE 0
|
|
47 #define SMALL_UPDATE 1 /* update non-blk_bozo players */
|
|
48 #define LARGE_UPDATE 2 /* update blk_bozo players */
|
|
49 #define ALL_UPDATE (SMALL_UPDATE|LARGE_UPDATE) /* update both */
|
|
50
|
|
51 /* defs for terrain */
|
|
52 #define TERRAIN_STARTED 1
|
|
53 #define TERRAIN_DONE 2
|
|
54
|
|
55 /* defs for timer [BDyess] */
|
|
56 #define T_NONE 0 /* no timer */
|
|
57 #define T_DAY 1 /* time of day */
|
|
58 #define T_SERVER 2 /* time on server */
|
|
59 #define T_SHIP 3 /* time in ship */
|
|
60 #define T_USR 4 /* user reset timer */
|
|
61 #define T_TOTAL 5 /* number of T_ defs */
|
|
62 #define TIMESTRLEN 10 /* used in db_timer(), timeString() */
|
|
63 /* */
|
|
64
|
|
65 /* defs for mapmode */
|
|
66 #define GMAP_NEVER 0
|
|
67 #define GMAP_FREQUENT 1
|
|
68 #define GMAP_INFREQUENT 2
|
|
69
|
|
70 #ifdef METASERVER
|
|
71 /* metaserver window defs */
|
|
72 #define LINE 80
|
|
73 #define METASERVERADDRESS "metaserver.ecst.csuchico.edu" /* new metaserver */
|
|
74 #define METAPORT 3521 /* HAVE to use nicely formated version */
|
|
75 #define KEY 3
|
|
76 #endif /* METASERVER */
|
|
77
|
|
78 #define MAX_PLANETS 257
|
|
79
|
|
80 #define WINSIDE 500 /* Size of strategic and tactical windows */
|
|
81 #define BORDER 4 /* border width for option windows */
|
|
82 #define PSEUDOSIZE 16
|
|
83 #define CLOAK_PHASES 7 /* number of drawing phases in a cloak
|
|
84 engage/disengage */
|
|
85 #define NUMRANKS 9 /* old netrek ranks */
|
|
86 /*#define NUMRANKS2 18*/
|
|
87
|
|
88 /* These are configuration definitions */
|
|
89
|
|
90 #define GWIDTH 200000 /* galaxy is 200000 spaces on a side */
|
|
91 #define WARP1 20 /* warp one will move 20 spaces per update */
|
|
92 #define SCALE 40 /* Window will be one pixel for 20 spaces */
|
|
93 #define EXPDIST 350 /* At this range a torp will explode */
|
|
94 #define GRIDSIZE 33333
|
|
95
|
|
96 #define DETDIST 1600 /* At this range a player can detonate a torp */
|
|
97
|
|
98 #define PHASEDIST 6000 /* At this range a player can do damage with
|
|
99 phasers */
|
|
100 #define ENTORBDIST 900 /* At this range a player can orbit a planet */
|
|
101 #define ORBDIST 800 /* A player will orbit at this radius */
|
|
102 #define ORBSPEED 2 /* This is the fastest a person can go into
|
|
103 orbit */
|
|
104 #define PFIREDIST 1500 /* At this range a planet will shoot at a
|
|
105 player */
|
|
106 #define UPDATE 100000 /* Update time is 100000 micro-seconds */
|
|
107
|
|
108 #define AUTOQUIT 60 /* auto logout in 60 secs */
|
|
109
|
|
110 #define VACANT -1 /* indicates vacant port on a starbase */
|
|
111 #define DOCKDIST 600
|
|
112 #define DOCKSPEED 2 /* If base is moving, there will be some
|
|
113 finesse involved to dock */
|
|
114 #define NUMPORTS 4
|
|
115 #define SBFUELMIN 10000 /* If starbase's fuel is less than this, it
|
|
116 will not refuel docked vessels */
|
|
117 #define TRACTDIST 6000 /* maximum effective tractor beam range */
|
|
118 #define TRACTEHEAT 5 /* ammount tractor beams heat engines */
|
|
119 #define TRACTCOST 20 /* fuel cost of activated tractor beam */
|
|
120
|
|
121 /* These are memory sections */
|
|
122 #define PLAYER 1
|
|
123 #define MAXMESSAGE 50
|
|
124 #define MAXREVIEWMESSAGE 20
|
|
125
|
|
126 #ifdef SVR4
|
|
127 #define MCOPY(b1,b2,l) memcpy(b2,b1,l)
|
|
128 #else
|
|
129 #define MCOPY(b1,b2,l) bcopy(b1,b2,l)
|
|
130 #endif
|
|
131 #define rosette(x, ndiv) (( (((x)&0xff) + 0x100/(2*(ndiv))) * (ndiv)/0x100 ) % ndiv)
|
|
132
|
|
133 /* These are the teams */
|
|
134 /* Note that I used bit types for these mostly for messages and
|
|
135 war status. This was probably a mistake. It meant that Ed
|
|
136 had to add the 'remap' area to map these (which are used throughout
|
|
137 the code as the proper team variable) into a nice four team deep
|
|
138 array for his color stuff. Oh well.
|
|
139 */
|
|
140 #define NOBODY 0x0
|
|
141 #define FEDi 0
|
|
142 #define ROMi 1
|
|
143 #define KLIi 2
|
|
144 #define ORIi 3
|
|
145 /* #define ALLTEAMi 4 *//* replaced by number_of_teams */
|
|
146 #define FEDm 0x1
|
|
147 #define ROMm 0x2
|
|
148 #define KLIm 0x4
|
|
149 #define ORIm 0x8
|
|
150 #define ALLTEAM ( (1<<number_of_teams) - 1)
|
|
151 /*#define MAXTEAM 3 *//* number_of_teams -1 */
|
|
152 /*#define NUMTEAM 4 *//* number_of_teams */
|
|
153 /*
|
|
154 ** These are random configuration variables
|
|
155 */
|
|
156 #define VICTORY 3 /* Number of systems needed to conquer the
|
|
157 galaxy */
|
|
158 #define WARNTIME 30 /* Number of updates to have a warning on the
|
|
159 screen */
|
|
160 #define MESSTIME 30 /* Number of updates to have a message on the
|
|
161 screen */
|
|
162
|
|
163 /* Flags for gettarget */
|
|
164 #define TARG_SHIP (1<<0)
|
|
165 #define TARG_BASE (1<<1)
|
|
166 #define TARG_PLANET (1<<2)
|
|
167 #define TARG_CLOAK (1<<3) /* Include cloaked ships in search */
|
|
168 #define TARG_SELF (1<<4)
|
|
169 #define TARG_ENEMY (1<<5) /* enemy ships/planets only */
|
|
170 #define TARG_FRIENDLY (1<<6) /* friendly ships/planets only */
|
|
171 #define TARG_TEAM (1<<7) /* same team */
|
|
172 #define TARG_STAR (1<<8)
|
|
173 #define TARG_NEBULA (1<<9)
|
|
174 #define TARG_BLACKHOLE (1<<10)
|
|
175
|
|
176 #define TARG_PLAYER (TARG_SHIP|TARG_BASE)
|
|
177 #define TARG_ASTRAL (TARG_PLANET|TARG_STAR|TARG_NEBULA|TARG_BLACKHOLE)
|
|
178
|
|
179 #define DEFAULT_SERVER "cassius.cs.uiuc.edu"
|
|
180 #define DEFAULT_PORT 2592
|
|
181
|
|
182 #define hypot(x,y) sqrt((x)*(x)+(y)*(y))
|
|
183
|
|
184 #define ABS(a) /* abs(a) */ (((a) < 0) ? -(a) : (a))
|
|
185 #ifndef MAX
|
|
186 #define MAX(a,b) ((a) > (b) ? (a) : (b))
|
|
187 #endif
|
|
188
|
|
189 #define myPlasmaTorp(t) (me->p_no == (t)->pt_owner)
|
|
190 #define myTorp(t) (me->p_no == (t)->t_owner)
|
|
191 #define friendlyPlasmaTorp(t) ((!(idx_to_mask(me->p_teami) & (t)->pt_war)) || (myPlasmaTorp(t)))
|
|
192 #define friendlyTorp(t) ((!(idx_to_mask(me->p_teami) & (t)->t_war)) || (myTorp(t)))
|
|
193 #define myPhaser(p) (&phasers[me->p_no] == (p))
|
|
194 #define friendlyPhaser(p) (me->p_teami == players[(p) - phasers].p_teami)
|
|
195 #define myPlayer(p) (me == (p))
|
|
196 #define myPlanet(p) (me->p_teami == mask_to_idx((p)->pl_owner))
|
|
197 #define friendlyPlayer(p) ((!(idx_to_mask(me->p_teami) & \
|
|
198 ((p)->p_swar | (p)->p_hostile))) && \
|
|
199 (!(idx_to_mask((p)->p_teami) & \
|
|
200 (me->p_swar | me->p_hostile))))
|
|
201 #define isAlive(p) ((p)->p_status == PALIVE)
|
|
202 #define isPlaying(p) ((p)->p_status != PFREE)
|
|
203 #define isBase(num) ((num)==STARBASE || (num)==WARBASE || \
|
|
204 (num)==JUMPSHIP)
|
|
205 #define friendlyPlanet(p) ((p)->pl_info & idx_to_mask(me->p_teami) && \
|
|
206 !((p)->pl_owner & (me->p_swar | me->p_hostile)))
|
|
207
|
|
208 #define isLockPlanet(p) ((me->p_flags & PFPLLOCK) && (me->p_planet == p->pl_no))
|
|
209 #define isLockPlayer(p) ((me->p_flags & PFPLOCK) && (me->p_playerl == p->p_no))
|
|
210 #define PtOutsideWin(x, y) (x < 0 || x > WINSIDE || y < 0 || y > WINSIDE) /* TSH */
|
|
211
|
|
212 #define torpColor(t) \
|
|
213 (myTorp(t) ? myColor : shipCol[1+players[(t)->t_owner].p_teami])
|
|
214 #define droneColor(t) \
|
|
215 (myTorp(t) ? myColor : shipCol[1+players[(t)->t_owner].p_teami])
|
|
216 #define plasmatorpColor(t) \
|
|
217 (myPlasmaTorp(t) ? myColor : shipCol[1+players[(t)->pt_owner].p_teami])
|
|
218 #define phaserColor(p) \
|
|
219 (myPhaser(p) ? myColor : shipCol[1+players[(p) - phasers].p_teami])
|
|
220 /*
|
|
221 * Cloaking phase (and not the cloaking flag) is the factor in determining
|
|
222 * the color of the ship. Color 0 is white (same as 'myColor' used to be).
|
|
223 */
|
|
224 #define playerColor(p) \
|
|
225 (myPlayer(p) ? myColor : shipCol[1+(p)->p_teami])
|
|
226 #define planetColor(p) \
|
|
227 (((p)->pl_info & idx_to_mask(me->p_teami)) ? shipCol[1+mask_to_idx((p)->pl_owner)] : unColor)
|
|
228
|
|
229 #define planetFont(p) \
|
|
230 (myPlanet(p) ? W_BoldFont : friendlyPlanet(p) ? W_UnderlineFont \
|
|
231 : W_RegularFont)
|
|
232 #define shipFont(p) \
|
|
233 (myPlayer(p) ? W_BoldFont : friendlyPlayer(p) ? W_UnderlineFont \
|
|
234 : W_RegularFont)
|
|
235 #define bombingRating(p) \
|
|
236 ((float) (p)->p_stats.st_tarmsbomb * status->timeprod / \
|
|
237 ((float) (p)->p_stats.st_tticks * status->armsbomb))
|
|
238 #define planetRating(p) \
|
|
239 ((float) (p)->p_stats.st_tplanets * status->timeprod / \
|
|
240 ((float) (p)->p_stats.st_tticks * status->planets))
|
|
241 #define offenseRating(p) \
|
|
242 ((float) (p)->p_stats.st_tkills * status->timeprod / \
|
|
243 ((float) (p)->p_stats.st_tticks * status->kills))
|
|
244 #define defenseRating(p) \
|
|
245 ((float) (p)->p_stats.st_tticks * status->losses / \
|
|
246 ((p)->p_stats.st_tlosses!=0 ? \
|
|
247 ((float) (p)->p_stats.st_tlosses * status->timeprod) : \
|
|
248 (status->timeprod)))
|
|
249
|
|
250 #ifdef SVR4 /* to get it to work under Solaris */
|
|
251 #define srandom srand48
|
|
252 #define bcopy(s,d,l) memmove((d),(s),(l))
|
|
253 #define bzero(s,l) memset((s),(char)0,(l))
|
|
254 #define random lrand48
|
|
255 #define rindex(s,c) strrchr((s),(c))
|
|
256 #endif /* SVR4 */
|
|
257
|
|
258 #ifdef ROTATERACE
|
|
259 #define sendTorpReq(dir) sendShortPacket(CP_TORP, RotateDirSend(dir))
|
|
260 #define sendPhaserReq(dir) sendShortPacket(CP_PHASER, RotateDirSend(dir))
|
|
261 #define sendDirReq(dir) sendShortPacket(CP_DIRECTION, RotateDirSend(dir))
|
|
262 #define sendPlasmaReq(dir) sendShortPacket(CP_PLASMA, RotateDirSend(dir))
|
|
263 #else
|
|
264 #define sendTorpReq(dir) sendShortPacket(CP_TORP, dir)
|
|
265 #define sendPhaserReq(dir) sendShortPacket(CP_PHASER, dir)
|
|
266 #define sendDirReq(dir) sendShortPacket(CP_DIRECTION, dir)
|
|
267 #define sendPlasmaReq(dir) sendShortPacket(CP_PLASMA, dir)
|
|
268 #endif /* ROTATERACE */
|
|
269
|
|
270 #define sendSpeedReq(speed) sendShortPacket(CP_SPEED, speed)
|
|
271 #define sendShieldReq(state) sendShortPacket(CP_SHIELD, state)
|
|
272 #define sendOrbitReq(state) sendShortPacket(CP_ORBIT, state)
|
|
273 #define sendRepairReq(state) sendShortPacket(CP_REPAIR, state)
|
|
274 #define sendBeamReq(state) sendShortPacket(CP_BEAM, state)
|
|
275 #define sendCopilotReq(state) sendShortPacket(CP_COPILOT, state)
|
|
276 #define sendDetonateReq() sendShortPacket(CP_DET_TORPS, 0)
|
|
277 #define sendCloakReq(state) sendShortPacket(CP_CLOAK, state)
|
|
278 #define sendBombReq(state) sendShortPacket(CP_BOMB, state)
|
|
279 #define sendPractrReq() sendShortPacket(CP_PRACTR, 0)
|
|
280 #define sendWarReq(mask) sendShortPacket(CP_WAR, mask)
|
|
281 #define sendRefitReq(ship) sendShortPacket(CP_REFIT, ship)
|
|
282 #define sendPlaylockReq(pnum) sendShortPacket(CP_PLAYLOCK, pnum)
|
|
283 #define sendPlanlockReq(pnum) sendShortPacket(CP_PLANLOCK, pnum)
|
|
284 #define sendCoupReq() sendShortPacket(CP_COUP, 0)
|
|
285 #define sendQuitReq() sendShortPacket(CP_QUIT, 0)
|
|
286 #define sendByeReq() sendShortPacket(CP_BYE, 0)
|
|
287 #define sendDockingReq(state) sendShortPacket(CP_DOCKPERM, state)
|
|
288 #define sendResetStatsReq(verify) sendShortPacket(CP_RESETSTATS, verify)
|
|
289 #ifdef ATM
|
|
290 #define sendScanReq(who) sendShortPacket(CP_SCAN, who) /* ATM */
|
|
291 #endif /* ATM */
|
|
292
|
|
293 /* This macro allows us to time things based upon # frames / sec.
|
|
294 */
|
|
295 #define ticks(x) ((x)*200000/timerDelay)
|
|
296
|
|
297 char *getdefault();
|
|
298
|
|
299 #ifdef ATM
|
|
300 /*
|
|
301 * UDP control stuff
|
|
302 */
|
|
303 #ifdef GATEWAY
|
|
304 #define UDP_NUMOPTS 11
|
|
305 #define UDP_GW UDP_NUMOPTS-1
|
|
306 #else
|
|
307 #define UDP_NUMOPTS 10
|
|
308 #endif
|
|
309 #define UDP_CURRENT 0
|
|
310 #define UDP_STATUS 1
|
|
311 #define UDP_DROPPED 2
|
|
312 #define UDP_SEQUENCE 3
|
|
313 #define UDP_SEND 4
|
|
314 #define UDP_RECV 5
|
|
315 #define UDP_DEBUG 6
|
|
316 #define UDP_FORCE_RESET 7
|
|
317 #define UDP_UPDATE_ALL 8
|
|
318 #define UDP_DONE 9
|
|
319 #define COMM_TCP 0
|
|
320 #define COMM_UDP 1
|
|
321 #define COMM_VERIFY 2
|
|
322 #define COMM_UPDATE 3
|
|
323 #define COMM_MODE 4
|
|
324 #define SWITCH_TCP_OK 0
|
|
325 #define SWITCH_UDP_OK 1
|
|
326 #define SWITCH_DENIED 2
|
|
327 #define SWITCH_VERIFY 3
|
|
328 #define CONNMODE_PORT 0
|
|
329 #define CONNMODE_PACKET 1
|
|
330 #define STAT_CONNECTED 0
|
|
331 #define STAT_SWITCH_UDP 1
|
|
332 #define STAT_SWITCH_TCP 2
|
|
333 #define STAT_VERIFY_UDP 3
|
|
334 #define MODE_TCP 0
|
|
335 #define MODE_SIMPLE 1
|
|
336 #define MODE_FAT 2
|
|
337 #define MODE_DOUBLE 3
|
|
338
|
|
339 #define UDP_RECENT_INTR 300
|
|
340 #define UDP_UPDATE_WAIT 5
|
|
341
|
|
342 /* client version of UDPDIAG */
|
|
343 #define UDPDIAG(x) { if (udpDebug) { printf("UDP: "); printf x; }}
|
|
344 #define V_UDPDIAG(x) UDPDIAG(x)
|
|
345 #endif /* ATM */
|
|
346
|
|
347 #define RSA_VERSION "RSA v2.0 CLIENT" /* string must begin with characters
|
|
348 "RSA v" */
|
|
349 #define KEY_SIZE 32
|
|
350 #define RESERVED_SIZE 16
|
|
351 #define MSG_LEN 80
|
|
352 #define NAME_LEN 16
|
|
353 #define KEYMAP_LEN 96
|
|
354
|
|
355 #ifdef ROTATERACE
|
|
356 #define RotateDirSend(d) (rotate?d-rotate_deg:d)
|
|
357 #endif
|
|
358
|
|
359 #ifdef SHORT_PACKETS
|
|
360 #define SPK_VOFF 0 /* variable packets off */
|
|
361 #define SPK_VON 1 /* variable packets on */
|
|
362 #define SPK_MOFF 2 /* message packets off */
|
|
363 #define SPK_MON 3 /* message packets on */
|
|
364 #define SPK_M_KILLS 4 /* send kill mesgs */
|
|
365 #define SPK_M_NOKILLS 5 /* don't send kill mesgs */
|
|
366 #define SPK_THRESHOLD 6 /* threshold */
|
|
367 #define SPK_M_WARN 7 /* warnings */
|
|
368 #define SPK_M_NOWARN 8 /* no warnings */
|
|
369 #define SPK_SALL 9 /* only planets,kills and weapons */
|
|
370 #define SPK_ALL 10 /* Full Update - SP_STATS */
|
|
371
|
|
372 #define SPK_NUMFIELDS 7
|
|
373
|
|
374 #define SPK_VFIELD 0
|
|
375 #define SPK_MFIELD 1
|
|
376 #define SPK_KFIELD 2
|
|
377 #define SPK_WFIELD 3
|
|
378 #define SPK_TFIELD 4
|
|
379 #define SPK_WHYFIELD 5
|
|
380 #define SPK_DONE 6
|
|
381 #endif
|
|
382
|
|
383 #ifdef TOOLS
|
|
384 #define TOOLSWINLEN 25
|
|
385 #endif
|
|
386
|
|
387 #ifdef BEEPLITE
|
|
388 #define LITE_PLAYERS_MAP 0x01
|
|
389 #define LITE_PLAYERS_LOCAL 0x02
|
|
390 #define LITE_SELF 0x04
|
|
391 #define LITE_PLANETS 0x08
|
|
392 #define LITE_SOUNDS 0x10
|
|
393 #define LITE_COLOR 0x20
|
|
394 #endif
|
|
395
|
|
396 #ifdef AMIGA
|
|
397 #include "amigadefs.h"
|
|
398 #else
|
|
399 #define sock_write write
|
|
400 #define sock_close close
|
|
401 #define sock_ioctl ioctl
|
|
402 #endif /* AMIGA */
|
|
403
|
|
404 #ifdef RECORDER
|
|
405 #define PB_REDALERT -1
|
|
406 #define PB_YELLOWALERT -2
|
|
407 #define PB_DEATH -3
|
|
408 #endif
|
|
409
|
|
410 #if defined (sgi) || defined (__FreeBSD__) || defined (__NetBSD__)
|
|
411 #define strcmpi strcasecmp
|
|
412 #define strncmpi strncasecmp
|
|
413 #endif
|
|
414
|
|
415 #endif
|