~ubuntu-branches/debian/sid/astromenace/sid

« back to all changes in this revision

Viewing changes to AstroMenaceSource/Object3D/SpaceShip/AlienSpaceMotherShip/AlienSpaceMotherShip.cpp

  • Committer: Package Import Robot
  • Author(s): Boris Pek
  • Date: 2013-04-09 02:04:25 UTC
  • Revision ID: package-import@ubuntu.com-20130409020425-a7fl9xk4diamw6di
Tags: upstream-1.3.1+repack
Import upstream version 1.3.1+repack

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/************************************************************************************
 
2
 
 
3
        AstroMenace (Hardcore 3D space shooter with spaceship upgrade possibilities)
 
4
        Copyright © 2006-2012 Michael Kurinnoy, Viewizard
 
5
 
 
6
 
 
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.
 
11
 
 
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.
 
16
 
 
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/>.
 
19
 
 
20
 
 
21
        Web Site: http://www.viewizard.com/
 
22
        Project: http://sourceforge.net/projects/openastromenace/
 
23
        E-mail: viewizard@viewizard.com
 
24
 
 
25
*************************************************************************************/
 
26
 
 
27
 
 
28
/// подключаем нужные файлы
 
29
#include "AlienSpaceMotherShip.h"
 
30
 
 
31
 
 
32
 
 
33
struct AlienSpaceMotherShipData
 
34
{
 
35
 
 
36
        int             WeaponQuantity;
 
37
        int             BossWeaponQuantity;
 
38
        int             EngineQuantity;
 
39
        float   Strength;
 
40
        float   ShieldStrength;
 
41
        const   char *Name;
 
42
        const   char *Texture;
 
43
        const   char *TextureIllum;
 
44
};
 
45
 
 
46
const int       PresetAlienSpaceMotherShipDataCount = 8;
 
47
AlienSpaceMotherShipData PresetAlienSpaceMotherShipData[PresetAlienSpaceMotherShipDataCount] =
 
48
{
 
49
        {14,1,  10,     3000, 1500,     "DATA/MODELS/ALIENMOTHERSHIP/alm-01.VW3D", "DATA/MODELS/ALIENMOTHERSHIP/alm-text04.VW2D", "DATA/MODELS/ALIENMOTHERSHIP/alm-illum04.VW2D"},
 
50
        {8,     8,      10,     4000, 3000,     "DATA/MODELS/ALIENMOTHERSHIP/alm-02.VW3D", "DATA/MODELS/ALIENMOTHERSHIP/alm-text04.VW2D", "DATA/MODELS/ALIENMOTHERSHIP/alm-illum04.VW2D"},
 
51
        {8,     1,      8,      5000, 3300,     "DATA/MODELS/ALIENMOTHERSHIP/alm-03.VW3D", "DATA/MODELS/ALIENMOTHERSHIP/alm-text02.VW2D", "DATA/MODELS/ALIENMOTHERSHIP/alm-illum02.VW2D"},
 
52
        {8,     8,      12,     6000, 3500,     "DATA/MODELS/ALIENMOTHERSHIP/alm-04.VW3D", "DATA/MODELS/ALIENMOTHERSHIP/alm-text02.VW2D", "DATA/MODELS/ALIENMOTHERSHIP/alm-illum02.VW2D"},
 
53
        {8,     6,      19,     7000, 3800,     "DATA/MODELS/ALIENMOTHERSHIP/alm-05.VW3D", "DATA/MODELS/ALIENMOTHERSHIP/alm-text08.VW2D", "DATA/MODELS/ALIENMOTHERSHIP/alm-illum08.VW2D"},
 
54
        {12,6,  15,     8000, 4000,     "DATA/MODELS/ALIENMOTHERSHIP/alm-06.VW3D", "DATA/MODELS/ALIENMOTHERSHIP/alm-text08.VW2D", "DATA/MODELS/ALIENMOTHERSHIP/alm-illum08.VW2D"},
 
55
        {5,     2,      6,      9000, 4300,     "DATA/MODELS/ALIENMOTHERSHIP/alm-07.VW3D", "DATA/MODELS/ALIENMOTHERSHIP/alm-text03.VW2D", "DATA/MODELS/ALIENMOTHERSHIP/alm-illum03.VW2D"},
 
56
        {4,     6,      10,     10000,4500,     "DATA/MODELS/ALIENMOTHERSHIP/alm-08.VW3D", "DATA/MODELS/ALIENMOTHERSHIP/alm-text03.VW2D", "DATA/MODELS/ALIENMOTHERSHIP/alm-illum03.VW2D"}
 
57
};
 
58
 
 
59
 
 
60
 
 
61
 
 
62
//-----------------------------------------------------------------------------
 
63
// Конструктор, инициализация всех переменных
 
64
//-----------------------------------------------------------------------------
 
65
void CAlienSpaceMotherShip::Create(int  SpaceShipNum)
 
