Mercurial > ~darius > hgwebdir.cgi > paradise_client
comparison getship.c @ 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: getship.c,v 1.1.1.1 1997/12/06 05:41:29 darius Exp $ */ | |
2 | |
3 /* | |
4 * getship.c for client of socket protocol. | |
5 * | |
6 * This file has been mangled so it only sets the ship characteristics needed. | |
7 */ | |
8 #include "copyright.h" | |
9 | |
10 #include <stdio.h> | |
11 #ifdef __STDC__ | |
12 #include <stdlib.h> | |
13 #endif | |
14 #include <sys/types.h> | |
15 #include "Wlib.h" | |
16 #include "defs.h" | |
17 #include "struct.h" | |
18 #include "data.h" | |
19 #include "proto.h" | |
20 | |
21 /* Prototypes */ | |
22 static void getship_default P((struct ship * shipp, int s_type)); | |
23 | |
24 void | |
25 init_shiptypes() | |
26 { | |
27 int i; | |
28 struct shiplist *temp; | |
29 | |
30 /* start at -1, the default shiptype */ | |
31 for (i = -1; i < nshiptypes; i++) { | |
32 temp = (struct shiplist *) malloc(sizeof(struct shiplist)); | |
33 temp->ship = (struct ship *) malloc(sizeof(struct ship)); | |
34 getship_default(temp->ship, i); | |
35 temp->next = shiptypes; | |
36 if (temp->next) | |
37 temp->next->prev = temp; | |
38 temp->prev = NULL; | |
39 shiptypes = temp; | |
40 } | |
41 } | |
42 | |
43 void | |
44 init_galaxy_class() | |
45 { | |
46 /* | |
47 hack to allow galaxy class ships. By the time the client knows it's | |
48 connected to a paradise server, the defaults must already have been | |
49 run. [BDyess] | |
50 */ | |
51 struct shiplist *temp; | |
52 | |
53 for (temp = shiptypes; temp->ship->s_type != GALAXY; temp = temp->next) | |
54 /* null body */ ; | |
55 getship_default(temp->ship, GALAXY); | |
56 | |
57 /* slurp_ship_bitmaps(); */ /* don't destroy downloaded bitmaps */ | |
58 | |
59 return; | |
60 } | |
61 | |
62 #if 0 | |
63 void | |
64 init_puck() | |
65 { | |
66 /* ditto above init_galaxy_class(), but this time for hockey and puck. | |
67 [BDyess] */ | |
68 struct shiplist *temp; | |
69 | |
70 temp = shiptypes; | |
71 while(temp->next) temp = temp->next; | |
72 temp->next = (struct shiplist*)malloc(sizeof(struct shiplist)); | |
73 temp = temp->next; | |
74 temp->ship = (struct ship*)malloc(sizeof(struct ship)); | |
75 getship_default(temp->ship, PUCK); | |
76 temp->next = NULL; | |
77 | |
78 slurp_ship_bitmaps(); | |
79 | |
80 return; | |
81 } | |
82 #endif /*0*/ | |
83 | |
84 /* now returns a pointer to where the ship data is located. This way | |
85 if the data is later changed by the server everybody gets updated. | |
86 Plus as a bonus it's more efficient :) [Bill Dyess] */ | |
87 struct ship * | |
88 getship(s_type) | |
89 int s_type; | |
90 { | |
91 struct shiplist *temp, *new; | |
92 | |
93 temp = shiptypes; | |
94 while (temp) { | |
95 if (temp->ship->s_type == s_type) { | |
96 /* bcopy(temp->ship, shipp, sizeof(struct ship)); */ | |
97 return temp->ship; | |
98 } | |
99 temp = temp->next; | |
100 } | |
101 /* | |
102 ok, that shiptype is unheard of. Assume a new shiptype, and get the | |
103 values for CA. Also add the ship to the list so if it gets updated by | |
104 the server later everyone stays happy. [Bill Dyess] | |
105 */ | |
106 printf("Error: getship of unknown ship type %d, using CA defaults\n", s_type); | |
107 temp = shiptypes; | |
108 while (temp) { | |
109 if (temp->ship->s_type == DEFAULT) { | |
110 printf("Adding ship type %d\n", s_type); | |
111 /* bcopy(temp->ship, shipp, sizeof(struct ship)); */ | |
112 /* now add the new ship to the list */ | |
113 new = (struct shiplist *) malloc(sizeof(struct shiplist)); | |
114 new->ship = (struct ship *) malloc(sizeof(struct ship)); | |
115 new->next = shiptypes; | |
116 new->prev = NULL; | |
117 if (shiptypes) | |
118 shiptypes->prev = new; | |
119 shiptypes = new; | |
120 bcopy(temp->ship, new->ship, sizeof(struct ship)); | |
121 new->ship->s_type = s_type; | |
122 return new->ship; | |
123 } | |
124 temp = temp->next; | |
125 } | |
126 return temp->ship; | |
127 | |
128 } | |
129 | |
130 /* fill in ship characteristics */ | |
131 | |
132 static void | |
133 getship_default(shipp, s_type) | |
134 struct ship *shipp; | |
135 int s_type; | |
136 { | |
137 switch (s_type) { | |
138 case SCOUT: | |
139 case PUCK: | |
140 shipp->s_torpspeed = 16; | |
141 shipp->s_phaserrange = 4500; | |
142 shipp->s_maxspeed = 12; | |
143 shipp->s_maxfuel = 5000; | |
144 shipp->s_maxarmies = 2; | |
145 shipp->s_maxshield = 75; | |
146 shipp->s_maxdamage = 75; | |
147 shipp->s_maxwpntemp = 1000; | |
148 shipp->s_maxegntemp = 1000; | |
149 if(s_type == PUCK) { | |
150 shipp->s_type = PUCK; | |
151 shipp->s_letter = 'k'; | |
152 shipp->s_desig[0] = 'P'; | |
153 shipp->s_desig[1] = 'U'; | |
154 shipp->s_bitmap = PUCK; | |
155 } else { | |
156 shipp->s_type = SCOUT; | |
157 shipp->s_letter = 's'; | |
158 shipp->s_desig[0] = 'S'; | |
159 shipp->s_desig[1] = 'C'; | |
160 shipp->s_bitmap = SCOUT; | |
161 } | |
162 break; | |
163 case DESTROYER: | |
164 shipp->s_type = DESTROYER; | |
165 shipp->s_torpspeed = 14; | |
166 shipp->s_phaserrange = 5100; | |
167 shipp->s_maxspeed = 10; | |
168 shipp->s_maxfuel = 7000; | |
169 shipp->s_maxarmies = 5; | |
170 shipp->s_maxshield = 85; | |
171 shipp->s_maxdamage = 85; | |
172 shipp->s_maxwpntemp = 1000; | |
173 shipp->s_maxegntemp = 1000; | |
174 shipp->s_letter = 'd'; | |
175 shipp->s_desig[0] = 'D'; | |
176 shipp->s_desig[1] = 'D'; | |
177 shipp->s_bitmap = DESTROYER; | |
178 break; | |
179 default: | |
180 case DEFAULT: | |
181 case CRUISER: | |
182 shipp->s_type = s_type; | |
183 shipp->s_torpspeed = 12; | |
184 shipp->s_phaserrange = 6000; | |
185 shipp->s_maxspeed = 9; | |
186 shipp->s_maxfuel = 10000; | |
187 shipp->s_maxarmies = 10; | |
188 shipp->s_maxshield = 100; | |
189 shipp->s_maxdamage = 100; | |
190 shipp->s_maxwpntemp = 1000; | |
191 shipp->s_maxegntemp = 1000; | |
192 shipp->s_letter = 'c'; | |
193 shipp->s_desig[0] = 'C'; | |
194 shipp->s_desig[1] = 'A'; | |
195 shipp->s_bitmap = CRUISER; | |
196 break; | |
197 case BATTLESHIP: | |
198 shipp->s_type = BATTLESHIP; | |
199 shipp->s_torpspeed = 12; | |
200 shipp->s_phaserrange = 6300; | |
201 shipp->s_maxspeed = 8; | |
202 shipp->s_maxfuel = 14000; | |
203 shipp->s_maxarmies = 6; | |
204 shipp->s_maxshield = 130; | |
205 shipp->s_maxdamage = 130; | |
206 shipp->s_maxwpntemp = 1000; | |
207 shipp->s_maxegntemp = 1000; | |
208 shipp->s_letter = 'b'; | |
209 shipp->s_desig[0] = 'B'; | |
210 shipp->s_desig[1] = 'B'; | |
211 shipp->s_bitmap = BATTLESHIP; | |
212 break; | |
213 case ASSAULT: | |
214 shipp->s_type = ASSAULT; | |
215 shipp->s_torpspeed = 16; | |
216 shipp->s_phaserrange = 4800; | |
217 shipp->s_maxspeed = 8; | |
218 shipp->s_maxfuel = 6000; | |
219 shipp->s_maxarmies = 20; | |
220 shipp->s_maxshield = 80; | |
221 shipp->s_maxdamage = 200; | |
222 shipp->s_maxwpntemp = 1000; | |
223 shipp->s_maxegntemp = 1200; | |
224 shipp->s_letter = 'a'; | |
225 shipp->s_desig[0] = 'A'; | |
226 shipp->s_desig[1] = 'S'; | |
227 shipp->s_bitmap = ASSAULT; | |
228 break; | |
229 case STARBASE: | |
230 shipp->s_type = STARBASE; | |
231 shipp->s_torpspeed = 14; | |
232 shipp->s_phaserrange = 7200; | |
233 shipp->s_maxspeed = 2; | |
234 shipp->s_maxfuel = 60000; | |
235 shipp->s_maxarmies = 25; | |
236 shipp->s_maxshield = 500; | |
237 shipp->s_maxdamage = 600; | |
238 shipp->s_maxwpntemp = 1300; | |
239 shipp->s_maxegntemp = 1000; | |
240 shipp->s_letter = 'o'; | |
241 shipp->s_desig[0] = 'S'; | |
242 shipp->s_desig[1] = 'B'; | |
243 shipp->s_bitmap = STARBASE; | |
244 break; | |
245 case ATT: /* or GALAXY */ | |
246 if (paradise) { | |
247 shipp->s_type = ATT; | |
248 shipp->s_torpspeed = 20; | |
249 shipp->s_phaserrange = 6000; | |
250 shipp->s_maxspeed = 90; | |
251 shipp->s_maxfuel = 60000; | |
252 shipp->s_maxarmies = 1000; | |
253 shipp->s_maxshield = 30000; | |
254 shipp->s_maxdamage = 30000; | |
255 shipp->s_maxwpntemp = 10000; | |
256 shipp->s_maxegntemp = 10000; | |
257 shipp->s_letter = 'X'; | |
258 shipp->s_desig[0] = 'A'; | |
259 shipp->s_desig[1] = 'T'; | |
260 shipp->s_bitmap = ATT; | |
261 } else { | |
262 shipp->s_type = GALAXY; | |
263 shipp->s_torpspeed = 13; | |
264 shipp->s_phaserrange = 6000; /* this is a guess */ | |
265 shipp->s_maxspeed = 9; | |
266 shipp->s_maxfuel = 12000; | |
267 shipp->s_maxarmies = 12; | |
268 shipp->s_maxshield = 140; | |
269 shipp->s_maxdamage = 120; | |
270 shipp->s_maxwpntemp = 1000; | |
271 shipp->s_maxegntemp = 1000; | |
272 shipp->s_letter = 'g'; | |
273 shipp->s_desig[0] = 'G'; | |
274 shipp->s_desig[1] = 'A'; | |
275 shipp->s_bitmap = FLAGSHIP; | |
276 } | |
277 break; | |
278 case FLAGSHIP: | |
279 shipp->s_type = FLAGSHIP; | |
280 shipp->s_torpspeed = 14; | |
281 shipp->s_phaserrange = 5750; | |
282 shipp->s_maxspeed = 9; | |
283 shipp->s_maxfuel = 14500; | |
284 shipp->s_maxarmies = 8; | |
285 shipp->s_maxshield = 115; | |
286 shipp->s_maxdamage = 115; | |
287 shipp->s_maxwpntemp = 1000; | |
288 shipp->s_maxegntemp = 1500; | |
289 shipp->s_letter = 'f'; | |
290 shipp->s_desig[0] = 'F'; | |
291 shipp->s_desig[1] = 'L'; | |
292 shipp->s_bitmap = FLAGSHIP; | |
293 break; | |
294 case JUMPSHIP: | |
295 shipp->s_type = JUMPSHIP; | |
296 shipp->s_torpspeed = 18; | |
297 shipp->s_phaserrange = 3000; | |
298 shipp->s_maxspeed = 20; | |
299 shipp->s_maxfuel = 50000; | |
300 shipp->s_maxarmies = 0; | |
301 shipp->s_maxshield = 5; | |
302 shipp->s_maxdamage = 60; | |
303 shipp->s_maxwpntemp = 1300; | |
304 shipp->s_maxegntemp = 5000; | |
305 shipp->s_letter = 'j'; | |
306 shipp->s_desig[0] = 'J'; | |
307 shipp->s_desig[1] = 'S'; | |
308 shipp->s_bitmap = JUMPSHIP; | |
309 break; | |
310 case WARBASE: | |
311 shipp->s_type = WARBASE; | |
312 shipp->s_torpspeed = 15; | |
313 shipp->s_phaserrange = 6000; | |
314 shipp->s_maxspeed = 3; | |
315 shipp->s_maxfuel = 50000; | |
316 shipp->s_maxarmies = 0; | |
317 shipp->s_maxshield = 150; | |
318 shipp->s_maxdamage = 500; | |
319 shipp->s_maxwpntemp = 1500; | |
320 shipp->s_maxegntemp = 1000; | |
321 shipp->s_letter = 'w'; | |
322 shipp->s_desig[0] = 'W'; | |
323 shipp->s_desig[1] = 'B'; | |
324 shipp->s_bitmap = WARBASE; | |
325 break; | |
326 | |
327 case LIGHTCRUISER: | |
328 shipp->s_type = LIGHTCRUISER; | |
329 shipp->s_torpspeed = 13; | |
330 shipp->s_phaserrange = 6000; | |
331 shipp->s_maxspeed = 10; | |
332 shipp->s_maxfuel = 9000; | |
333 shipp->s_maxarmies = 4; | |
334 shipp->s_maxshield = 95; | |
335 shipp->s_maxdamage = 90; | |
336 shipp->s_maxwpntemp = 1000; | |
337 shipp->s_maxegntemp = 1500; | |
338 shipp->s_letter = 'l'; | |
339 shipp->s_desig[0] = 'C'; | |
340 shipp->s_desig[1] = 'L'; | |
341 shipp->s_bitmap = LIGHTCRUISER; | |
342 break; | |
343 | |
344 case CARRIER: | |
345 shipp->s_type = CARRIER; | |
346 shipp->s_torpspeed = 10; | |
347 shipp->s_phaserrange = 4500; | |
348 shipp->s_maxspeed = 10; | |
349 shipp->s_maxfuel = 15000; | |
350 shipp->s_maxarmies = 3; | |
351 shipp->s_maxshield = 100; | |
352 shipp->s_maxdamage = 150; | |
353 shipp->s_maxwpntemp = 1000; | |
354 shipp->s_maxegntemp = 1000; | |
355 shipp->s_letter = 'v'; | |
356 shipp->s_desig[0] = 'C'; | |
357 shipp->s_desig[1] = 'V'; | |
358 shipp->s_bitmap = CARRIER; | |
359 break; | |
360 case UTILITY: | |
361 shipp->s_type = UTILITY; | |
362 shipp->s_torpspeed = 16; | |
363 shipp->s_phaserrange = 5000; | |
364 shipp->s_maxspeed = 7; | |
365 shipp->s_maxfuel = 12000; | |
366 shipp->s_maxarmies = 12; | |
367 shipp->s_maxshield = 110; | |
368 shipp->s_maxdamage = 180; | |
369 shipp->s_maxwpntemp = 1000; | |
370 shipp->s_maxegntemp = 1800; | |
371 shipp->s_letter = 'u'; | |
372 shipp->s_desig[0] = 'U'; | |
373 shipp->s_desig[1] = 'T'; | |
374 shipp->s_bitmap = UTILITY; | |
375 break; | |
376 | |
377 case PATROL: | |
378 shipp->s_type = PATROL; | |
379 shipp->s_torpspeed = 15; | |
380 shipp->s_phaserrange = 5000; | |
381 shipp->s_maxspeed = 11; | |
382 shipp->s_maxfuel = 4000; | |
383 shipp->s_maxarmies = 1; | |
384 shipp->s_maxshield = 50; | |
385 shipp->s_maxdamage = 40; | |
386 shipp->s_maxwpntemp = 1000; | |
387 shipp->s_maxegntemp = 1500; | |
388 shipp->s_letter = 'p'; | |
389 shipp->s_desig[0] = 'P'; | |
390 shipp->s_desig[1] = 'T'; | |
391 shipp->s_bitmap = PATROL; | |
392 break; | |
393 } | |
394 buildShipKeymap(shipp); | |
395 } |