Mercurial > ~darius > hgwebdir.cgi > paradise_client
comparison struct.h @ 3:5a977ccbc7a9 default tip
Empty changelog
author | darius |
---|---|
date | Sat, 06 Dec 1997 05:41:29 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
2:fba0b6e6cdc7 | 3:5a977ccbc7a9 |
---|---|
1 /* $Id: struct.h,v 1.1.1.1 1997/12/06 05:41:31 darius Exp $ */ | |
2 | |
3 /* | |
4 * struct.h for the client of an xtrek socket protocol. | |
5 * | |
6 * Most of the unneeded stuff in the structures has been thrown away. | |
7 */ | |
8 | |
9 #ifndef struct_h_ | |
10 #define struct_h_ | |
11 | |
12 #include "copyright.h" | |
13 #include "Wlib.h" | |
14 #include "defs.h" | |
15 #include "packets.h" | |
16 | |
17 #ifdef HOCKEY | |
18 /* hockey struct [BDyess] */ | |
19 struct hockeyLine { | |
20 int vertical; /* vertical or horizontal flag */ | |
21 W_Color color; | |
22 int pos, end1, end2; /* x or y constant and two endpoints */ | |
23 }; | |
24 #endif /*HOCKEY*/ | |
25 | |
26 /* ratings struct [BDyess] */ | |
27 struct ratings { | |
28 float r_offrat; /* offense rating */ | |
29 float r_planetrat; /* planets rating */ | |
30 float r_bombrat; /* bombing rating */ | |
31 float r_defrat; /* defense rating */ | |
32 float r_resrat; /* resource rating */ | |
33 float r_dooshrat; /* doosh rating */ | |
34 float r_stratrat; /* strategy rating */ | |
35 float r_batrat; /* battle rating */ | |
36 float r_sbrat; /* sb rating */ | |
37 float r_wbrat; /* wb rating */ | |
38 float r_jsrat; /* js rating */ | |
39 int r_jsplanets; /* js planets */ | |
40 int r_resources; /* total resources bombed */ | |
41 int r_armies; /* total armies bombed */ | |
42 int r_planets; /* total planets taken */ | |
43 int r_dooshes; /* total armies dooshed */ | |
44 float r_specrat; /* special ship rating */ | |
45 float r_di; /* damage inflicted */ | |
46 float r_ratio; /* ratio, kills/losses */ | |
47 int r_kills; /* kills */ | |
48 int r_losses; /* losses */ | |
49 float r_ratings; /* total ratings */ | |
50 float r_killsPerHour; /* kills/hour */ | |
51 float r_lossesPerHour; /* losses/hour */ | |
52 float r_maxkills; /* max kills */ | |
53 int r_genocides; /* number of genocides */ | |
54 }; | |
55 | |
56 /* messageWindow structure [BDyess] */ | |
57 struct messageWin { | |
58 W_Window window; | |
59 int flags; | |
60 struct messageNode *head, *curHead; | |
61 }; | |
62 | |
63 /* stuff yanked from COW-lite for rc_distress [BDyess] */ | |
64 struct distress { | |
65 unsigned char sender; | |
66 unsigned char dam, shld, arms, wtmp, etmp, fuelp, sts; | |
67 unsigned char wtmpflag, etempflag, cloakflag, distype, macroflag; | |
68 unsigned char close_pl, close_en, tclose_pl, tclose_en, pre_app, i; | |
69 unsigned char close_j, close_fr, tclose_j, tclose_fr; | |
70 unsigned char cclist[6]; /* allow us some day to cc a message up to 5 | |
71 people */ | |
72 /* sending this to the server allows the server to do the cc action */ | |
73 /* otherwise it would have to be the client ... less BW this way */ | |
74 char preappend[80]; /* text which we pre or append */ | |
75 }; | |
76 | |
77 enum dist_type { | |
78 /* help me do series */ | |
79 take = 1, ogg, bomb, space_control, | |
80 save_planet, | |
81 base_ogg, | |
82 help3, help4, | |
83 | |
84 /* doing series */ | |
85 escorting, ogging, bombing, controlling, | |
86 asw, | |
87 asbomb, | |
88 doing3, doing4, | |
89 | |
90 /* other info series */ | |
91 free_beer, /* ie. player x is totally hosed now */ | |
92 no_gas, /* ie. player x has no gas */ | |
93 crippled, /* ie. player x is way hurt but may have gas */ | |
94 pickup, /* player x picked up armies */ | |
95 pop, /* there was a pop somewhere */ | |
96 carrying, /* I am carrying */ | |
97 other1, other2, | |
98 | |
99 /* just a generic distress call */ | |
100 generic | |
101 }; | |
102 | |
103 /* The General distress has format: | |
104 | |
105 byte1: 00yzzzzz | |
106 where zzzzz is dist_type, and y is 1 if this is a more complicated macro | |
107 and not just a simple distress (a simple distress will ONLY send ship | |
108 info like shields, armies, status, location, etc.). I guess y=1 can be for ! | |
109 future expansion. | |
110 | |
111 byte2: 1fff ffff - f = percentage fuel remaining (0-100) | |
112 byte3: 1ddd dddd - % damage | |
113 byte4: 1sss ssss - % shields remaining | |
114 byte5: 1eee eeee - % etemp | |
115 byte6: 1www wwww - % wtemp | |
116 byte7: 100a aaaa - armies carried | |
117 byte8: (lsb of me->p_status) & 0x80 | |
118 byte9: 1ppp pppp - planet closest to me | |
119 byte10: 1eee eeee - enemy closest to me | |
120 byte11: 1ppp pppp - planet closest to target | |
121 byte12: 1eee eeee - enemy closest to target | |
122 byte13: 1ttt tttt - tclose_j | |
123 byte14: 1jjj jjjj - close_j | |
124 byte15: 1fff ffff - tclose_fr | |
125 byte16: 1ccc cccc - close_fr | |
126 byte17+: cc list (each player to cc this message to is 11pp ppp) | |
127 cc list is terminated by 0x80 (pre-pend) or 0100 0000 (append) ) | |
128 byte18++: the text to pre or append .. depending on termination above. | |
129 text is null terminated and the last thing in this distress | |
130 */ | |
131 | |
132 struct macro_list { | |
133 int type; | |
134 char key; | |
135 char who; | |
136 char *string; | |
137 }; | |
138 | |
139 struct dmacro_list { | |
140 unsigned char c; | |
141 char *name; | |
142 char *macro; | |
143 }; | |
144 /* end rc_distress stuff [BDyess] */ | |
145 | |
146 struct status { | |
147 unsigned char tourn; /* Tournament mode? */ | |
148 /* These stats only updated during tournament mode */ | |
149 unsigned int armsbomb, planets, kills, losses, time; | |
150 /* Use long for this, so it never wraps */ | |
151 unsigned long timeprod; | |
152 }; | |
153 | |
154 struct status2 { /* paradise status struct */ | |
155 int active; /* for interfacing with people who */ | |
156 unsigned int wait, count; /* want to get into the game */ | |
157 unsigned int number, request, answer; | |
158 unsigned char tourn; /* Tournament mode? */ | |
159 unsigned long dooshes; /* total number of armies dooshed */ | |
160 unsigned long armsbomb; /* all t-mode armies bombed */ | |
161 unsigned long resbomb; /* resources bombed */ | |
162 unsigned long planets; /* all t-mode planets taken */ | |
163 unsigned long kills; /* all t-mode kills made */ | |
164 unsigned long losses; /* all t-mode losses */ | |
165 unsigned long genocides; /* number of genocides */ | |
166 unsigned long sbkills; /* total kills in SB's */ | |
167 unsigned long sblosses; /* total losses in Sb's */ | |
168 unsigned long sbtime; /* total time in SB's */ | |
169 unsigned long wbkills; /* kills in warbases */ | |
170 unsigned long wblosses; /* losses in warbases */ | |
171 unsigned long wbtime; /* total time played in wb's */ | |
172 unsigned long jsplanets; /* total planets taken by jump ships */ | |
173 unsigned long jstime; /* total time in a jump ship */ | |
174 unsigned long time; /* t-mode time */ | |
175 unsigned long timeprod; /* t-mode ship ticks--sort of like */ | |
176 /* manhours in t-mode */ | |
177 int gameup; /* is game up */ | |
178 unsigned long clock; /* clock for planet info timestamp */ | |
179 }; | |
180 | |
181 | |
182 #ifdef METASERVER | |
183 /* metaserver window struct */ | |
184 struct servers { | |
185 char address[LINE]; | |
186 int port; | |
187 int time; | |
188 int players; | |
189 int status; | |
190 int RSA_client; | |
191 char typeflag; | |
192 char hilited; | |
193 }; | |
194 #endif /* METASERVER */ | |
195 | |
196 /* MOTD structures */ | |
197 struct piclist { | |
198 int page; | |
199 W_Icon thepic; | |
200 int x, y; | |
201 int width, height; | |
202 struct piclist *next; | |
203 }; | |
204 struct page { | |
205 struct list *text; | |
206 struct page *next; | |
207 struct page *prev; | |
208 int first; | |
209 int page; | |
210 }; | |
211 | |
212 #define PFREE 0 | |
213 #define POUTFIT 1 | |
214 #define PALIVE 2 | |
215 #define PEXPLODE 3 | |
216 #define PDEAD 4 | |
217 #define PTQUEUE 5 | |
218 #define POBSERVE 6 | |
219 | |
220 #define PFSHIELD (1<< 0) /* shields are raised */ | |
221 #define PFREPAIR (1<< 1) /* player in repair mode */ | |
222 #define PFBOMB (1<< 2) /* player is bombing */ | |
223 #define PFORBIT (1<< 3) /* player is orbiting */ | |
224 #define PFCLOAK (1<< 4) /* player is cloaked */ | |
225 #define PFWEP (1<< 5) /* player is weapon temped */ | |
226 #define PFENG (1<< 6) /* player is engine temped */ | |
227 #define PFROBOT (1<< 7) /* player is a robot */ | |
228 #define PFBEAMUP (1<< 8) /* player is beaming up */ | |
229 #define PFBEAMDOWN (1<< 9) /* player is beaming down */ | |
230 #define PFSELFDEST (1<<10) /* player is self destructing */ | |
231 #define PFGREEN (1<<11) /* player at green alert */ | |
232 #define PFYELLOW (1<<12) /* player is at yellow alert */ | |
233 #define PFRED (1<<13) /* player is at red alert */ | |
234 #define PFPLOCK (1<<14) /* Locked on a player */ | |
235 #define PFPLLOCK (1<<15) /* Locked on a planet */ | |
236 #define PFCOPILOT (1<<16) /* Allow copilots */ | |
237 #define PFWAR (1<<17) /* computer reprogramming for war */ | |
238 #define PFPRACTR (1<<18) /* practice type robot (no kills) */ | |
239 #define PFDOCK (1<<19) /* true if docked to a starbase */ | |
240 #define PFREFIT (1<<20) /* true if about to refit */ | |
241 #define PFREFITTING (1<<21) /* true if currently refitting */ | |
242 #define PFTRACT (1<<22) /* tractor beam activated */ | |
243 #define PFPRESS (1<<23) /* pressor beam activated */ | |
244 #define PFDOCKOK (1<<24) /* docking permission */ | |
245 #define PFSEEN (1<<25) /* seen by enemy on galactic map? */ | |
246 #define PFWARPPREP (1<<26) /* in warp prep [BDyess] */ | |
247 #define PFWARP (1<<27) /* ship warping */ | |
248 #define PFAFTER (1<<28) /* after burners on */ | |
249 #define PFWPSUSPENDED (1<<29) /* warp prep suspended [BDyess] */ | |
250 #define PFSNAKE (1<<30) /* it's a space snake */ | |
251 #define PFBIRD (1<<31) /* it's a space bird */ | |
252 | |
253 enum why_dead { | |
254 KNOREASON, KQUIT, KTORP, KPHASER, KPLANET, | |
255 KSHIP, KDAEMON, KWINNER, KGHOST, KGENOCIDE, | |
256 KPROVIDENCE, KPLASMA, KTOURNEND, KOVER, KTOURNSTART, | |
257 KBADBIN, KMISSILE, KASTEROID | |
258 }; | |
259 | |
260 #define DEFAULT -1 | |
261 #define SCOUT 0 | |
262 #define DESTROYER 1 | |
263 #define CRUISER 2 | |
264 #define BATTLESHIP 3 | |
265 #define ASSAULT 4 | |
266 #define STARBASE 5 | |
267 #define ATT 6 | |
268 #define GALAXY 6 /* galaxy ships now supported - they look | |
269 extremely similar to flagships :) [BDyess] */ | |
270 #define JUMPSHIP 7 | |
271 #define FLAGSHIP 8 | |
272 #define WARBASE 9 | |
273 #define LIGHTCRUISER 10 | |
274 #define CARRIER 11 | |
275 #define UTILITY 12 | |
276 #define PATROL 13 | |
277 #define PUCK 14 | |
278 /*#define NUM_TYPES 14*/ | |
279 | |
280 struct shiplist { | |
281 struct ship *ship; | |
282 struct shiplist *prev, *next; | |
283 }; | |
284 | |
285 struct ship { | |
286 int s_phaserrange; | |
287 int s_maxspeed; | |
288 int s_maxfuel; | |
289 int s_maxshield; | |
290 int s_maxdamage; | |
291 int s_maxegntemp; | |
292 int s_maxwpntemp; | |
293 short s_maxarmies; | |
294 short s_type; | |
295 int s_torpspeed; | |
296 char s_letter; | |
297 /* char s_name[16]; */ | |
298 char s_desig[2]; | |
299 short s_bitmap; | |
300 unsigned char s_keymap[256]; | |
301 unsigned char s_buttonmap[12]; | |
302 }; | |
303 | |
304 struct ship_shape { | |
305 int nviews; | |
306 W_Icon *bmap; | |
307 W_Icon shield; | |
308 int width, height; | |
309 }; | |
310 | |
311 struct stats { | |
312 double st_maxkills; /* max kills ever */ | |
313 int st_kills; /* how many kills */ | |
314 int st_losses; /* times killed */ | |
315 int st_armsbomb; /* armies bombed */ | |
316 int st_planets; /* planets conquered */ | |
317 int st_ticks; /* Ticks I've been in game */ | |
318 int st_tkills; /* Kills in tournament play */ | |
319 int st_tlosses; /* Losses in tournament play */ | |
320 int st_tarmsbomb; /* Tournament armies bombed */ | |
321 int st_tplanets; /* Tournament planets conquered */ | |
322 int st_tticks; /* Tournament ticks */ | |
323 /* SB stats are entirely separate */ | |
324 int st_sbkills; /* Kills as starbase */ | |
325 int st_sblosses; /* Losses as starbase */ | |
326 int st_sbticks; /* Time as starbase */ | |
327 double st_sbmaxkills; /* Max kills as starbase */ | |
328 long st_lastlogin; /* Last time this player was played */ | |
329 int st_flags; /* Misc option flags */ | |
330 #if 0 | |
331 unsigned char st_keymap[256]; /* keymap for this player */ | |
332 #endif | |
333 int st_rank; /* Ranking of the player */ | |
334 }; | |
335 | |
336 | |
337 struct stats2 { /* paradise stats */ | |
338 int st_genocides; /* number of genocides participated in */ | |
339 float st_tmaxkills; /* max kills ever */ | |
340 float st_di; /* total destruction inflicted for all time */ | |
341 int st_tkills; /* Kills in tournament play */ | |
342 int st_tlosses; /* Losses in tournament play */ | |
343 int st_tarmsbomb; /* Tournament armies bombed */ | |
344 int st_tresbomb; /* resources bombed off */ | |
345 int st_tdooshes; /* armies killed while being carried */ | |
346 int st_tplanets; /* Tournament planets conquered */ | |
347 int st_tticks; /* Tournament ticks */ | |
348 /* SB/WB/JS stats are entirely separate */ | |
349 int st_sbkills; /* Kills as starbase */ | |
350 int st_sblosses; /* Losses as starbase */ | |
351 int st_sbticks; /* Time as starbase */ | |
352 float st_sbmaxkills; /* Max kills as starbase */ | |
353 int st_wbkills; /* Kills as warbase */ | |
354 int st_wblosses; /* Losses as warbase */ | |
355 int st_wbticks; /* Time as warbase */ | |
356 float st_wbmaxkills; /* Max kills as warbase */ | |
357 int st_jsplanets; /* planets assisted with in JS */ | |
358 int st_jsticks; /* ticks played as a JS */ | |
359 long st_lastlogin; /* Last time this player was played */ | |
360 int st_flags; /* Misc option flags */ | |
361 unsigned char st_keymap[256]; /* keymap for this player */ | |
362 int st_rank; /* Ranking of the player */ | |
363 int st_royal; /* royaly, specialty, rank */ | |
364 }; | |
365 | |
366 #define ST_NOBITMAPS (1<<0) | |
367 #define ST_KEEPPEACE (1<<3) | |
368 | |
369 struct player { | |
370 int p_no; | |
371 int p_updates; /* Number of updates ship has survived */ | |
372 int p_status; /* Player status */ | |
373 unsigned int p_flags; /* Player flags */ | |
374 char p_name[16]; | |
375 char p_login[16]; | |
376 char p_monitor[16]; /* Monitor being played on */ | |
377 char p_mapchars[2]; /* Cache for map window image */ | |
378 struct ship *p_ship; /* Personal ship statistics */ | |
379 int p_x; | |
380 int p_y; | |
381 unsigned char p_dir; /* Real direction */ | |
382 unsigned char p_desdir; /* desired direction */ | |
383 int p_subdir; /* fraction direction change */ | |
384 int p_speed; /* Real speed */ | |
385 short p_desspeed; /* Desired speed */ | |
386 int p_subspeed; /* Fractional speed */ | |
387 short p_teami; /* Team I'm on */ | |
388 int p_damage; /* Current damage */ | |
389 int p_subdamage; /* Fractional damage repair */ | |
390 int p_shield; /* Current shield power */ | |
391 int p_subshield; /* Fractional shield recharge */ | |
392 short p_cloakphase; /* Drawing stage of cloaking | |
393 engage/disengage. */ | |
394 short p_ntorp; /* Number of torps flying */ | |
395 short p_ndrone; /* Number of drones .. why was this missing? */ | |
396 short p_totmissiles; /* number of total missiles [Bill Dyess] */ | |
397 short p_nplasmatorp; /* Number of plasma torps active */ | |
398 char p_hostile; /* Who my torps will hurt */ | |
399 char p_swar; /* Who am I at sticky war with */ | |
400 float p_kills; /* Enemies killed */ | |
401 short p_planet; /* Planet orbiting or locked onto */ | |
402 short p_playerl; /* Player locked onto */ | |
403 #ifdef ARMY_SLIDER | |
404 int p_armies; /* XXX: for stats */ | |
405 #else | |
406 short p_armies; | |
407 #endif /* ARMY_SLIDER */ | |
408 int p_fuel; | |
409 short p_explode; /* Keeps track of final explosion */ | |
410 int p_etemp; | |
411 short p_etime; | |
412 int p_wtemp; | |
413 short p_wtime; | |
414 short p_whydead; /* Tells you why you died */ | |
415 short p_whodead; /* Tells you who killed you */ | |
416 struct stats p_stats; /* player statistics */ | |
417 struct stats2 p_stats2; /* Paradise stats */ | |
418 short p_genoplanets; /* planets taken since last genocide */ | |
419 short p_genoarmsbomb; /* armies bombed since last genocide */ | |
420 short p_planets; /* planets taken this game */ | |
421 short p_armsbomb; /* armies bombed this game */ | |
422 int p_docked; /* If starbase, # docked to, else pno base | |
423 host */ | |
424 int p_port[4]; /* If starbase, pno of ship docked to that | |
425 port, else p_port[0] = port # docked to on | |
426 host. */ | |
427 short p_tractor; /* What player is in tractor lock */ | |
428 int p_pos; /* My position in the player file */ | |
429 }; | |
430 | |
431 struct statentry { | |
432 char name[16], password[16]; | |
433 struct stats stats; | |
434 }; | |
435 | |
436 /* Torpedo states */ | |
437 | |
438 #define TFREE 0 | |
439 #define TMOVE 1 | |
440 #define TEXPLODE 2 | |
441 #define TDET 3 | |
442 #define TOFF 4 | |
443 #define TSTRAIGHT 5 /* Non-wobbling torp */ | |
444 | |
445 struct torp { | |
446 int t_no; | |
447 int t_status; /* State information */ | |
448 int t_owner; | |
449 int t_x; | |
450 int t_y; | |
451 unsigned char t_dir; /* direction */ | |
452 short t_turns; /* rate of change of direction if tracking */ | |
453 int t_damage; /* damage for direct hit */ | |
454 int t_speed; /* Moving speed */ | |
455 int t_fuse; /* Life left in current state */ | |
456 char t_war; /* enemies */ | |
457 char t_team; /* launching team */ | |
458 char t_whodet; /* who detonated... */ | |
459 char frame; /* frame of animation [BDyess] */ | |
460 }; | |
461 | |
462 struct thingy { | |
463 int t_no; | |
464 int t_shape; /* State information */ | |
465 int t_owner; | |
466 int t_x; | |
467 int t_y; | |
468 unsigned char t_dir; /* direction */ | |
469 int t_speed; /* Moving speed */ | |
470 int t_fuse; /* Life left in current state */ | |
471 char t_war; /* enemies */ | |
472 }; | |
473 | |
474 /* Plasma Torpedo states */ | |
475 | |
476 #define PTFREE 0 | |
477 #define PTMOVE 1 | |
478 #define PTEXPLODE 2 | |
479 #define PTDET 3 | |
480 | |
481 struct plasmatorp { | |
482 int pt_no; | |
483 int pt_status; /* State information */ | |
484 int pt_owner; | |
485 int pt_x; | |
486 int pt_y; | |
487 unsigned char pt_dir; /* direction */ | |
488 short pt_turns; /* ticks turned per cycle */ | |
489 int pt_damage; /* damage for direct hit */ | |
490 int pt_speed; /* Moving speed */ | |
491 int pt_fuse; /* Life left in current state */ | |
492 char pt_war; /* enemies */ | |
493 char pt_team; /* launching team */ | |
494 }; | |
495 | |
496 #define PHFREE 0x00 | |
497 #define PHHIT 0x01 /* When it hits a person */ | |
498 #define PHMISS 0x02 | |
499 #define PHHIT2 0x04 /* When it hits a photon */ | |
500 #ifdef CHECK_DROPPED | |
501 #define PHGHOST 0x80 /* fuse has exceeded longest received so far */ | |
502 #endif | |
503 struct phaser { | |
504 int ph_status; /* What it's up to */ | |
505 unsigned char ph_dir; /* direction */ | |
506 int ph_target; /* Who's being hit (for drawing) */ | |
507 int ph_x, ph_y; /* For when it hits a torp */ | |
508 int ph_fuse; /* Life left for drawing */ | |
509 int ph_damage; /* Damage inflicted on victim */ | |
510 }; | |
511 | |
512 /* An important note concerning planets: The game assumes that | |
513 the planets are in a 'known' order. Ten planets per team, | |
514 the first being the home planet. | |
515 */ | |
516 | |
517 /* defines for the pl_flags field of planet struct */ | |
518 | |
519 /* | |
520 pl_flags is an int of 32 bits: | |
521 | |
522 bits 16 and 23 currently define the type of the planet. The | |
523 interpretation of the other bits is dependent upon the planet | |
524 type. | |
525 | |
526 Here is the interpretation for a planet | |
527 bits 0..3 unknown | |
528 bits 4..6 planetary facilities (REPAIR,FUEL,AGRI) | |
529 bit 7 redraw (archaic, recyclable?) | |
530 bits 8..11 old flags (archaic, recyclable?) | |
531 bits 12..15 paradise planetary facilities | |
532 (REPAIR,FUEL,AGRI,SHIPY) | |
533 bit 16 cosmic object type (also bit 23) | |
534 bits 17,18 planet atmosphere type | |
535 bits 19..21 planetary surface properties | |
536 (DILYTH,METAL,ARABLE) | |
537 bit 22 paradise planet flag (why?) | |
538 bit 23 cosmic object type (also bit 16) | |
539 bits 24..31 currently unallocated (8 bits to play with) | |
540 | |
541 Asteroids are NYI but here is a draft standard: | |
542 bits 12,15 facilities | |
543 (REPAIR,FUEL,SHIPY) | |
544 bit 20 surface properties | |
545 (DILYTH,METAL) | |
546 other bits currently unallocated | |
547 | |
548 */ | |
549 | |
550 /* facilities, bits 4..6 and 12..15 | |
551 valid for planets and asteroids */ | |
552 #define PLREPAIR ((1<<12) | (1<<4)) /* planet can repair ships */ | |
553 #define PLFUEL ((1<<13) | (1<<5)) /* planet has fuel depot */ | |
554 #define PLAGRI ((1<<14) | (1<<6)) /* agricultural thingies built here */ | |
555 #define PLSHIPYARD ((1<<15)) /* planet has a shipyard on it */ | |
556 #define PLORESMASK (0x7<<4) /* mask for original resource flags */ | |
557 #define PLRESSHIFT 12 /* bit to shift right by for resources */ | |
558 #define PLRESMASK (0xF<<PLRESSHIFT) /* to mask off all but resource bits */ | |
559 | |
560 #define PLREDRAW (1<<7) /* Player close for redraw */ | |
561 | |
562 #define PLHOME (1<< 8) /* These 4 flags no longer are */ | |
563 #define PLCOUP (1<< 9) /* used in the server */ | |
564 #define PLCHEAP (1<<10) | |
565 #define PLCORE (1<<11) | |
566 | |
567 /* cosmic object types, bits 16 and 23, and 24 */ | |
568 #define PLPLANET 0 /* object is a planet */ | |
569 #define PLSTAR (1<<16) /* object is a star */ | |
570 #define PLAST (1<<23) /* object is an asteroid NYI */ | |
571 #define PLNEB ((1<<16)|(1<<23)) /* object is a nebula NYI */ | |
572 #define PLBHOLE (1<<24) /* object is a black hole NYI */ | |
573 #define PLPULSAR ((1<<16)|(1<<24)) /* object is a pulsar NYI */ | |
574 #define PLUK1 ((1<<23)|(1<<24)) /* future expansion */ | |
575 #define PLWHOLE ((1<<16)|(1<<23)|(1<<24)) /* object is a wormhole */ | |
576 #define PLTYPEMASK ((1<<16)|(1<<23)|(1<<24)) /* mask to extract object | |
577 type */ | |
578 #define PL_TYPE(p) ( (p).pl_flags & PLTYPEMASK ) | |
579 | |
580 /* Atmosphere Types, bits 17 and 18. | |
581 Valid for planets. | |
582 */ | |
583 #define PLATSHIFT 17 /* number of right bit shifts for atmos bits */ | |
584 #define PLPOISON (0<<PLATSHIFT) /* poison atmosphere, no army growth */ | |
585 #define PLATYPE3 (1<<PLATSHIFT) /* slightly toxic, very slow army | |
586 growth */ | |
587 #define PLATYPE2 (2<<PLATSHIFT) /* thin atmosphere, slow army growth */ | |
588 #define PLATYPE1 (3<<PLATSHIFT) /* normal human atmosphere, normal | |
589 growth */ | |
590 #define PLATMASK (0x3<<PLATSHIFT) /* to mask off everything but atmos | |
591 bits */ | |
592 | |
593 /* Surface Properties, bits 19..21 | |
594 Valid for planets and asteroids. | |
595 */ | |
596 #define PLBARREN 0 /* rocky barren surface */ | |
597 #define PLSURSHIFT 19 /* number of bit shift to surface */ | |
598 #define PLDILYTH (1<<(PLSURSHIFT+0)) /* dilythium deposits on the planet */ | |
599 #define PLMETAL (1<<(PLSURSHIFT+1)) /* metal deposits on the planet */ | |
600 #define PLARABLE (1<<(PLSURSHIFT+2)) /* planet has farmland */ | |
601 #define PLSURMASK (0x7<<PLSURSHIFT) /* number of surface combinations */ | |
602 | |
603 | |
604 #define PLPARADISE (1<<22) /* Paradise server flag set to 1 for P server */ | |
605 | |
606 | |
607 struct planet { | |
608 int pl_no; | |
609 int pl_flags; /* State information */ | |
610 int pl_owner; | |
611 int pl_x; | |
612 int pl_y; | |
613 char pl_name[16]; | |
614 int pl_namelen; /* Cuts back on strlen's */ | |
615 int pl_armies; | |
616 int pl_info; /* Teams which have info on planets */ | |
617 int pl_deadtime; /* Time before planet will support life */ | |
618 int pl_couptime; /* Time before coup may take place */ | |
619 int pl_timestamp; /* time the info was taken */ | |
620 }; | |
621 | |
622 struct t_unit { | |
623 /* int alt1;*/ | |
624 /* int alt2;*/ /* Terrain types. */ | |
625 char types; | |
626 }; | |
627 | |
628 /* Terrain types */ | |
629 #define T_EMPTY_SPACE 0x00 | |
630 #define T_ASTEROIDS 0x01 | |
631 #define T_NEBULA 0x02 | |
632 #define T_RADIATION 0x04 | |
633 #define T_EXPANSN1 0x08 | |
634 #define T_EXPANSN2 0x10 | |
635 #define T_EXPANSN3 0x20 | |
636 #define T_EXPANSN4 0x40 | |
637 #define T_EXPANSN5 0x80 | |
638 | |
639 struct _clearzone { | |
640 int x, y; | |
641 int width, height; | |
642 }; | |
643 | |
644 #ifndef SHORT_PACKETS | |
645 #define MVALID 0x01 | |
646 #define MINDIV 0x02 | |
647 #define MTEAM 0x04 | |
648 #define MALL 0x08 | |
649 #define MGOD 0x10 | |
650 #define MCAST 0x18 /* not an offial packet type. only */ | |
651 /* used in smessage to stay orthogonal */ | |
652 #else | |
653 #define MVALID 0x01 | |
654 #define MGOD 0x10 | |
655 #define MMOO 0x12 | |
656 | |
657 #ifdef TOOLS | |
658 #define MTOOLS 0x14 | |
659 #endif | |
660 | |
661 /* order flags by importance (0x100 - 0x400) */ | |
662 /* restructuring of message flags to squeeze them all into 1 byte - jmn */ | |
663 /* hopefully quasi-back-compatible: | |
664 MVALID, MINDIV, MTEAM, MALL, MGOD use up 5 bits. this leaves us 3 bits. | |
665 since the server only checks for those flags when deciding message | |
666 related things and since each of the above cases only has 1 flag on at | |
667 a time we can overlap the meanings of the flags */ | |
668 | |
669 #define MINDIV 0x02 | |
670 /* these go with MINDIV flag */ | |
671 #ifdef STDBG | |
672 #define MDBG 0x20 | |
673 #endif | |
674 #define MCONFIG 0x40 /* config messages from server */ | |
675 #define MDIST 0x60 /* flag distress messages - client thing | |
676 really but stick it in here for | |
677 consistency */ | |
678 #define MCAST 0x18 /* not an offial packet type. only */ | |
679 /* used in smessage.c to stay orthogonal */ | |
680 | |
681 #define MTEAM 0x04 | |
682 /* these go with MTEAM flag */ | |
683 #define MTAKE 0x20 | |
684 #define MDEST 0x40 | |
685 #define MBOMB 0x60 | |
686 #define MCOUP1 0x80 | |
687 #define MCOUP2 0xA0 | |
688 #define MDISTR 0xC0 | |
689 | |
690 #define MALL 0x08 | |
691 /* these go with MALL flag */ | |
692 #define MGENO 0x20 /* MGENO is not used in INL server but | |
693 belongs here */ | |
694 #define MCONQ 0x20 /* not enought bits to distinguish | |
695 MCONQ/MGENO :-( */ | |
696 #define MKILLA 0x40 | |
697 #define MKILLP 0x60 | |
698 #define MKILL 0x80 | |
699 #define MLEAVE 0xA0 | |
700 #define MJOIN 0xC0 | |
701 #define MGHOST 0xE0 | |
702 /* MMASK not used in INL server */ | |
703 | |
704 /* to flag multi-line macros */ | |
705 #define MMACRO 0x80 | |
706 | |
707 #define MWHOMSK 0x1f /* mask with this to find who msg to */ | |
708 #define MWHATMSK 0xe0 /* mask with this to find what message about */ | |
709 | |
710 /* old flags... | |
711 #define MVALID 0x01 | |
712 #define MINDIV 0x02 | |
713 #define MTEAM 0x04 | |
714 #define MALL 0x08 | |
715 #define MGOD 0x10 | |
716 | |
717 #define MGENO 0x100 order these by importance (0x100 - 0x400) | |
718 #define MCONQ 0x110 | |
719 #define MTAKE 0x120 | |
720 #define MDEST 0x130 | |
721 #define MKILLA 0x200 | |
722 #define MBOMB 0x210 | |
723 #define MKILLP 0x220 | |
724 #define MKILL 0x230 | |
725 #define MLEAVE 0x300 | |
726 #define MJOIN 0x310 | |
727 #define MGHOST 0x320 | |
728 #define MCOUP1 0x330 | |
729 #define MCOUP2 0x340 end of old flags */ | |
730 #endif | |
731 | |
732 struct message { | |
733 int m_no; | |
734 int m_flags; | |
735 int m_time; | |
736 int m_recpt; | |
737 char m_data[80]; | |
738 }; | |
739 | |
740 /* message control structure */ | |
741 | |
742 struct mctl { | |
743 int mc_current; | |
744 }; | |
745 | |
746 /* This is a structure used for objects returned by mouse pointing */ | |
747 | |
748 #define PLANETTYPE 0x1 | |
749 #define PLAYERTYPE 0x2 | |
750 | |
751 struct obtype { | |
752 int o_type; | |
753 int o_num; | |
754 }; | |
755 | |
756 struct id { | |
757 char *name; | |
758 int team; | |
759 int number; | |
760 int type; | |
761 char mapstring[4]; | |
762 }; | |
763 | |
764 struct rank { | |
765 float hours, ratings, defense; | |
766 char *name; | |
767 }; | |
768 | |
769 struct rank2 { /* Paradise ranks */ | |
770 int genocides; /* minimum number of genocides */ | |
771 float di; /* minimum destruction inflicted */ | |
772 float battle; /* minimum battle ratings */ | |
773 float strategy; /* minimum strategy ratings */ | |
774 float specship; /* minimum total ratings in a specialty */ | |
775 /* ship SB + WB + JS */ | |
776 char *name; /* name of this rank */ | |
777 }; | |
778 | |
779 | |
780 struct royalty { /* Paradise royalty ranks */ | |
781 char *name; /* name of rank */ | |
782 }; | |
783 | |
784 struct plupdate { | |
785 | |
786 int plu_update; | |
787 int plu_x, plu_y; | |
788 }; | |
789 | |
790 #ifdef MACROS | |
791 #define MACSINGLE 1 | |
792 #define MACRCD 2 | |
793 #define MACMULTI 4 | |
794 struct macro { | |
795 char flags; /* WAS isSingleMacro; now, uses above flags */ | |
796 INT8 to; /* if to team, rom, etc put here or -1 */ | |
797 char specialto; /* player nearest mouse, etc here */ | |
798 struct macro *next; /* for multi-line macros, points to a struct | |
799 *distress if MACRCD flag set. -JR */ | |
800 char *string; /* string to be sent, % escapes intact */ | |
801 }; | |
802 #endif /* MACROS */ | |
803 | |
804 struct stringlist { | |
805 char *string; | |
806 char *value; | |
807 struct stringlist *next, *prev; | |
808 int searched; | |
809 }; | |
810 #endif |