4
|
1 /*--------------------------------------------------------------------------
|
|
2 NETREK II -- Paradise
|
|
3
|
|
4 Permission to use, copy, modify, and distribute this software and its
|
|
5 documentation, or any derivative works thereof, for any NON-COMMERCIAL
|
|
6 purpose and without fee is hereby granted, provided that this copyright
|
|
7 notice appear in all copies. No representations are made about the
|
|
8 suitability of this software for any purpose. This software is provided
|
|
9 "as is" without express or implied warranty.
|
|
10
|
|
11 Xtrek Copyright 1986 Chris Guthrie
|
|
12 Netrek (Xtrek II) Copyright 1989 Kevin P. Smith
|
|
13 Scott Silvey
|
|
14 Paradise II (Netrek II) Copyright 1993 Larry Denys
|
|
15 Kurt Olsen
|
|
16 Brandon Gillespie
|
|
17 --------------------------------------------------------------------------*/
|
|
18
|
|
19 #ifndef gppackets_h_
|
|
20 #define gppackets_h_
|
|
21
|
|
22 /* the definitions of {INT,CARD}{8,16,32} are in packets.h */
|
|
23 #include "packets.h"
|
|
24
|
|
25 struct gameparam_spacket
|
|
26 {
|
|
27 INT8 type;
|
|
28 INT8 subtype; /* this packet is not real */
|
|
29 /* generic game parameter packet */
|
|
30 INT16 pad;
|
|
31 };
|
|
32
|
|
33 struct gp_sizes_spacket
|
|
34 {
|
|
35 INT8 type;
|
|
36 INT8 subtype; /* =0 */
|
|
37
|
|
38 CARD8 nplayers;
|
|
39 CARD8 nteams; /* max of 8 */
|
|
40
|
|
41 CARD8 nshiptypes;
|
|
42 CARD8 nranks; /* number of ranks */
|
|
43 CARD8 nroyal; /* number of royalties */
|
|
44 CARD8 nphasers;
|
|
45
|
|
46 CARD8 ntorps;
|
|
47 CARD8 nplasmas;
|
|
48 CARD8 nthingies; /* per-player */
|
|
49 CARD8 gthingies; /* auxiliary thingies */
|
|
50
|
|
51 CARD32 gwidth; /* galaxy width */
|
|
52 /* 16 bytes */
|
|
53 CARD32 flags; /* some game parameter flags */
|
|
54 #define GP_WRAPVERT (1<<0)
|
|
55 #define GP_WRAPHORIZ (1<<1)
|
|
56 #define GP_WRAPALL (GP_WRAPVERT|GP_WRAPHORIZ)
|
|
57
|
|
58 /*
|
|
59 * The following bytes are room for growth. The size of this packet is
|
|
60 * unimportant because it only gets sent once. hopefully we've got plenty
|
|
61 * of room.
|
|
62 */
|
|
63 CARD16 nplanets;
|
|
64 INT16 ext1;
|
|
65
|
|
66 INT32 ext2;
|
|
67 INT32 ext3;
|
|
68 /* 32 bytes */
|
|
69
|
|
70 INT32 ext4;
|
|
71 INT32 ext5;
|
|
72 INT32 ext6;
|
|
73 INT32 ext7;
|
|
74
|
|
75 INT32 ext8;
|
|
76 INT32 ext9;
|
|
77 INT32 ext10;
|
|
78 INT32 ext11; /* 16 ints, 64 bytes */
|
|
79 };
|
|
80
|
|
81 struct gp_team_spacket
|
|
82 {
|
|
83 INT8 type;
|
|
84 INT8 subtype; /* =1 */
|
|
85
|
|
86 CARD8 index; /* team index */
|
|
87 CARD8 letter; /* team letter 'F' */
|
|
88
|
|
89 CARD8 shortname[3]; /* non-null-terminated 3-letter abbrev 'FED' */
|
|
90 CARD8 pad;
|
|
91 /* 8 bytes */
|
|
92 CARD8 teamname[56]; /* padding to 64 byte packet */
|
|
93 };
|
|
94
|
|
95 struct gp_teamlogo_spacket
|
|
96 {
|
|
97 /*
|
|
98 * This packet contains several adjacent rows of a team's logo bitmap Data
|
|
99 * is in raw XBM format (scanline-padded to 8 bits). Maximum bitmap size is
|
|
100 * 99x99, which takes 1287 (99x13) bytes.
|
|
101 */
|
|
102 INT8 type;
|
|
103 INT8 subtype; /* =2 */
|
|
104
|
|
105 INT8 logowidth; /* <= 99 */
|
|
106 INT8 logoheight; /* <= 99 */
|
|
107
|
|
108 INT8 y; /* y coord of the start of this packets info */
|
|
109 INT8 thisheight; /* the height of this packet's info */
|
|
110 INT8 teamindex; /* which team's logo this is */
|
|
111
|
|
112 CARD8 data[768 - 7]; /* pad packet to 768 bytes. */
|
|
113 };
|
|
114
|
|
115 struct gp_shipshape_spacket
|
|
116 {
|
|
117 INT8 type;
|
|
118 INT8 subtype; /* =3 */
|
|
119
|
|
120 CARD8 shipno;
|
|
121 INT8 race; /* -1 is independent */
|
|
122 CARD8 nviews; /* typically 16 */
|
|
123
|
|
124 CARD8 width, height;
|
|
125 CARD8 pad1;
|
|
126 };
|
|
127
|
|
128 struct gp_shipbitmap_spacket
|
|
129 {
|
|
130 INT8 type;
|
|
131 INT8 subtype; /* =4 */
|
|
132
|
|
133 CARD8 shipno;
|
|
134 INT8 race; /* -1 is independent */
|
|
135 CARD8 thisview; /* 0..nviews-1 */
|
|
136
|
|
137 CARD8 bitmapdata[999];
|
|
138 };
|
|
139
|
|
140 struct gp_rank_spacket
|
|
141 {
|
|
142 INT8 type;
|
|
143 INT8 subtype; /* =5 */
|
|
144
|
|
145 INT8 rankn; /* rank number */
|
|
146
|
|
147 CARD8 name[-3 + 64 - 20]; /* name of the rank */
|
|
148
|
|
149 INT32 genocides;
|
|
150 INT32 milliDI; /* DI*1000 */
|
|
151 INT32 millibattle; /* battle*1000 */
|
|
152 INT32 millistrat; /* strategy*1000 */
|
|
153 INT32 millispec; /* special ships*1000 */
|
|
154 };
|
|
155
|
|
156 struct gp_royal_spacket
|
|
157 {
|
|
158 INT8 type;
|
|
159 INT8 subtype; /* =6 */
|
|
160
|
|
161 CARD8 rankn; /* rank number */
|
|
162
|
|
163 CARD8 name[-3 + 64]; /* name of the rank */
|
|
164 };
|
|
165
|
|
166 struct gp_teamplanet_spacket
|
|
167 {
|
|
168 INT8 type;
|
|
169 INT8 subtype; /* =7 */
|
|
170
|
|
171 INT8 teamn; /* 0..7 */
|
|
172 CARD8 pad1;
|
|
173
|
|
174 INT32 ext1; /* extensions? */
|
|
175
|
|
176 /*
|
|
177 * Bitmaps of the team logo and masks. The bitmap of the planet will be
|
|
178 * constructed with (mask ? logo : planet), applied bitwise. This
|
|
179 * calculation is equivalent to (logo&mask)|(planet&~mask)
|
|
180 */
|
|
181
|
|
182 /* bitmap 30x30, X bitmap format (scanline padded to 8 bits) */
|
|
183 CARD8 tactical[120];
|
|
184 CARD8 tacticalM[120];
|
|
185
|
|
186 /* bitmap 16x16, X bitmap format (scanline padded to 8 bits) */
|
|
187 CARD8 galactic[32];
|
|
188 CARD8 galacticM[32];
|
|
189 };
|
|
190
|
|
191 #endif
|