66
{
 
67
        ObjectStatus = 1; // чужой
 
68
        ObjectType = 3;
 
69
        ObjectCreationType = SpaceShipNum;
 
70
        PromptDrawDist2 = 20000.0f;
 
71
 
 
72
        ResistanceHull = 1.0f;
 
73
        ResistanceSystems = 1.0f;
 
74
        MaxSpeed = 20.0f;
 
75
        MaxAcceler = 20.0f;
 
76
        MaxSpeedRotate = 80.0f;
 
77
        //EngineSoundNum = 0;
 
78
        EngineLeftQuantity = 0;
 
79
        EngineRightQuantity = 0;
 
80
        Strength = StrengthStart = PresetAlienSpaceMotherShipData[SpaceShipNum-1].Strength/GameNPCArmorPenalty;
 
81
        ShieldStrength = ShieldStrengthStart = PresetAlienSpaceMotherShipData[SpaceShipNum-1].ShieldStrength/GameNPCArmorPenalty;
 
82
        ShieldRecharge = ShieldStrengthStart/15.0f;
 
83
 
 
84
        WeaponQuantity = PresetAlienSpaceMotherShipData[SpaceShipNum-1].WeaponQuantity;
 
85
        BossWeaponQuantity = PresetAlienSpaceMotherShipData[SpaceShipNum-1].BossWeaponQuantity;
 
86
        EngineQuantity = PresetAlienSpaceMotherShipData[SpaceShipNum-1].EngineQuantity;
 
87
 
 
88
 
 
89
        LoadObjectData(PresetAlienSpaceMotherShipData[SpaceShipNum-1].Name, this, 0, 2.0f, Setup.UseGLSL);
 
90
 
 
91
        // всегда только эти текстуры
 
92
        for (int i=0; i<DrawObjectQuantity; i++)
 
93
        {
 
94
                Texture[i] =vw_FindTextureByName(PresetAlienSpaceMotherShipData[SpaceShipNum-1].Texture);
 
95
                TextureIllum[i] =vw_FindTextureByName(PresetAlienSpaceMotherShipData[SpaceShipNum-1].TextureIllum);
 
96
                // если шейдеры выключены - вернет ноль (не загружаем текстуры нормал мепов если нет шейдеров)
 
97
                // в LoadObjectData указываем Setup.UseGLSL
 
98
                NormalMap[i] = vw_FindTextureByName("DATA/MODELS/NORMALMAP/alien_mothership_nm.tga");
 
99
        }
 
100
 
 
101
 
 
102
 
 
103
        // начальные установки для оружия
 
104
        WeaponSetFire = new bool[WeaponQuantity];
 
105
        WeaponLocation = new VECTOR3D[WeaponQuantity];
 
106
        WeaponType = new int[WeaponQuantity];
 
107
        Weapon = new CWeapon*[WeaponQuantity];
 
108
        for (int i=0; i<WeaponQuantity; i++)
 
109
        {
 
110
                WeaponSetFire[i] = false;
 
111
                WeaponType[i] = 1;
 
112
                Weapon[i] = 0;
 
113
        }
 
114
 
 
115
        BossWeaponSetFire = new bool[BossWeaponQuantity];
 
116
        BossWeaponLocation = new VECTOR3D[BossWeaponQuantity];
 
117
        BossWeaponType = new int[BossWeaponQuantity];
 
118
        BossWeapon = new CWeapon*[BossWeaponQuantity];
 
119
        for (int i=0; i<BossWeaponQuantity; i++)
 
120
        {
 
121
                BossWeaponSetFire[i] = false;
 
122
                BossWeaponType[i] = 1;
 
123
                BossWeapon[i] = 0;
 
124
        }
 
125
 
 
126
        // начальные установки для двигателей
 
127
        EngineLocation = new VECTOR3D[EngineQuantity];
 
128
        Engine = new eParticleSystem*[EngineQuantity];
 
129
        for (int i=0; i<EngineQuantity; i++) Engine[i] = 0;
 
130
 
 
131
 
 
132
 
 
133
 
 
134
 
 
135
 
 
136
 
 
137
 
 
138
 
 
139
 
 
140
        // перебираем и ставим нужные данные
 
141
        switch (SpaceShipNum)
 
142
        {
 
143
                case 1:
 
144
                        // оружие
 
145
                        WeaponLocation[0] = VECTOR3D(-1.6f, 1.0f, 19.0f);
 
146
                        Weapon[0] = new CWeapon;
 
147
                        Weapon[0]->Create(102);
 
148
                        WeaponLocation[1] = VECTOR3D(1.6f, 1.0f, 19.0f);
 
149
                        Weapon[1] = new CWeapon;
 
150
                        Weapon[1]->Create(102);
 
151
                        WeaponLocation[2] = VECTOR3D(-1.6f, -1.0f, 19.0f);
 
152
                        Weapon[2] = new CWeapon;
 
153
                        Weapon[2]->Create(102);
 
154
                        WeaponLocation[3] = VECTOR3D(1.6f, -1.0f, 19.0f);
 
155
                        Weapon[3] = new CWeapon;
 
156
                        Weapon[3]->Create(102);
 
157
 
 
158
                        WeaponLocation[4] = VECTOR3D(-1.6f, 1.5f, 18.0f);
 
159
                        Weapon[4] = new CWeapon;
 
160
                        Weapon[4]->Create(103);
 
161
                        WeaponLocation[5] = VECTOR3D(1.6f, 1.5f, 18.0f);
 
162
                        Weapon[5] = new CWeapon;
 
163
                        Weapon[5]->Create(103);
 
164
                        WeaponLocation[6] = VECTOR3D(-1.6f, -1.5f, 18.0f);
 
165
                        Weapon[6] = new CWeapon;
 
166
                        Weapon[6]->Create(103);
 
167
                        WeaponLocation[7] = VECTOR3D(1.6f, -1.5f, 18.0f);
 
168
                        Weapon[7] = new CWeapon;
 
169
                        Weapon[7]->Create(103);
 
170
 
 
171
                        WeaponLocation[8] = VECTOR3D(-1.6f, 1.0f, 19.0f);
 
172
                        Weapon[8] = new CWeapon;
 
173
                        Weapon[8]->Create(104);
 
174
                        WeaponLocation[9] = VECTOR3D(1.6f, 1.0f, 19.0f);
 
175
                        Weapon[9] = new CWeapon;
 
176
                        Weapon[9]->Create(104);
 
177
                        WeaponLocation[10] = VECTOR3D(-1.6f, -1.0f, 19.0f);
 
178
                        Weapon[10] = new CWeapon;
 
179
                        Weapon[10]->Create(104);
 
180
                        WeaponLocation[11] = VECTOR3D(1.6f, -1.0f, 19.0f);
 
181
                        Weapon[11] = new CWeapon;
 
182
                        Weapon[11]->Create(104);
 
183
 
 
184
                        WeaponLocation[12] = VECTOR3D(0.0f, -8.0f, 0.0f);
 
185
                        Weapon[12] = new CWeapon;
 
186
                        Weapon[12]->Create(104);
 
187
                        WeaponLocation[13] = VECTOR3D(0.0f, -8.0f, 0.0f);
 
188
                        Weapon[13] = new CWeapon;
 
189
                        Weapon[13]->Create(104);
 
190
 
 
191
                        BossWeaponLocation[0] = VECTOR3D(0.0f, 0.0f, 0.0f);
 
192
 
 
193
                        // двигатели
 
194
                        Engine[0] = new eParticleSystem;
 
195
                        EngineLocation[0] = VECTOR3D(8.4f, 5.2f, -24.0f);
 
196
                        SetAlienSpaceMotherShipEngine(Engine[0], 1);
 
197
                        Engine[1] = new eParticleSystem;
 
198
                        EngineLocation[1] = VECTOR3D(-8.4f, 5.2f, -24.0f);
 
199
                        SetAlienSpaceMotherShipEngine(Engine[1], 1);
 
200
                        Engine[2] = new eParticleSystem;
 
201
                        EngineLocation[2] = VECTOR3D(8.4f, -5.6f, -24.0f);
 
202
                        SetAlienSpaceMotherShipEngine(Engine[2], 1);
 
203
                        Engine[3] = new eParticleSystem;
 
204
                        EngineLocation[3] = VECTOR3D(-8.4f, -5.6f, -24.0f);
 
205
                        SetAlienSpaceMotherShipEngine(Engine[3], 1);
 
206
                        Engine[4] = new eParticleSystem;
 
207
                        EngineLocation[4] = VECTOR3D(0.0f, 8.2f, -15.0f);
 
208
                        SetAlienSpaceMotherShipEngine(Engine[4], 2);
 
209
                        Engine[5] = new eParticleSystem;
 
210
                        EngineLocation[5] = VECTOR3D(0.0f, -8.2f, -15.0f);
 
211
                        SetAlienSpaceMotherShipEngine(Engine[5], 2);
 
212
                        Engine[6] = new eParticleSystem;
 
213
                        EngineLocation[6] = VECTOR3D(0.0f, 0.0f, -8.0f);
 
214
                        SetAlienSpaceMotherShipEngine(Engine[6], 3);
 
215
                        Engine[7] = new eParticleSystem;
 
216
                        EngineLocation[7] = VECTOR3D(0.0f, 0.0f, -8.0f);
 
217
                        SetAlienSpaceMotherShipEngine(Engine[7], 4);
 
218
                        Engine[8] = new eParticleSystem;
 
219
                        EngineLocation[8] = VECTOR3D(0.0f, 0.0f, 15.0f);
 
220
                        SetAlienSpaceMotherShipEngine(Engine[8], 5);
 
221
                        Engine[9] = new eParticleSystem;
 
222
                        EngineLocation[9] = VECTOR3D(0.0f, 0.0f, 15.0f);
 
223
                        SetAlienSpaceMotherShipEngine(Engine[9], 6);
 
224
                        break;
 
225
                case 2:
 
226
                        // оружие
 
227
                        WeaponLocation[0] = VECTOR3D(-10.7f, 0.0f, -18.5f);
 
228
                        Weapon[0] = new CWeapon;
 
229
                        Weapon[0]->Create(103);
 
230
                        Weapon[0]->NextFireTime = Weapon[0]->NextFireTime/2.0f;
 
231
                        WeaponLocation[1] = VECTOR3D(10.7f, 0.0f, -18.5f);
 
232
                        Weapon[1] = new CWeapon;
 
233
                        Weapon[1]->Create(103);
 
234
                        Weapon[1]->NextFireTime = Weapon[1]->NextFireTime/2.0f;
 
235
                        WeaponLocation[2] = VECTOR3D(-10.7f, 0.0f, -18.5f);
 
236
                        Weapon[2] = new CWeapon;
 
237
                        Weapon[2]->Create(103);
 
238
                        Weapon[2]->NextFireTime = Weapon[2]->NextFireTime/2.0f;
 
239
                        WeaponLocation[3] = VECTOR3D(10.7f, 0.0f, -18.5f);
 
240
                        Weapon[3] = new CWeapon;
 
241
                        Weapon[3]->Create(103);
 
242
                        Weapon[3]->NextFireTime = Weapon[3]->NextFireTime/2.0f;
 
243
 
 
244
                        WeaponLocation[4] = VECTOR3D(-10.7f, 0.0f, -18.5f);
 
245
                        Weapon[4] = new CWeapon;
 
246
                        Weapon[4]->Create(106);
 
247
                        Weapon[4]->NextFireTime = Weapon[4]->NextFireTime/2.0f;
 
248
                        WeaponLocation[5] = VECTOR3D(10.7f, 0.0f, -18.5f);
 
249
                        Weapon[5] = new CWeapon;
 
250
                        Weapon[5]->Create(106);
 
251
                        Weapon[5]->NextFireTime = Weapon[5]->NextFireTime/2.0f;
 
252
                        WeaponLocation[6] = VECTOR3D(-4.0f, 0.0f, 24.0f);
 
253
                        Weapon[6] = new CWeapon;
 
254
                        Weapon[6]->Create(106);
 
255
                        Weapon[6]->NextFireTime = Weapon[6]->NextFireTime/2.0f;
 
256
                        WeaponLocation[7] = VECTOR3D(4.0f, 0.0f, 24.0f);
 
257
                        Weapon[7] = new CWeapon;
 
258
                        Weapon[7]->Create(106);
 
259
                        Weapon[7]->NextFireTime = Weapon[7]->NextFireTime/2.0f;
 
260
 
 
261
 
 
262
                        BossWeaponLocation[0] = VECTOR3D(-1.5f, 1.5f, 25.0f);
 
263
                        BossWeapon[0] = new CWeapon;
 
264
                        BossWeapon[0]->Create(102);
 
265
                        BossWeaponLocation[1] = VECTOR3D(1.5f, 1.5f, 25.0f);
 
266
                        BossWeapon[1] = new CWeapon;
 
267
                        BossWeapon[1]->Create(102);
 
268
                        BossWeaponLocation[2] = VECTOR3D(-1.5f, -1.5f, 25.0f);
 
269
                        BossWeapon[2] = new CWeapon;
 
270
                        BossWeapon[2]->Create(102);
 
271
                        BossWeaponLocation[3] = VECTOR3D(1.5f, -1.5f, 25.0f);
 
272
                        BossWeapon[3] = new CWeapon;
 
273
                        BossWeapon[3]->Create(102);
 
274
 
 
275
 
 
276
                        BossWeaponLocation[4] = VECTOR3D(-4.0f, 2.0f, 24.0f);
 
277
                        BossWeapon[4] = new CWeapon;
 
278
                        BossWeapon[4]->Create(102);
 
279
                        BossWeaponLocation[5] = VECTOR3D(4.0f, 2.0f, 24.0f);
 
280
                        BossWeapon[5] = new CWeapon;
 
281
                        BossWeapon[5]->Create(102);
 
282
                        BossWeaponLocation[6] = VECTOR3D(-4.0f, -2.0f, 24.0f);
 
283
                        BossWeapon[6] = new CWeapon;
 
284
                        BossWeapon[6]->Create(102);
 
285
                        BossWeaponLocation[7] = VECTOR3D(4.0f, -2.0f, 24.0f);
 
286
                        BossWeapon[7] = new CWeapon;
 
287
                        BossWeapon[7]->Create(102);
 
288
 
 
289
 
 
290
                        // двигатели
 
291
                        Engine[0] = new eParticleSystem;
 
292
                        EngineLocation[0] = VECTOR3D(5.6f, 7.0f, -27.6f);
 
293
                        SetAlienSpaceMotherShipEngine(Engine[0], 1);
 
294
                        Engine[1] = new eParticleSystem;
 
295
                        EngineLocation[1] = VECTOR3D(-5.6f, 7.0f, -27.6f);
 
296
                        SetAlienSpaceMotherShipEngine(Engine[1], 1);
 
297
                        Engine[2] = new eParticleSystem;
 
298
                        EngineLocation[2] = VECTOR3D(5.6f, -7.0f, -27.6f);
 
299
                        SetAlienSpaceMotherShipEngine(Engine[2], 1);
 
300
                        Engine[3] = new eParticleSystem;
 
301
                        EngineLocation[3] = VECTOR3D(-5.6f, -7.0f, -27.6f);
 
302
                        SetAlienSpaceMotherShipEngine(Engine[3], 1);
 
303
                        Engine[4] = new eParticleSystem;
 
304
                        EngineLocation[4] = VECTOR3D(10.7f, 0.0f, -21.5f);
 
305
                        SetAlienSpaceMotherShipEngine(Engine[4], 2);
 
306
                        Engine[5] = new eParticleSystem;
 
307
                        EngineLocation[5] = VECTOR3D(-10.7f, 0.0f, -21.5f);
 
308
                        SetAlienSpaceMotherShipEngine(Engine[5], 2);
 
309
                        Engine[6] = new eParticleSystem;
 
310
                        EngineLocation[6] = VECTOR3D(0.0f, 0.0f, -14.0f);
 
311
                        SetAlienSpaceMotherShipEngine(Engine[6], 3);
 
312
                        Engine[7] = new eParticleSystem;
 
313
                        EngineLocation[7] = VECTOR3D(0.0f, 0.0f, -14.0f);
 
314
                        SetAlienSpaceMotherShipEngine(Engine[7], 4);
 
315
                        Engine[8] = new eParticleSystem;
 
316
                        EngineLocation[8] = VECTOR3D(0.0f, 0.0f, 15.0f);
 
317
                        SetAlienSpaceMotherShipEngine(Engine[8], 5);
 
318
                        Engine[9] = new eParticleSystem;
 
319
                        EngineLocation[9] = VECTOR3D(0.0f, 0.0f, 15.0f);
 
320
                        SetAlienSpaceMotherShipEngine(Engine[9], 6);
 
321
                        break;
 
322
                case 3:
 
323
                        // оружие
 
324
                        WeaponLocation[0] = VECTOR3D(3.0f, -2.0f, 13.0f);
 
325
                        Weapon[0] = new CWeapon;
 
326
                        Weapon[0]->Create(104);
 
327
                        WeaponLocation[1] = VECTOR3D(-3.0f, -2.0f, 13.0f);
 
328
                        Weapon[1] = new CWeapon;
 
329
                        Weapon[1]->Create(104);
 
330
                        WeaponLocation[2] = VECTOR3D(2.0f, -1.0f, 13.0f);
 
331
                        Weapon[2] = new CWeapon;
 
332
                        Weapon[2]->Create(104);
 
333
                        WeaponLocation[3] = VECTOR3D(-2.0f, -1.0f, 13.0f);
 
334
                        Weapon[3] = new CWeapon;
 
335
                        Weapon[3]->Create(104);
 
336
                        WeaponLocation[4] = VECTOR3D(2.0f, -3.0f, 13.0f);
 
337
                        Weapon[4] = new CWeapon;
 
338
                        Weapon[4]->Create(104);
 
339
                        WeaponLocation[5] = VECTOR3D(-2.0f, -3.0f, 13.0f);
 
340
                        Weapon[5] = new CWeapon;
 
341
                        Weapon[5]->Create(104);
 
342
 
 
343
                        WeaponLocation[6] = VECTOR3D(7.0f, -2.0f, 13.0f);
 
344
                        Weapon[6] = new CWeapon;
 
345
                        Weapon[6]->Create(109);
 
346
                        WeaponLocation[7] = VECTOR3D(-7.0f, -2.0f, 13.0f);
 
347
                        Weapon[7] = new CWeapon;
 
348
                        Weapon[7]->Create(109);
 
349
 
 
350
 
 
351
                        BossWeaponLocation[0] = VECTOR3D(0.0f, -2.0f, 27.0f);
 
352
                        BossWeapon[0] = new CWeapon;
 
353
                        BossWeapon[0]->Create(110);
 
354
 
 
355
                        // двигатели
 
356
                        Engine[0] = new eParticleSystem;
 
357
                        EngineLocation[0] = VECTOR3D(5.5f, 8.1f, -26.1f);
 
358
                        SetAlienSpaceMotherShipEngine(Engine[0], 1);
 
359
                        Engine[1] = new eParticleSystem;
 
360
                        EngineLocation[1] = VECTOR3D(-5.5f, 8.1f, -26.1f);
 
361
                        SetAlienSpaceMotherShipEngine(Engine[1], 1);
 
362
                        Engine[2] = new eParticleSystem;
 
363
                        EngineLocation[2] = VECTOR3D(5.6f, -7.2f, -28.6f);
 
364
                        SetAlienSpaceMotherShipEngine(Engine[2], 1);
 
365
                        Engine[3] = new eParticleSystem;
 
366
                        EngineLocation[3] = VECTOR3D(-5.6f, -7.2f, -28.6f);
 
367
                        SetAlienSpaceMotherShipEngine(Engine[3], 1);
 
368
                        Engine[4] = new eParticleSystem;
 
369
                        EngineLocation[4] = VECTOR3D(11.9f, -1.0f, -14.8f);
 
370
                        SetAlienSpaceMotherShipEngine(Engine[4], 1);
 
371
                        Engine[5] = new eParticleSystem;
 
372
                        EngineLocation[5] = VECTOR3D(-11.9f, -1.0f, -14.8f);
 
373
                        SetAlienSpaceMotherShipEngine(Engine[5], 1);
 
374
                        Engine[6] = new eParticleSystem;
 
375
                        EngineLocation[6] = VECTOR3D(0.0f, -1.0f, -10.0f);
 
376
                        SetAlienSpaceMotherShipEngine(Engine[6], 3);
 
377
                        Engine[7] = new eParticleSystem;
 
378
                        EngineLocation[7] = VECTOR3D(0.0f, -1.0f, -10.0f);
 
379
                        SetAlienSpaceMotherShipEngine(Engine[7], 4);
 
380
                        break;
 
381
                case 4:
 
382
                        // оружие
 
383
                        WeaponLocation[0] = VECTOR3D(1.0f, -1.0f, 23.0f);
 
384
                        Weapon[0] = new CWeapon;
 
385
                        Weapon[0]->Create(104);
 
386
                        WeaponLocation[1] = VECTOR3D(-1.0f, -1.0f, 23.0f);
 
387
                        Weapon[1] = new CWeapon;
 
388
                        Weapon[1]->Create(104);
 
389
                        WeaponLocation[2] = VECTOR3D(1.0f, 0.0f, 23.0f);
 
390
                        Weapon[2] = new CWeapon;
 
391
                        Weapon[2]->Create(104);
 
392
                        WeaponLocation[3] = VECTOR3D(-1.0f, 0.0f, 23.0f);
 
393
                        Weapon[3] = new CWeapon;
 
394
                        Weapon[3]->Create(104);
 
395
                        WeaponLocation[4] = VECTOR3D(1.0f, -2.0f, 23.0f);
 
396
                        Weapon[4] = new CWeapon;
 
397
                        Weapon[4]->Create(104);
 
398
                        WeaponLocation[5] = VECTOR3D(-1.0f, -2.0f, 23.0f);
 
399
                        Weapon[5] = new CWeapon;
 
400
                        Weapon[5]->Create(104);
 
401
                        WeaponLocation[6] = VECTOR3D(0.0f, -1.0f, 23.0f);
 
402
                        Weapon[6] = new CWeapon;
 
403
                        Weapon[6]->Create(109);
 
404
                        WeaponLocation[7] = VECTOR3D(0.0f, -1.0f, 23.0f);
 
405
                        Weapon[7] = new CWeapon;
 
406
                        Weapon[7]->Create(109);
 
407
 
 
408
                        BossWeaponLocation[0] = VECTOR3D(8.9f, -0.6f, 18.0f);
 
409
                        BossWeapon[0] = new CWeapon;
 
410
                        BossWeapon[0]->Create(108);
 
411
                        BossWeapon[0]->SetRotation(VECTOR3D(0.0f, -15.0f, 0.0f));
 
412
                        BossWeaponLocation[1] = VECTOR3D(-8.9f, -0.6f, 18.0f);
 
413
                        BossWeapon[1] = new CWeapon;
 
414
                        BossWeapon[1]->Create(108);
 
415
                        BossWeapon[1]->SetRotation(VECTOR3D(0.0f, 15.0f, 0.0f));
 
416
                        BossWeaponLocation[2] = VECTOR3D(10.0f, -5.6f, 18.0f);
 
417
                        BossWeapon[2] = new CWeapon;
 
418
                        BossWeapon[2]->Create(108);
 
419
                        BossWeaponLocation[3] = VECTOR3D(-10.0f, -5.6f, 18.0f);
 
420
                        BossWeapon[3] = new CWeapon;
 
421
                        BossWeapon[3]->Create(108);
 
422
                        BossWeaponLocation[4] = VECTOR3D(8.9f, -0.6f, 18.0f);
 
423
                        BossWeapon[4] = new CWeapon;
 
424
                        BossWeapon[4]->Create(108);
 
425
                        BossWeapon[4]->SetRotation(VECTOR3D(0.0f, -5.0f, 0.0f));
 
426
                        BossWeaponLocation[5] = VECTOR3D(-8.9f, -0.6f, 18.0f);
 
427
                        BossWeapon[5] = new CWeapon;
 
428
                        BossWeapon[5]->Create(108);
 
429
                        BossWeapon[5]->SetRotation(VECTOR3D(0.0f, 5.0f, 0.0f));
 
430
                        BossWeaponLocation[6] = VECTOR3D(10.0f, -5.6f, 18.0f);
 
431
                        BossWeapon[6] = new CWeapon;
 
432
                        BossWeapon[6]->Create(108);
 
433
                        BossWeapon[6]->SetRotation(VECTOR3D(0.0f, -10.0f, 0.0f));
 
434
                        BossWeaponLocation[7] = VECTOR3D(-10.0f, -5.6f, 18.0f);
 
435
                        BossWeapon[7] = new CWeapon;
 
436
                        BossWeapon[7]->Create(108);
 
437
                        BossWeapon[7]->SetRotation(VECTOR3D(0.0f, 10.0f, 0.0f));
 
438
 
 
439
 
 
440
                        // двигатели
 
441
                        Engine[0] = new eParticleSystem;
 
442
                        EngineLocation[0] = VECTOR3D(1.9f, 5.9f, -24.6f);
 
443
                        SetAlienSpaceMotherShipEngine(Engine[0], 2);
 
444
                        Engine[1] = new eParticleSystem;
 
445
                        EngineLocation[1] = VECTOR3D(-1.9f, 5.9f, -24.6f);
 
446
                        SetAlienSpaceMotherShipEngine(Engine[1], 2);
 
447
                        Engine[2] = new eParticleSystem;
 
448
                        EngineLocation[2] = VECTOR3D(1.9f, -2.9f, -24.6f);
 
449
                        SetAlienSpaceMotherShipEngine(Engine[2], 2);
 
450
                        Engine[3] = new eParticleSystem;
 
451
                        EngineLocation[3] = VECTOR3D(-1.9f, -2.9f, -24.6f);
 
452
                        SetAlienSpaceMotherShipEngine(Engine[3], 2);
 
453
                        Engine[4] = new eParticleSystem;
 
454
                        EngineLocation[4] = VECTOR3D(2.9f, 1.6f, -24.6f);
 
455
                        SetAlienSpaceMotherShipEngine(Engine[4], 1);
 
456
                        Engine[5] = new eParticleSystem;
 
457
                        EngineLocation[5] = VECTOR3D(-2.9f, 1.6f, -24.6f);
 
458
                        SetAlienSpaceMotherShipEngine(Engine[5], 1);
 
459
                        Engine[6] = new eParticleSystem;
 
460
                        EngineLocation[6] = VECTOR3D(8.9f, -0.6f, -12.6f);
 
461
                        SetAlienSpaceMotherShipEngine(Engine[6], 1);
 
462
                        Engine[7] = new eParticleSystem;
 
463
                        EngineLocation[7] = VECTOR3D(-8.9f, -0.6f, -12.6f);
 
464
                        SetAlienSpaceMotherShipEngine(Engine[7], 1);
 
465
                        Engine[8] = new eParticleSystem;
 
466
                        EngineLocation[8] = VECTOR3D(10.0f, -5.6f, -5.2f);
 
467
                        SetAlienSpaceMotherShipEngine(Engine[8], 1);
 
468
                        Engine[9] = new eParticleSystem;
 
469
                        EngineLocation[9] = VECTOR3D(-10.0f, -5.6f, -5.2f);
 
470
                        SetAlienSpaceMotherShipEngine(Engine[9], 1);
 
471
                        Engine[10] = new eParticleSystem;
 
472
                        EngineLocation[10] = VECTOR3D(0.0f, -6.0f, 10.0f);
 
473
                        SetAlienSpaceMotherShipEngine(Engine[10], 5);
 
474
                        Engine[10]->CreationSize = VECTOR3D(6.0f,6.0f,2.0f);
 
475
                        Engine[10]->DeadZone = 5.9f;
 
476
                        Engine[11] = new eParticleSystem;
 
477
                        EngineLocation[11] = VECTOR3D(0.0f, -6.0f, 10.0f);
 
478
                        SetAlienSpaceMotherShipEngine(Engine[11], 6);
 
479
                        Engine[11]->CreationSize = VECTOR3D(6.0f,6.0f,2.0f);
 
480
                        Engine[11]->DeadZone = 5.9f;
 
481
                        break;
 
482
                case 5:
 
483
                        // оружие
 
484
                        WeaponLocation[0] = VECTOR3D(0.0f, -2.4f, 20.0f);
 
485
                        Weapon[0] = new CWeapon;
 
486
                        Weapon[0]->Create(109);
 
487
                        WeaponLocation[1] = VECTOR3D(0.0f, -2.4f, 20.0f);
 
488
                        Weapon[1] = new CWeapon;
 
489
                        Weapon[1]->Create(109);
 
490
                        Weapon[1]->SetRotation(VECTOR3D(0.0f, 3.0f, 0.0f));
 
491
                        WeaponLocation[2] = VECTOR3D(0.0f, -2.4f, 20.0f);
 
492
                        Weapon[2] = new CWeapon;
 
493
                        Weapon[2]->Create(109);
 
494
                        Weapon[2]->SetRotation(VECTOR3D(0.0f, -3.0f, 0.0f));
 
495
                        WeaponLocation[3] = VECTOR3D(0.0f, -2.4f, 20.0f);
 
496
                        Weapon[3] = new CWeapon;
 
497
                        Weapon[3]->Create(109);
 
498
                        Weapon[3]->SetRotation(VECTOR3D(0.0f, 6.0f, 0.0f));
 
499
                        WeaponLocation[4] = VECTOR3D(0.0f, -2.4f, 20.0f);
 
500
                        Weapon[4] = new CWeapon;
 
501
                        Weapon[4]->Create(109);
 
502
                        WeaponLocation[5] = VECTOR3D(0.0f, -2.4f, 20.0f);
 
503
                        Weapon[5] = new CWeapon;
 
504
                        Weapon[5]->Create(109);
 
505
                        Weapon[5]->SetRotation(VECTOR3D(0.0f, -6.0f, 0.0f));
 
506
                        WeaponLocation[6] = VECTOR3D(0.0f, -2.4f, 20.0f);
 
507
                        Weapon[6] = new CWeapon;
 
508
                        Weapon[6]->Create(109);
 
509
                        Weapon[6]->SetRotation(VECTOR3D(0.0f, 9.0f, 0.0f));
 
510
                        WeaponLocation[7] = VECTOR3D(0.0f, -2.4f, 20.0f);
 
511
                        Weapon[7] = new CWeapon;
 
512
                        Weapon[7]->Create(109);
 
513
                        Weapon[7]->SetRotation(VECTOR3D(0.0f, -9.0f, 0.0f));
 
514
 
 
515
                        BossWeaponLocation[0] = VECTOR3D(35.7f, -3.0f, -13.0f);
 
516
                        BossWeapon[0] = new CWeapon;
 
517
                        BossWeapon[0]->Create(106);
 
518
                        BossWeaponLocation[1] = VECTOR3D(-35.7f, -3.0f, -13.0f);
 
519
                        BossWeapon[1] = new CWeapon;
 
520
                        BossWeapon[1]->Create(106);
 
521
                        BossWeaponLocation[2] = VECTOR3D(0.0f, -2.4f, 20.0f);
 
522
                        BossWeapon[2] = new CWeapon;
 
523
                        BossWeapon[2]->Create(106);
 
524
                        BossWeaponLocation[3] = VECTOR3D(0.0f, -2.4f, 20.0f);
 
525
                        BossWeapon[3] = new CWeapon;
 
526
                        BossWeapon[3]->Create(106);
 
527
                        BossWeaponLocation[4] = VECTOR3D(8.85f, 5.65f, -10.2f);
 
528
                        BossWeapon[4] = new CWeapon;
 
529
                        BossWeapon[4]->Create(104);
 
530
                        BossWeaponLocation[5] = VECTOR3D(-8.85f, 5.65f, -10.2f);
 
531
                        BossWeapon[5] = new CWeapon;
 
532
                        BossWeapon[5]->Create(104);
 
533
 
 
534
                        // двигатели
 
535
                        Engine[0] = new eParticleSystem;
 
536
                        EngineLocation[0] = VECTOR3D(25.1f, 0.65f, -18.8f);
 
537
                        SetAlienSpaceMotherShipEngine(Engine[0], 9);
 
538
                        Engine[1] = new eParticleSystem;
 
539
                        EngineLocation[1] = VECTOR3D(-25.1f, 0.65f, -18.8f);
 
540
                        SetAlienSpaceMotherShipEngine(Engine[1], 9);
 
541
                        Engine[2] = new eParticleSystem;
 
542
                        EngineLocation[2] = VECTOR3D(20.6f, 0.65f, -18.8f);
 
543
                        SetAlienSpaceMotherShipEngine(Engine[2], 9);
 
544
                        Engine[3] = new eParticleSystem;
 
545
                        EngineLocation[3] = VECTOR3D(-20.6f, 0.65f, -18.8f);
 
546
                        SetAlienSpaceMotherShipEngine(Engine[3], 9);
 
547
                        Engine[4] = new eParticleSystem;
 
548
                        EngineLocation[4] = VECTOR3D(22.9f, 0.65f, -20.0f);
 
549
                        SetAlienSpaceMotherShipEngine(Engine[4], 10);
 
550
                        Engine[5] = new eParticleSystem;
 
551
                        EngineLocation[5] = VECTOR3D(-22.9f, 0.65f, -20.0f);
 
552
                        SetAlienSpaceMotherShipEngine(Engine[5], 10);
 
553
                        Engine[6] = new eParticleSystem;
 
554
                        EngineLocation[6] = VECTOR3D(22.9f, -5.1f, -20.0f);
 
555
                        SetAlienSpaceMotherShipEngine(Engine[6], 10);
 
556
                        Engine[7] = new eParticleSystem;
 
557
                        EngineLocation[7] = VECTOR3D(-22.9f, -5.1f, -20.0f);
 
558
                        SetAlienSpaceMotherShipEngine(Engine[7], 10);
 
559
                        Engine[8] = new eParticleSystem;
 
560
                        EngineLocation[8] = VECTOR3D(8.85f, 5.65f, -15.2f);
 
561
                        SetAlienSpaceMotherShipEngine(Engine[8], 10);
 
562
                        Engine[9] = new eParticleSystem;
 
563
                        EngineLocation[9] = VECTOR3D(-8.85f, 5.65f, -15.2f);
 
564
                        SetAlienSpaceMotherShipEngine(Engine[9], 10);
 
565
                        Engine[10] = new eParticleSystem;
 
566
                        EngineLocation[10] = VECTOR3D(4.0f, 7.0f, -21.2f);
 
567
                        SetAlienSpaceMotherShipEngine(Engine[10], 11);
 
568
                        Engine[11] = new eParticleSystem;
 
569
                        EngineLocation[11] = VECTOR3D(-4.0f, 7.0f, -21.2f);
 
570
                        SetAlienSpaceMotherShipEngine(Engine[11], 11);
 
571
                        Engine[12] = new eParticleSystem;
 
572
                        EngineLocation[12] = VECTOR3D(20.4f, -2.4f, -20.0f);
 
573
                        SetAlienSpaceMotherShipEngine(Engine[12], 11);
 
574
                        Engine[13] = new eParticleSystem;
 
575
                        EngineLocation[13] = VECTOR3D(-20.4f, -2.4f, -20.0f);
 
576
                        SetAlienSpaceMotherShipEngine(Engine[13], 11);
 
577
                        Engine[14] = new eParticleSystem;
 
578
                        EngineLocation[14] = VECTOR3D(25.2f, -2.4f, -20.0f);
 
579
                        SetAlienSpaceMotherShipEngine(Engine[14], 11);
 
580
                        Engine[15] = new eParticleSystem;
 
581
                        EngineLocation[15] = VECTOR3D(-25.2f, -2.4f, -20.0f);
 
582
                        SetAlienSpaceMotherShipEngine(Engine[15], 11);
 
583
                        Engine[16] = new eParticleSystem;
 
584
                        EngineLocation[16] = VECTOR3D(35.7f, -3.0f, -13.0f);
 
585
                        SetAlienSpaceMotherShipEngine(Engine[16], 12);
 
586
                        Engine[16]->Direction = VECTOR3D(0.4f, 0.0f, -0.8f);
 
587
                        Engine[17] = new eParticleSystem;
 
588
                        EngineLocation[17] = VECTOR3D(-35.7f, -3.0f, -13.0f);
 
589
                        SetAlienSpaceMotherShipEngine(Engine[17], 12);
 
590
                        Engine[17]->Direction = VECTOR3D(-0.4f, 0.0f, -0.8f);
 
591
                        Engine[18] = new eParticleSystem;
 
592
                        EngineLocation[18] = VECTOR3D(0.0f, -2.4f, -23.0f);
 
593
                        SetAlienSpaceMotherShipEngine(Engine[18], 13);
 
594
                        break;
 
595
 
 
596
 
 
597
                case 6:
 
598
                        // оружие
 
599
                        WeaponLocation[0] = VECTOR3D(0.0f, -4.4f, 18.0f);
 
600
                        Weapon[0] = new CWeapon;
 
601
                        Weapon[0]->Create(103);
 
602
                        Weapon[0]->NextFireTime = Weapon[0]->NextFireTime/2.0f;
 
603
                        WeaponLocation[1] = VECTOR3D(0.0f, -4.4f, 18.0f);
 
604
                        Weapon[1] = new CWeapon;
 
605
                        Weapon[1]->Create(103);
 
606
                        Weapon[1]->SetRotation(VECTOR3D(0.0f, 3.0f, 0.0f));
 
607
                        Weapon[1]->NextFireTime = Weapon[1]->NextFireTime/2.0f;
 
608
                        WeaponLocation[2] = VECTOR3D(0.0f, -4.4f, 18.0f);
 
609
                        Weapon[2] = new CWeapon;
 
610
                        Weapon[2]->Create(103);
 
611
                        Weapon[2]->SetRotation(VECTOR3D(0.0f, -3.0f, 0.0f));
 
612
                        Weapon[2]->NextFireTime = Weapon[2]->NextFireTime/2.0f;
 
613
                        WeaponLocation[3] = VECTOR3D(0.0f, -4.4f, 18.0f);
 
614
                        Weapon[3] = new CWeapon;
 
615
                        Weapon[3]->Create(103);
 
616
                        Weapon[3]->SetRotation(VECTOR3D(0.0f, 6.0f, 0.0f));
 
617
                        Weapon[3]->NextFireTime = Weapon[3]->NextFireTime/2.0f;
 
618
                        WeaponLocation[4] = VECTOR3D(0.0f, -4.4f, 18.0f);
 
619
                        Weapon[4] = new CWeapon;
 
620
                        Weapon[4]->Create(103);
 
621
                        Weapon[4]->NextFireTime = Weapon[4]->NextFireTime/2.0f;
 
622
                        WeaponLocation[5] = VECTOR3D(0.0f, -4.4f, 18.0f);
 
623
                        Weapon[5] = new CWeapon;
 
624
                        Weapon[5]->Create(103);
 
625
                        Weapon[5]->SetRotation(VECTOR3D(0.0f, -6.0f, 0.0f));
 
626
                        Weapon[5]->NextFireTime = Weapon[5]->NextFireTime/2.0f;
 
627
 
 
628
                        WeaponLocation[6] = VECTOR3D(7.0f, -4.4f, 13.0f);
 
629
                        Weapon[6] = new CWeapon;
 
630
                        Weapon[6]->Create(104);
 
631
                        Weapon[6]->NextFireTime = Weapon[6]->NextFireTime/2.0f;
 
632
                        WeaponLocation[7] = VECTOR3D(-7.0f, -4.4f, 13.0f);
 
633
                        Weapon[7] = new CWeapon;
 
634
                        Weapon[7]->Create(104);
 
635
                        Weapon[7]->NextFireTime = Weapon[7]->NextFireTime/2.0f;
 
636
                        WeaponLocation[8] = VECTOR3D(12.0f, -4.4f, 10.0f);
 
637
                        Weapon[8] = new CWeapon;
 
638
                        Weapon[8]->Create(104);
 
639
                        Weapon[8]->NextFireTime = Weapon[8]->NextFireTime/2.0f;
 
640
                        WeaponLocation[9] = VECTOR3D(-12.0f, -4.4f, 10.0f);
 
641
                        Weapon[9] = new CWeapon;
 
642
                        Weapon[9]->Create(104);
 
643
                        Weapon[9]->NextFireTime = Weapon[9]->NextFireTime/2.0f;
 
644
                        WeaponLocation[10] = VECTOR3D(17.0f, -4.4f, 8.0f);
 
645
                        Weapon[10] = new CWeapon;
 
646
                        Weapon[10]->Create(104);
 
647
                        Weapon[10]->NextFireTime = Weapon[10]->NextFireTime/2.0f;
 
648
                        WeaponLocation[11] = VECTOR3D(-17.0f, -4.4f, 8.0f);
 
649
                        Weapon[11] = new CWeapon;
 
650
                        Weapon[11]->Create(104);
 
651
                        Weapon[11]->NextFireTime = Weapon[11]->NextFireTime/2.0f;
 
652
 
 
653
                        BossWeaponLocation[0] = VECTOR3D(10.0f, -6.4f, 10.0f);
 
654
                        BossWeapon[0] = new CWeapon;
 
655
                        BossWeapon[0]->Create(106);
 
656
                        BossWeaponLocation[1] = VECTOR3D(-10.0f, -6.4f, 10.0f);
 
657
                        BossWeapon[1] = new CWeapon;
 
658
                        BossWeapon[1]->Create(106);
 
659
                        BossWeaponLocation[2] = VECTOR3D(15.0f, -6.4f, 8.0f);
 
660
                        BossWeapon[2] = new CWeapon;
 
661
                        BossWeapon[2]->Create(106);
 
662
                        BossWeaponLocation[3] = VECTOR3D(-15.0f, -6.4f, 8.0f);
 
663
                        BossWeapon[3] = new CWeapon;
 
664
                        BossWeapon[3]->Create(106);
 
665
                        BossWeaponLocation[4] = VECTOR3D(20.0f, -6.4f, 5.0f);
 
666
                        BossWeapon[4] = new CWeapon;
 
667
                        BossWeapon[4]->Create(106);
 
668
                        BossWeaponLocation[5] = VECTOR3D(-20.0f, -6.4f, 5.0f);
 
669
                        BossWeapon[5] = new CWeapon;
 
670
                        BossWeapon[5]->Create(106);
 
671
 
 
672
                        // двигатели
 
673
                        Engine[0] = new eParticleSystem;
 
674
                        EngineLocation[0] = VECTOR3D(0.0f, -7.0f, -23.0f);
 
675
                        SetAlienSpaceMotherShipEngine(Engine[0], 13);
 
676
                        Engine[1] = new eParticleSystem;
 
677
                        EngineLocation[1] = VECTOR3D(-25.4f, -4.0f, -20.0f);
 
678
                        SetAlienSpaceMotherShipEngine(Engine[1], 11);
 
679
                        Engine[2] = new eParticleSystem;
 
680
                        EngineLocation[2] = VECTOR3D(20.6f, -4.0f, -20.0f);
 
681
                        SetAlienSpaceMotherShipEngine(Engine[2], 11);
 
682
                        Engine[3] = new eParticleSystem;
 
683
                        EngineLocation[3] = VECTOR3D(-20.6f, -4.0f, -20.0f);
 
684
                        SetAlienSpaceMotherShipEngine(Engine[3], 11);
 
685
                        Engine[4] = new eParticleSystem;
 
686
                        EngineLocation[4] = VECTOR3D(23.4f, -1.0f, -20.0f);
 
687
                        SetAlienSpaceMotherShipEngine(Engine[4], 10);
 
688
                        Engine[5] = new eParticleSystem;
 
689
                        EngineLocation[5] = VECTOR3D(-23.4f, -1.0f, -20.0f);
 
690
                        SetAlienSpaceMotherShipEngine(Engine[5], 10);
 
691
                        Engine[6] = new eParticleSystem;
 
692
                        EngineLocation[6] = VECTOR3D(23.4f, -7.0f, -20.0f);
 
693
                        SetAlienSpaceMotherShipEngine(Engine[6], 10);
 
694
                        Engine[7] = new eParticleSystem;
 
695
                        EngineLocation[7] = VECTOR3D(-23.4f, -7.0f, -20.0f);
 
696
                        SetAlienSpaceMotherShipEngine(Engine[7], 10);
 
697
                        Engine[8] = new eParticleSystem;
 
698
                        EngineLocation[8] = VECTOR3D(5.3f, 4.7f, -22.9f);
 
699
                        SetAlienSpaceMotherShipEngine(Engine[8], 10);
 
700
                        Engine[9] = new eParticleSystem;
 
701
                        EngineLocation[9] = VECTOR3D(-5.3f, 4.7f, -22.9f);
 
702
                        SetAlienSpaceMotherShipEngine(Engine[9], 10);
 
703
                        Engine[10] = new eParticleSystem;
 
704
                        EngineLocation[10] = VECTOR3D(2.6f, 6.6f, -21.5f);
 
705
                        SetAlienSpaceMotherShipEngine(Engine[10], 11);
 
706
                        Engine[11] = new eParticleSystem;
 
707
                        EngineLocation[11] = VECTOR3D(-2.6f, 6.6f, -21.5f);
 
708
                        SetAlienSpaceMotherShipEngine(Engine[11], 11);
 
709
                        Engine[12] = new eParticleSystem;
 
710
                        EngineLocation[12] = VECTOR3D(2.6f, 2.0f, -21.5f);
 
711
                        SetAlienSpaceMotherShipEngine(Engine[12], 11);
 
712
                        Engine[13] = new eParticleSystem;
 
713
                        EngineLocation[13] = VECTOR3D(-2.6f, 2.0f, -21.5f);
 
714
                        SetAlienSpaceMotherShipEngine(Engine[13], 11);
 
715
                        Engine[14] = new eParticleSystem;
 
716
                        EngineLocation[14] = VECTOR3D(25.4f, -4.0f, -20.0f);
 
717
                        SetAlienSpaceMotherShipEngine(Engine[14], 11);
 
718
                        break;
 
719
 
 
720
                case 7:
 
721
                        // оружие
 
722
                        WeaponLocation[0] = VECTOR3D(0.0f, -1.4f, 15.0f);
 
723
                        Weapon[0] = new CWeapon;
 
724
                        Weapon[0]->Create(108);
 
725
                        Weapon[0]->NextFireTime = Weapon[0]->NextFireTime/2.0f;
 
726
                        WeaponLocation[1] = VECTOR3D(2.0f, -1.4f, 15.0f);
 
727
                        Weapon[1] = new CWeapon;
 
728
                        Weapon[1]->Create(108);
 
729
                        Weapon[1]->SetRotation(VECTOR3D(0.0f, 3.0f, 0.0f));
 
730
                        Weapon[1]->NextFireTime = Weapon[1]->NextFireTime/2.0f;
 
731
                        WeaponLocation[2] = VECTOR3D(-2.0f, -1.4f, 15.0f);
 
732
                        Weapon[2] = new CWeapon;
 
733
                        Weapon[2]->Create(108);
 
734
                        Weapon[2]->SetRotation(VECTOR3D(0.0f, -3.0f, 0.0f));
 
735
                        Weapon[2]->NextFireTime = Weapon[2]->NextFireTime/2.0f;
 
736
                        WeaponLocation[3] = VECTOR3D(4.0f, -1.4f, 15.0f);
 
737
                        Weapon[3] = new CWeapon;
 
738
                        Weapon[3]->Create(108);
 
739
                        Weapon[3]->SetRotation(VECTOR3D(0.0f, 6.0f, 0.0f));
 
740
                        Weapon[3]->NextFireTime = Weapon[3]->NextFireTime/2.0f;
 
741
                        WeaponLocation[4] = VECTOR3D(-4.0f, -1.4f, 15.0f);
 
742
                        Weapon[4] = new CWeapon;
 
743
                        Weapon[4]->Create(108);
 
744
                        Weapon[4]->SetRotation(VECTOR3D(0.0f, -6.0f, 0.0f));
 
745
                        Weapon[4]->NextFireTime = Weapon[4]->NextFireTime/2.0f;
 
746
 
 
747
                        BossWeaponLocation[0] = VECTOR3D(12.5f, 1.6f, -15.3f);
 
748
                        BossWeapon[0] = new CWeapon;
 
749
                        BossWeapon[0]->Create(110);
 
750
                        BossWeaponLocation[1] = VECTOR3D(-12.5f, 1.6f, -15.3f);
 
751
                        BossWeapon[1] = new CWeapon;
 
752
                        BossWeapon[1]->Create(110);
 
753
 
 
754
                        // двигатели
 
755
                        Engine[0] = new eParticleSystem;
 
756
                        EngineLocation[0] = VECTOR3D(0.0f, 2.3f, -25.0f);
 
757
                        SetAlienSpaceMotherShipEngine(Engine[0], 15);
 
758
                        Engine[1] = new eParticleSystem;
 
759
                        EngineLocation[1] = VECTOR3D(12.5f, 1.6f, -20.3f);
 
760
                        SetAlienSpaceMotherShipEngine(Engine[1], 16);
 
761
                        Engine[2] = new eParticleSystem;
 
762
                        EngineLocation[2] = VECTOR3D(-12.5f, 1.6f, -20.3f);
 
763
                        SetAlienSpaceMotherShipEngine(Engine[2], 16);
 
764
                        Engine[3] = new eParticleSystem;
 
765
                        EngineLocation[3] = VECTOR3D(0.0f, -8.0f, 0.0f);
 
766
                        SetAlienSpaceMotherShipEngine(Engine[3], 17);
 
767
                        Engine[4] = new eParticleSystem;
 
768
                        EngineLocation[4] = VECTOR3D(0.0f, -8.0f, 0.0f);
 
769
                        SetAlienSpaceMotherShipEngine(Engine[4], 18);
 
770
                        Engine[5] = new eParticleSystem;
 
771
                        EngineLocation[5] = VECTOR3D(0.0f, -8.0f, 0.0f);
 
772
                        SetAlienSpaceMotherShipEngine(Engine[5], 19);
 
773
                        break;
 
774
 
 
775
 
 
776
 
 
777
 
 
778
                case 8:
 
779
                        // оружие
 
780
                        WeaponLocation[0] = VECTOR3D(2.0f, -2.4f, 15.0f);
 
781
                        Weapon[0] = new CWeapon;
 
782
                        Weapon[0]->Create(104);
 
783
                        Weapon[0]->NextFireTime = Weapon[0]->NextFireTime/2.0f;
 
784
                        WeaponLocation[1] = VECTOR3D(-2.0f, -2.4f, 15.0f);
 
785
                        Weapon[1] = new CWeapon;
 
786
                        Weapon[1]->Create(104);
 
787
                        Weapon[1]->NextFireTime = Weapon[1]->NextFireTime/2.0f;
 
788
                        WeaponLocation[2] = VECTOR3D(2.0f, -4.4f, 15.0f);
 
789
                        Weapon[2] = new CWeapon;
 
790
                        Weapon[2]->Create(104);
 
791
                        Weapon[2]->NextFireTime = Weapon[2]->NextFireTime/2.0f;
 
792
                        WeaponLocation[3] = VECTOR3D(-2.0f, -4.4f, 15.0f);
 
793
                        Weapon[3] = new CWeapon;
 
794
                        Weapon[3]->Create(104);
 
795
                        Weapon[3]->NextFireTime = Weapon[3]->NextFireTime/2.0f;
 
796
 
 
797
                        BossWeaponLocation[0] = VECTOR3D(8.0f, -1.0f, 15.0f);
 
798
                        BossWeapon[0] = new CWeapon;
 
799
                        BossWeapon[0]->Create(110);
 
800
                        BossWeaponLocation[1] = VECTOR3D(-8.0f, -1.0f, 15.0f);
 
801
                        BossWeapon[1] = new CWeapon;
 
802
                        BossWeapon[1]->Create(110);
 
803
                        BossWeaponLocation[2] = VECTOR3D(10.0f, -6.4f, 8.0f);
 
804
                        BossWeapon[2] = new CWeapon;
 
805
                        BossWeapon[2]->Create(107);
 
806
                        BossWeaponLocation[3] = VECTOR3D(-10.0f, -6.4f, 8.0f);
 
807
                        BossWeapon[3] = new CWeapon;
 
808
                        BossWeapon[3]->Create(107);
 
809
                        BossWeaponLocation[4] = VECTOR3D(15.0f, -6.4f, 5.0f);
 
810
                        BossWeapon[4] = new CWeapon;
 
811
                        BossWeapon[4]->Create(107);
 
812
                        BossWeaponLocation[5] = VECTOR3D(-15.0f, -6.4f, 5.0f);
 
813
                        BossWeapon[5] = new CWeapon;
 
814
                        BossWeapon[5]->Create(107);
 
815
 
 
816
                        // двигатели
 
817
                        Engine[0] = new eParticleSystem;
 
818
                        EngineLocation[0] = VECTOR3D(15.0f, 4.4f, -29.0f);
 
819
                        SetAlienSpaceMotherShipEngine(Engine[0], 15);
 
820
                        Engine[0]->CreationSize = VECTOR3D(4.0f,6.0f,3.0f);
 
821
                        Engine[1] = new eParticleSystem;
 
822
                        EngineLocation[1] = VECTOR3D(-15.0f, 4.4f, -29.0f);
 
823
                        SetAlienSpaceMotherShipEngine(Engine[1], 15);
 
824
                        Engine[1]->CreationSize = VECTOR3D(4.0f,6.0f,3.0f);
 
825
                        Engine[2] = new eParticleSystem;
 
826
                        EngineLocation[2] = VECTOR3D(5.2f, 5.4f, -20.6f);
 
827
                        SetAlienSpaceMotherShipEngine(Engine[2], 20);
 
828
                        Engine[3] = new eParticleSystem;
 
829
                        EngineLocation[3] = VECTOR3D(-5.2f, 5.4f, -20.6f);
 
830
                        SetAlienSpaceMotherShipEngine(Engine[3], 20);
 
831
                        Engine[4] = new eParticleSystem;
 
832
                        EngineLocation[4] = VECTOR3D(5.2f, -8.8f, -22.6f);
 
833
                        SetAlienSpaceMotherShipEngine(Engine[4], 20);
 
834
                        Engine[5] = new eParticleSystem;
 
835
                        EngineLocation[5] = VECTOR3D(-5.2f, -8.8f, -22.6f);
 
836
                        SetAlienSpaceMotherShipEngine(Engine[5], 20);
 
837
                        Engine[6] = new eParticleSystem;
 
838
                        EngineLocation[6] = VECTOR3D(11.2f, -2.8f, -10.0f);
 
839
                        SetAlienSpaceMotherShipEngine(Engine[6], 20);
 
840
                        Engine[7] = new eParticleSystem;
 
841
                        EngineLocation[7] = VECTOR3D(-11.2f, -2.8f, -10.0f);
 
842
                        SetAlienSpaceMotherShipEngine(Engine[7], 20);
 
843
                        Engine[8] = new eParticleSystem;
 
844
                        EngineLocation[8] = VECTOR3D(0.0f, -10.0f, -3.0f);
 
845
                        SetAlienSpaceMotherShipEngine(Engine[8], 17);
 
846
                        Engine[8]->CreationSize = VECTOR3D(17.0f,1.0f,17.0f);
 
847
                        Engine[8]->DeadZone = 16.9f;
 
848
                        Engine[9] = new eParticleSystem;
 
849
                        EngineLocation[9] = VECTOR3D(0.0f, -10.0f, -3.0f);
 
850
                        SetAlienSpaceMotherShipEngine(Engine[9], 18);
 
851
                        Engine[9]->CreationSize = VECTOR3D(17.0f,1.0f,17.0f);
 
852
                        Engine[9]->DeadZone = 16.9f;
 
853
                        break;
 
854
 
 
855
 
 
856
 
 
857
                default:
 
858
                        fprintf(stderr, "Wrong SpaceShipNum!");
 
859
                        return;
 
860
        }
 
861
 
 
862
        for (int i=0; i< EngineQuantity; i++)
 
863
        {
 
864
                Engine[i]->SetStartLocation(EngineLocation[i]);
 
865
                // находим кол-во внутренних источников света
 
866
                if (Engine[i]->Light != 0) InternalLights++;
 
867
        }
 
868
 
 
869
 
 
870
 
 
871
 
 
872
        // находим все данные по геометрии
 
873
        ::CObject3D::InitByDrawObjectList();
 
874
}
 
875