1
/************************************************************************************
3
AstroMenace (Hardcore 3D space shooter with spaceship upgrade possibilities)
4
Copyright © 2006-2012 Michael Kurinnoy, Viewizard
7
AstroMenace is free software: you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation, either version 3 of the License, or
10
(at your option) any later version.
12
AstroMenace is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
17
You should have received a copy of the GNU General Public License
18
along with AstroMenace. If not, see <http://www.gnu.org/licenses/>.
21
Web Site: http://www.viewizard.com/
22
Project: http://sourceforge.net/projects/openastromenace/
23
E-mail: viewizard@viewizard.com
25
*************************************************************************************/
28
/// подключаем нужные файлы
29
#include "PirateShip.h"
36
int BossWeaponQuantity;
40
const char *TextureName;
41
const char *NormalMapName;
42
bool NeedTangentAndBinormal;
45
const int PresetPirateShipDataCount = 15;
46
PirateShipData PresetPirateShipData[PresetPirateShipDataCount] =
48
{2, 0, 2, 20, "DATA/MODELS/PIRATESHIP/gunship-01.VW3D", "DATA/MODELS/gr-04.VW2D", " ", false},
49
{1, 0, 2, 30, "DATA/MODELS/PIRATESHIP/bomber-07.VW3D", "DATA/MODELS/gr-04.VW2D", " ", false},
50
{4, 0, 2, 100,"DATA/MODELS/PIRATESHIP/gunship-03.VW3D", "DATA/MODELS/gr-03.VW2D", " ", false},
51
{4, 0, 2, 200,"DATA/MODELS/PIRATESHIP/gunship-04.VW3D", "DATA/MODELS/gr-03.VW2D", " ", false},
52
{4, 0, 6, 400,"DATA/MODELS/PIRATESHIP/gunship-02.VW3D", "DATA/MODELS/gr-03.VW2D", " ", false},
54
{1, 2, 2, 600,"DATA/MODELS/PIRATESHIP/bomber-03.VW3D", "DATA/MODELS/gr-05.VW2D", " ", false},
55
{1, 2, 4, 1200,"DATA/MODELS/PIRATESHIP/bomber-02.VW3D", "DATA/MODELS/gr-05.VW2D", " ", false},
56
{1, 6, 4, 1000,"DATA/MODELS/PIRATESHIP/bomber-04.VW3D", "DATA/MODELS/gr-03.VW2D", " ", false},
57
{3, 2, 6, 2000,"DATA/MODELS/PIRATESHIP/bomber-05.VW3D", "DATA/MODELS/gr-04.VW2D", "DATA/MODELS/NORMALMAP/bomber_nm.tga", true},
58
{4, 4, 8, 2500,"DATA/MODELS/PIRATESHIP/bomber-06.VW3D", "DATA/MODELS/gr-04.VW2D", "DATA/MODELS/NORMALMAP/bomber_nm.tga", true},
60
{0, 2, 2, 300,"DATA/MODELS/PIRATESHIP/bomber-03.VW3D", "DATA/MODELS/gr-05.VW2D", " ", false},
61
{0, 2, 4, 600,"DATA/MODELS/PIRATESHIP/bomber-02.VW3D", "DATA/MODELS/gr-05.VW2D", " ", false},
62
{0, 6, 4, 500,"DATA/MODELS/PIRATESHIP/bomber-04.VW3D", "DATA/MODELS/gr-03.VW2D", " ", false},
63
{0, 2, 6, 1000,"DATA/MODELS/PIRATESHIP/bomber-05.VW3D", "DATA/MODELS/gr-04.VW2D", "DATA/MODELS/NORMALMAP/bomber_nm.tga", true},
64
{0, 4, 8, 1500,"DATA/MODELS/PIRATESHIP/bomber-06.VW3D", "DATA/MODELS/gr-04.VW2D", "DATA/MODELS/NORMALMAP/bomber_nm.tga", true}
70
//-----------------------------------------------------------------------------
71
// Конструктор, инициализация всех переменных
72
//-----------------------------------------------------------------------------
73
void CPirateShip::Create(int PirateShipNum)
75
ObjectStatus = 1; // чужой
77
ObjectCreationType = PirateShipNum;
78
PromptDrawDist2 = 100.0f;
79
if (PirateShipNum > 5) PromptDrawDist2 = 20000.0f; // большие корабли пиратов
81
ResistanceHull = 1.0f;
82
ResistanceSystems = 1.0f;
85
MaxSpeedRotate = 40.0f;
87
EngineLeftQuantity = 0;
88
EngineRightQuantity = 0;
89
Strength = StrengthStart = PresetPirateShipData[PirateShipNum-1].Strength/GameNPCArmorPenalty;
90
WeaponQuantity = PresetPirateShipData[PirateShipNum-1].WeaponQuantity;
91
BossWeaponQuantity = PresetPirateShipData[PirateShipNum-1].BossWeaponQuantity;
92
EngineQuantity = PresetPirateShipData[PirateShipNum-1].EngineQuantity;
95
LoadObjectData(PresetPirateShipData[PirateShipNum-1].Name, this, 0, 2.0f, PresetPirateShipData[PirateShipNum-1].NeedTangentAndBinormal && Setup.UseGLSL);
97
// всегда только эти текстуры
98
for (int i=0; i<DrawObjectQuantity; i++)
100
Texture[i] = vw_FindTextureByName(PresetPirateShipData[PirateShipNum-1].TextureName);
101
if (PresetPirateShipData[PirateShipNum-1].NeedTangentAndBinormal && Setup.UseGLSL)
102
NormalMap[i] = vw_FindTextureByName(PresetPirateShipData[PirateShipNum-1].NormalMapName);
106
// начальные установки для оружия
107
if (WeaponQuantity > 0)
109
WeaponSetFire = new bool[WeaponQuantity];
110
WeaponLocation = new VECTOR3D[WeaponQuantity];
111
WeaponType = new int[WeaponQuantity];
112
Weapon = new CWeapon*[WeaponQuantity];
113
for (int i=0; i<WeaponQuantity; i++)
115
WeaponSetFire[i] = false;
120
if (BossWeaponQuantity > 0)
122
BossWeaponSetFire = new bool[BossWeaponQuantity];
123
BossWeaponLocation = new VECTOR3D[BossWeaponQuantity];
124
BossWeaponType = new int[BossWeaponQuantity];
125
BossWeapon = new CWeapon*[BossWeaponQuantity];
126
for (int i=0; i<BossWeaponQuantity; i++)
128
BossWeaponSetFire[i] = false;
129
BossWeaponType[i] = 1;
133
// начальные установки для двигателей
134
EngineLocation = new VECTOR3D[EngineQuantity];
135
Engine = new eParticleSystem*[EngineQuantity];
136
for (int i=0; i<EngineQuantity; i++) Engine[i] = 0;
145
// перебираем и ставим нужные данные
146
switch (PirateShipNum)
152
WeaponLocation[0] = VECTOR3D(1.8f, -1.2f, 6.0f);
153
Weapon[0] = new CWeapon;
154
Weapon[0]->Create(204);
155
WeaponLocation[1] = VECTOR3D(-1.8f, -1.2f, 6.0f);
156
Weapon[1] = new CWeapon;
157
Weapon[1]->Create(204);
158
Weapon[1]->SoundNum = 0;
162
Engine[0] = new eParticleSystem;
163
EngineLocation[0] = VECTOR3D(0.9f, 1.6f, -5.4f);
164
SetPirateShipEngine(Engine[0], 1);
165
Engine[1] = new eParticleSystem;
166
EngineLocation[1] = VECTOR3D(-0.9f, 1.6f, -5.4f);
167
SetPirateShipEngine(Engine[1], 1);
174
WeaponLocation[0] = VECTOR3D(0.0f, -2.0f, 2.0f);
175
Weapon[0] = new CWeapon;
176
Weapon[0]->Create(205);
178
Engine[0] = new eParticleSystem;
179
EngineLocation[0] = VECTOR3D(1.1f, 0.5f, -5.7f);
180
SetPirateShipEngine(Engine[0], 2);
181
Engine[1] = new eParticleSystem;
182
EngineLocation[1] = VECTOR3D(-1.1f, 0.5f, -5.7f);
183
SetPirateShipEngine(Engine[1], 2);
190
WeaponLocation[0] = VECTOR3D(3.0f, -0.2f, -0.5f);
191
Weapon[0] = new CWeapon;
192
Weapon[0]->Create(204);
193
WeaponLocation[1] = VECTOR3D(-3.0f, -0.2f, -0.5f);
194
Weapon[1] = new CWeapon;
195
Weapon[1]->Create(204);
196
WeaponLocation[2] = VECTOR3D(2.0f, -0.2f, 0.0f);
197
Weapon[2] = new CWeapon;
198
Weapon[2]->Create(206);
199
WeaponLocation[3] = VECTOR3D(-2.0f, -0.2f, 0.0f);
200
Weapon[3] = new CWeapon;
201
Weapon[3]->Create(206);
203
Engine[0] = new eParticleSystem;
204
EngineLocation[0] = VECTOR3D(1.0f, 1.8f, -1.2f);
205
SetPirateShipEngine(Engine[0], 1);
206
Engine[1] = new eParticleSystem;
207
EngineLocation[1] = VECTOR3D(-1.0f, 1.8f, -1.2f);
208
SetPirateShipEngine(Engine[1], 1);
214
WeaponLocation[0] = VECTOR3D(4.3f, -0.4f, -0.5f);
215
Weapon[0] = new CWeapon;
216
Weapon[0]->Create(211);
217
WeaponLocation[1] = VECTOR3D(-4.3f, -0.4f, -0.5f);
218
Weapon[1] = new CWeapon;
219
Weapon[1]->Create(211);
220
WeaponLocation[2] = VECTOR3D(3.0f, -0.4f, 0.5f);
221
Weapon[2] = new CWeapon;
222
Weapon[2]->Create(205);
223
WeaponLocation[3] = VECTOR3D(-3.0f, -0.4f, 0.5f);
224
Weapon[3] = new CWeapon;
225
Weapon[3]->Create(205);
227
Engine[0] = new eParticleSystem;
228
EngineLocation[0] = VECTOR3D(1.3f, 1.9f, -1.7f);
229
SetPirateShipEngine(Engine[0], 2);
230
Engine[1] = new eParticleSystem;
231
EngineLocation[1] = VECTOR3D(-1.3f, 1.9f, -1.7f);
232
SetPirateShipEngine(Engine[1], 2);
239
WeaponLocation[0] = VECTOR3D(1.0f, 4.2f, -5.5f);
240
Weapon[0] = new CWeapon;
241
Weapon[0]->Create(211);
242
WeaponLocation[1] = VECTOR3D(-1.0f, 4.2f, -5.5f);
243
Weapon[1] = new CWeapon;
244
Weapon[1]->Create(211);
245
WeaponLocation[2] = VECTOR3D(0.5f, -1.8f, 5.0f);
246
Weapon[2] = new CWeapon;
247
Weapon[2]->Create(211);
248
WeaponLocation[3] = VECTOR3D(-0.5f, -1.8f, 5.0f);
249
Weapon[3] = new CWeapon;
250
Weapon[3]->Create(211);
252
Engine[0] = new eParticleSystem;
253
EngineLocation[0] = VECTOR3D(5.8f, 6.5f-4.6f, 0.0f);
254
SetPirateShipEngine(Engine[0], 3);
255
Engine[1] = new eParticleSystem;
256
EngineLocation[1] = VECTOR3D(-5.8f, 6.5f-4.6f, 0.0f);
257
SetPirateShipEngine(Engine[1], 3);
258
Engine[2] = new eParticleSystem;
259
EngineLocation[2] = VECTOR3D(5.8f, 7.3f-4.6f, 0.0f);
260
SetPirateShipEngine(Engine[2], 4);
261
Engine[3] = new eParticleSystem;
262
EngineLocation[3] = VECTOR3D(-5.8f, 7.3f-4.6f, 0.0f);
263
SetPirateShipEngine(Engine[3], 4);
264
Engine[4] = new eParticleSystem;
265
EngineLocation[4] = VECTOR3D(5.8f, 6.1f-4.6f, -2.3f);
266
SetPirateShipEngine(Engine[4], 1);
267
Engine[4]->Direction = VECTOR3D(0.0f, -0.2f, -0.8f);
268
Engine[5] = new eParticleSystem;
269
EngineLocation[5] = VECTOR3D(-5.8f, 6.1f-4.6f, -2.3f);
270
SetPirateShipEngine(Engine[5], 1);
271
Engine[5]->Direction = VECTOR3D(0.0f, -0.2f, -0.8f);
276
WeaponLocation[0] = VECTOR3D(0.0f, 2.2f, -0.2f);
277
Weapon[0] = new CWeapon;
278
Weapon[0]->Create(202);
280
BossWeaponLocation[0] = VECTOR3D(5.4f, 1.0f, 2.0f);
281
BossWeapon[0] = new CWeapon;
282
BossWeapon[0]->Create(209);
283
BossWeaponLocation[1] = VECTOR3D(-5.4f, 1.0f, 2.0f);
284
BossWeapon[1] = new CWeapon;
285
BossWeapon[1]->Create(209);
288
WeaponFlareLocation = VECTOR3D(0.0f, 5.0f, 0.0f);
289
WeaponFlare = new CWeapon;
290
WeaponFlare->Create(203);
292
Engine[0] = new eParticleSystem;
293
EngineLocation[0] = VECTOR3D(1.7f, 6.6f-3.83f, -14.2f);
294
SetPirateShipEngine(Engine[0], 2);
295
Engine[1] = new eParticleSystem;
296
EngineLocation[1] = VECTOR3D(-1.7f, 6.6f-3.83f, -14.2f);
297
SetPirateShipEngine(Engine[1], 2);
302
WeaponLocation[0] = VECTOR3D(0.0f, 2.4f, -0.2f);
303
Weapon[0] = new CWeapon;
304
Weapon[0]->Create(202);
306
BossWeaponLocation[0] = VECTOR3D(9.5f, 1.3f, 2.0f);
307
BossWeapon[0] = new CWeapon;
308
BossWeapon[0]->Create(210);
309
BossWeaponLocation[1] = VECTOR3D(-9.5f, 1.3f, 2.0f);
310
BossWeapon[1] = new CWeapon;
311
BossWeapon[1]->Create(210);
314
WeaponFlareLocation = VECTOR3D(0.0f, 5.0f, 0.0f);
315
WeaponFlare = new CWeapon;
316
WeaponFlare->Create(203);
318
Engine[0] = new eParticleSystem;
319
EngineLocation[0] = VECTOR3D(2.2f, 7.6f-5.25f, -14.8f);
320
SetPirateShipEngine(Engine[0], 2);
321
Engine[1] = new eParticleSystem;
322
EngineLocation[1] = VECTOR3D(-2.2f, 7.6f-5.25f, -14.8f);
323
SetPirateShipEngine(Engine[1], 2);
324
Engine[2] = new eParticleSystem;
325
EngineLocation[2] = VECTOR3D(17.2f, 6.8f-5.25f, -9.0f);
326
SetPirateShipEngine(Engine[2], 5);
327
Engine[3] = new eParticleSystem;
328
EngineLocation[3] = VECTOR3D(-17.2f, 6.8f-5.25f, -9.0f);
329
SetPirateShipEngine(Engine[3], 5);
334
WeaponLocation[0] = VECTOR3D(0.0f, 2.4f, -0.2f);
335
Weapon[0] = new CWeapon;
336
Weapon[0]->Create(202);
338
BossWeaponLocation[0] = VECTOR3D(9.1f, 1.3f, 2.0f);
339
BossWeapon[0] = new CWeapon;
340
BossWeapon[0]->Create(206);
341
BossWeaponLocation[1] = VECTOR3D(9.4f, 1.0f, 2.0f);
342
BossWeapon[1] = new CWeapon;
343
BossWeapon[1]->Create(206);
344
BossWeaponLocation[2] = VECTOR3D(9.1f, 0.7f, 2.0f);
345
BossWeapon[2] = new CWeapon;
346
BossWeapon[2]->Create(206);
348
BossWeaponLocation[3] = VECTOR3D(-9.1f, 1.3f, 2.0f);
349
BossWeapon[3] = new CWeapon;
350
BossWeapon[3]->Create(206);
351
BossWeaponLocation[4] = VECTOR3D(-9.4f, 1.0f, 2.0f);
352
BossWeapon[4] = new CWeapon;
353
BossWeapon[4]->Create(206);
354
BossWeaponLocation[5] = VECTOR3D(-9.1f, 0.7f, 2.0f);
355
BossWeapon[5] = new CWeapon;
356
BossWeapon[5]->Create(206);
359
WeaponFlareLocation = VECTOR3D(0.0f, 6.0f, 0.0f);
360
WeaponFlare = new CWeapon;
361
WeaponFlare->Create(203);
363
Engine[0] = new eParticleSystem;
364
EngineLocation[0] = VECTOR3D(4.5f, 6.3f-3.62f, -12.5f);
365
SetPirateShipEngine(Engine[0], 2);
366
Engine[1] = new eParticleSystem;
367
EngineLocation[1] = VECTOR3D(-4.5f, 6.3f-3.62f, -12.5f);
368
SetPirateShipEngine(Engine[1], 2);
369
Engine[2] = new eParticleSystem;
370
EngineLocation[2] = VECTOR3D(9.2f, 4.4f-3.62f, -5.6f);
371
SetPirateShipEngine(Engine[2], 5);
372
Engine[3] = new eParticleSystem;
373
EngineLocation[3] = VECTOR3D(-9.2f, 4.4f-3.62f, -5.6f);
374
SetPirateShipEngine(Engine[3], 5);
379
WeaponLocation[0] = VECTOR3D(0.0f, 4.2f, 7.0f);
380
Weapon[0] = new CWeapon;
381
Weapon[0]->Create(201);
382
WeaponLocation[1] = VECTOR3D(0.0f, 4.2f, 3.5f);
383
Weapon[1] = new CWeapon;
384
Weapon[1]->Create(201);
385
Weapon[1]->SetRotation(VECTOR3D(0,180,0));
386
WeaponLocation[2] = VECTOR3D(0.0f, 3.4f, -5.0f);
387
Weapon[2] = new CWeapon;
388
Weapon[2]->Create(202);
390
BossWeaponLocation[0] = VECTOR3D(11.1f, 2.7f, 9.0f);
391
BossWeapon[0] = new CWeapon;
392
BossWeapon[0]->Create(205);
393
BossWeaponLocation[1] = VECTOR3D(-11.1f, 2.7f, 9.0f);
394
BossWeapon[1] = new CWeapon;
395
BossWeapon[1]->Create(205);
398
WeaponFlareLocation = VECTOR3D(0.0f, 7.0f, 0.0f);
399
WeaponFlare = new CWeapon;
400
WeaponFlare->Create(203);
402
Engine[0] = new eParticleSystem;
403
EngineLocation[0] = VECTOR3D(1.4f, 8.7f-4.9f, -20.4f);
404
SetPirateShipEngine(Engine[0], 2);
405
Engine[1] = new eParticleSystem;
406
EngineLocation[1] = VECTOR3D(-1.4f, 8.7f-4.9f, -20.4f);
407
SetPirateShipEngine(Engine[1], 2);
408
Engine[2] = new eParticleSystem;
409
EngineLocation[2] = VECTOR3D(4.7f, 7.0f-4.9f, 0.0f);
410
SetPirateShipEngine(Engine[2], 2);
411
Engine[3] = new eParticleSystem;
412
EngineLocation[3] = VECTOR3D(-4.7f, 7.0f-4.9f, 0.0f);
413
SetPirateShipEngine(Engine[3], 2);
414
Engine[4] = new eParticleSystem;
415
EngineLocation[4] = VECTOR3D(7.5f, 6.8f-4.9f, 0.0f);
416
SetPirateShipEngine(Engine[4], 2);
417
Engine[5] = new eParticleSystem;
418
EngineLocation[5] = VECTOR3D(-7.5f, 6.8f-4.9f, 0.0f);
419
SetPirateShipEngine(Engine[5], 2);
424
WeaponLocation[0] = VECTOR3D(0.0f, 4.4f, 6.8f);
425
Weapon[0] = new CWeapon;
426
Weapon[0]->Create(201);
427
WeaponLocation[1] = VECTOR3D(0.0f, 4.4f, 2.6f);
428
Weapon[1] = new CWeapon;
429
Weapon[1]->Create(201);
430
Weapon[1]->SetRotation(VECTOR3D(0,180,0));
431
WeaponLocation[2] = VECTOR3D(0.0f, 2.6f, -7.0f);
432
Weapon[2] = new CWeapon;
433
Weapon[2]->Create(202);
434
WeaponLocation[3] = VECTOR3D(0.0f, 2.6f, -16.0f);
435
Weapon[3] = new CWeapon;
436
Weapon[3]->Create(201);
437
Weapon[3]->SetRotation(VECTOR3D(0,180,0));
439
BossWeaponLocation[0] = VECTOR3D(11.1f, 2.7f, 8.0f);
440
BossWeapon[0] = new CWeapon;
441
BossWeapon[0]->Create(205);
442
BossWeaponLocation[1] = VECTOR3D(-11.1f, 2.7f, 8.0f);
443
BossWeapon[1] = new CWeapon;
444
BossWeapon[1]->Create(205);
445
BossWeaponLocation[2] = VECTOR3D(16.5f, 2.7f, 7.5f);
446
BossWeapon[2] = new CWeapon;
447
BossWeapon[2]->Create(205);
448
BossWeaponLocation[3] = VECTOR3D(-16.5f, 2.7f, 7.5f);
449
BossWeapon[3] = new CWeapon;
450
BossWeapon[3]->Create(205);
453
WeaponFlareLocation = VECTOR3D(0.0f, 7.0f, 0.0f);
454
WeaponFlare = new CWeapon;
455
WeaponFlare->Create(203);
457
Engine[0] = new eParticleSystem;
458
EngineLocation[0] = VECTOR3D(3.8f, 5.4f-4.29f, -19.5f);
459
SetPirateShipEngine(Engine[0], 2);
460
Engine[1] = new eParticleSystem;
461
EngineLocation[1] = VECTOR3D(-3.8f, 5.4f-4.29f, -19.5f);
462
SetPirateShipEngine(Engine[1], 2);
463
Engine[2] = new eParticleSystem;
464
EngineLocation[2] = VECTOR3D(5.8f, 6.0f-4.29f, -0.9f);
465
SetPirateShipEngine(Engine[2], 2);
466
Engine[3] = new eParticleSystem;
467
EngineLocation[3] = VECTOR3D(-5.8f, 6.0f-4.29f, -0.9f);
468
SetPirateShipEngine(Engine[3], 2);
469
Engine[4] = new eParticleSystem;
470
EngineLocation[4] = VECTOR3D(8.0f, 6.0f-4.29f, -0.9f);
471
SetPirateShipEngine(Engine[4], 2);
472
Engine[5] = new eParticleSystem;
473
EngineLocation[5] = VECTOR3D(-8.0f, 6.0f-4.29f, -0.9f);
474
SetPirateShipEngine(Engine[5], 2);
475
Engine[6] = new eParticleSystem;
476
EngineLocation[6] = VECTOR3D(20.0f, 5.0f-4.29f, -3.6f);
477
SetPirateShipEngine(Engine[6], 2);
478
Engine[7] = new eParticleSystem;
479
EngineLocation[7] = VECTOR3D(-20.0f, 5.0f-4.29f, -3.6f);
480
SetPirateShipEngine(Engine[7], 2);
489
BossWeaponLocation[0] = VECTOR3D(5.4f, 1.0f, 2.0f);
490
BossWeapon[0] = new CWeapon;
491
BossWeapon[0]->Create(209);
492
BossWeaponLocation[1] = VECTOR3D(-5.4f, 1.0f, 2.0f);
493
BossWeapon[1] = new CWeapon;
494
BossWeapon[1]->Create(209);
496
WeaponFlareLocation = VECTOR3D(0.0f, 5.0f, 0.0f);
497
WeaponFlare = new CWeapon;
498
WeaponFlare->Create(203);
500
Engine[0] = new eParticleSystem;
501
EngineLocation[0] = VECTOR3D(1.7f, 6.6f-3.83f, -14.2f);
502
SetPirateShipEngine(Engine[0], 2);
503
Engine[1] = new eParticleSystem;
504
EngineLocation[1] = VECTOR3D(-1.7f, 6.6f-3.83f, -14.2f);
505
SetPirateShipEngine(Engine[1], 2);
510
BossWeaponLocation[0] = VECTOR3D(9.5f, 1.3f, 2.0f);
511
BossWeapon[0] = new CWeapon;
512
BossWeapon[0]->Create(210);
513
BossWeaponLocation[1] = VECTOR3D(-9.5f, 1.3f, 2.0f);
514
BossWeapon[1] = new CWeapon;
515
BossWeapon[1]->Create(210);
517
WeaponFlareLocation = VECTOR3D(0.0f, 5.0f, 0.0f);
518
WeaponFlare = new CWeapon;
519
WeaponFlare->Create(203);
521
Engine[0] = new eParticleSystem;
522
EngineLocation[0] = VECTOR3D(2.2f, 7.6f-5.25f, -14.8f);
523
SetPirateShipEngine(Engine[0], 2);
524
Engine[1] = new eParticleSystem;
525
EngineLocation[1] = VECTOR3D(-2.2f, 7.6f-5.25f, -14.8f);
526
SetPirateShipEngine(Engine[1], 2);
527
Engine[2] = new eParticleSystem;
528
EngineLocation[2] = VECTOR3D(17.2f, 6.8f-5.25f, -9.0f);
529
SetPirateShipEngine(Engine[2], 5);
530
Engine[3] = new eParticleSystem;
531
EngineLocation[3] = VECTOR3D(-17.2f, 6.8f-5.25f, -9.0f);
532
SetPirateShipEngine(Engine[3], 5);
537
BossWeaponLocation[0] = VECTOR3D(9.1f, 1.3f, 2.0f);
538
BossWeapon[0] = new CWeapon;
539
BossWeapon[0]->Create(206);
540
BossWeaponLocation[1] = VECTOR3D(9.4f, 1.0f, 2.0f);
541
BossWeapon[1] = new CWeapon;
542
BossWeapon[1]->Create(206);
543
BossWeaponLocation[2] = VECTOR3D(9.1f, 0.7f, 2.0f);
544
BossWeapon[2] = new CWeapon;
545
BossWeapon[2]->Create(206);
546
BossWeaponLocation[3] = VECTOR3D(-9.1f, 1.3f, 2.0f);
547
BossWeapon[3] = new CWeapon;
548
BossWeapon[3]->Create(206);
549
BossWeaponLocation[4] = VECTOR3D(-9.4f, 1.0f, 2.0f);
550
BossWeapon[4] = new CWeapon;
551
BossWeapon[4]->Create(206);
552
BossWeaponLocation[5] = VECTOR3D(-9.1f, 0.7f, 2.0f);
553
BossWeapon[5] = new CWeapon;
554
BossWeapon[5]->Create(206);
556
WeaponFlareLocation = VECTOR3D(0.0f, 6.0f, 0.0f);
557
WeaponFlare = new CWeapon;
558
WeaponFlare->Create(203);
560
Engine[0] = new eParticleSystem;
561
EngineLocation[0] = VECTOR3D(4.5f, 6.3f-3.62f, -12.5f);
562
SetPirateShipEngine(Engine[0], 2);
563
Engine[1] = new eParticleSystem;
564
EngineLocation[1] = VECTOR3D(-4.5f, 6.3f-3.62f, -12.5f);
565
SetPirateShipEngine(Engine[1], 2);
566
Engine[2] = new eParticleSystem;
567
EngineLocation[2] = VECTOR3D(9.2f, 4.4f-3.62f, -5.6f);
568
SetPirateShipEngine(Engine[2], 5);
569
Engine[3] = new eParticleSystem;
570
EngineLocation[3] = VECTOR3D(-9.2f, 4.4f-3.62f, -5.6f);
571
SetPirateShipEngine(Engine[3], 5);
576
BossWeaponLocation[0] = VECTOR3D(11.1f, 2.7f, 9.0f);
577
BossWeapon[0] = new CWeapon;
578
BossWeapon[0]->Create(205);
579
BossWeaponLocation[1] = VECTOR3D(-11.1f, 2.7f, 9.0f);
580
BossWeapon[1] = new CWeapon;
581
BossWeapon[1]->Create(205);
583
WeaponFlareLocation = VECTOR3D(0.0f, 7.0f, 0.0f);
584
WeaponFlare = new CWeapon;
585
WeaponFlare->Create(203);
587
Engine[0] = new eParticleSystem;
588
EngineLocation[0] = VECTOR3D(1.4f, 8.7f-4.9f, -20.4f);
589
SetPirateShipEngine(Engine[0], 2);
590
Engine[1] = new eParticleSystem;
591
EngineLocation[1] = VECTOR3D(-1.4f, 8.7f-4.9f, -20.4f);
592
SetPirateShipEngine(Engine[1], 2);
593
Engine[2] = new eParticleSystem;
594
EngineLocation[2] = VECTOR3D(4.7f, 7.0f-4.9f, 0.0f);
595
SetPirateShipEngine(Engine[2], 2);
596
Engine[3] = new eParticleSystem;
597
EngineLocation[3] = VECTOR3D(-4.7f, 7.0f-4.9f, 0.0f);
598
SetPirateShipEngine(Engine[3], 2);
599
Engine[4] = new eParticleSystem;
600
EngineLocation[4] = VECTOR3D(7.5f, 6.8f-4.9f, 0.0f);
601
SetPirateShipEngine(Engine[4], 2);
602
Engine[5] = new eParticleSystem;
603
EngineLocation[5] = VECTOR3D(-7.5f, 6.8f-4.9f, 0.0f);
604
SetPirateShipEngine(Engine[5], 2);
609
BossWeaponLocation[0] = VECTOR3D(11.1f, 2.7f, 8.0f);
610
BossWeapon[0] = new CWeapon;
611
BossWeapon[0]->Create(205);
612
BossWeaponLocation[1] = VECTOR3D(-11.1f, 2.7f, 8.0f);
613
BossWeapon[1] = new CWeapon;
614
BossWeapon[1]->Create(205);
615
BossWeaponLocation[2] = VECTOR3D(16.5f, 2.7f, 7.5f);
616
BossWeapon[2] = new CWeapon;
617
BossWeapon[2]->Create(205);
618
BossWeaponLocation[3] = VECTOR3D(-16.5f, 2.7f, 7.5f);
619
BossWeapon[3] = new CWeapon;
620
BossWeapon[3]->Create(205);
622
WeaponFlareLocation = VECTOR3D(0.0f, 7.0f, 0.0f);
623
WeaponFlare = new CWeapon;
624
WeaponFlare->Create(203);
626
Engine[0] = new eParticleSystem;
627
EngineLocation[0] = VECTOR3D(3.8f, 5.4f-4.29f, -19.5f);
628
SetPirateShipEngine(Engine[0], 2);
629
Engine[1] = new eParticleSystem;
630
EngineLocation[1] = VECTOR3D(-3.8f, 5.4f-4.29f, -19.5f);
631
SetPirateShipEngine(Engine[1], 2);
632
Engine[2] = new eParticleSystem;
633
EngineLocation[2] = VECTOR3D(5.8f, 6.0f-4.29f, -0.9f);
634
SetPirateShipEngine(Engine[2], 2);
635
Engine[3] = new eParticleSystem;
636
EngineLocation[3] = VECTOR3D(-5.8f, 6.0f-4.29f, -0.9f);
637
SetPirateShipEngine(Engine[3], 2);
638
Engine[4] = new eParticleSystem;
639
EngineLocation[4] = VECTOR3D(8.0f, 6.0f-4.29f, -0.9f);
640
SetPirateShipEngine(Engine[4], 2);
641
Engine[5] = new eParticleSystem;
642
EngineLocation[5] = VECTOR3D(-8.0f, 6.0f-4.29f, -0.9f);
643
SetPirateShipEngine(Engine[5], 2);
644
Engine[6] = new eParticleSystem;
645
EngineLocation[6] = VECTOR3D(20.0f, 5.0f-4.29f, -3.6f);
646
SetPirateShipEngine(Engine[6], 2);
647
Engine[7] = new eParticleSystem;
648
EngineLocation[7] = VECTOR3D(-20.0f, 5.0f-4.29f, -3.6f);
649
SetPirateShipEngine(Engine[7], 2);
657
fprintf(stderr, "Wrong PirateShipNum!");
662
for (int i=0; i< EngineQuantity; i++)
664
Engine[i]->SetStartLocation(EngineLocation[i]);
665
// находим кол-во внутренних источников света
666
if (Engine[i]->Light != 0) InternalLights++;
670
// находим все данные по геометрии
671
::CObject3D::InitByDrawObjectList();