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
*************************************************************************************/
32
#include "../Object3D.h"
37
//-----------------------------------------------------------------------------
39
//-----------------------------------------------------------------------------
40
class CProjectile : public CObject3D
45
virtual ~CProjectile();
47
// Обновление данных объектa
48
virtual bool Update(float Time);
49
// Установка углов поворота
50
virtual void SetRotation(VECTOR3D NewRotation);
51
// Установка положения
52
virtual void SetLocation(VECTOR3D NewLocation);
53
// Создание нужного объекта
54
virtual void Create(int ProjectileNum);
57
// Номер типа снаряда при создании
60
// повреждение снаряда
67
// 1 - можем наводится и сбивать снаряд
69
// 3 - фларе против ракет
72
// для ракет, тянем на кого навелись... чтобы цель могла принять действия
75
// данные для 2-го класса (лучевого снаряда)
76
// эти данные меняем только в объекте-орудии!!!
77
// точка центра снаряда
78
VECTOR3D ProjectileCenter;
87
// общее время жизни снаряда
90
// нужно ли играть звук при уничтожении
94
// временные данные, для подсветки мин
97
// временные данные, для мин которые стреляют - время перезарядки
99
float MineNextFireTime;
102
// для прорисовки графических эффектов
103
int GraphicFXQuantity;
104
// тип, как будем удалять -сразу, или глушить
105
bool GraphicFXDestroyType;
106
VECTOR3D *GraphicFXLocation;
107
eParticleSystem **GraphicFX;
122
//-----------------------------------------------------------------------------
123
// Дополнительные функции для CProjectile
124
//-----------------------------------------------------------------------------
126
// Установка нужных данных для вспышки возле ствола
127
void SetProjectileGFX(eParticleSystem *ParticleSystem, int GFXNum);
128
// получаем время жизни снаряда
129
float GetProjectileRange(int Num);
134
//-----------------------------------------------------------------------------
135
// Менеджер CSpaceShipWeapon, дополнительный
136
//-----------------------------------------------------------------------------
139
void AttachProjectile(CProjectile* Projectile);
140
// Исключаем из списка
141
void DetachProjectile(CProjectile* Projectile);
142
// Проверяем все объекты, обновляем данные
143
void UpdateAllProjectile(float Time);
144
// Прорисовываем все объекты
145
void DrawAllProjectile(bool VertexOnlyPass, unsigned int ShadowMap);
146
// Удаляем все объекты в списке
147
void ReleaseAllProjectile();
152
#endif // PROJECTILE_H