File: Struct.h

package info (click to toggle)
astromenace 1.3.2%2Brepack-7.1
  • links: PTS, VCS
  • area: contrib
  • in suites: forky, sid
  • size: 4,496 kB
  • sloc: cpp: 61,665; makefile: 25; sh: 19
file content (356 lines) | stat: -rwxr-xr-x 10,093 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
/************************************************************************************

	AstroMenace (Hardcore 3D space shooter with spaceship upgrade possibilities)
	Copyright © 2006-2013 Michael Kurinnoy, Viewizard


	AstroMenace is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	AstroMenace is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with AstroMenace. If not, see <http://www.gnu.org/licenses/>.


	Web Site: http://www.viewizard.com/
	Project: http://sourceforge.net/projects/openastromenace/
	E-mail: viewizard@viewizard.com

*************************************************************************************/


#ifndef STRUCT_H
#define STRUCT_H





//------------------------------------------------------------------------------------
// стороны
//------------------------------------------------------------------------------------
enum Side
{
	RIGHT	= 0,		// The RIGHT side
	LEFT	= 1,		// The LEFT	 side
	BOTTOM	= 2,		// The BOTTOM side
	TOP		= 3,		// The TOP side
	BACK	= 4,		// The BACK	side
	FRONT	= 5			// The FRONT side
};



//------------------------------------------------------------------------------------
// коэф-ты для плоскости
//------------------------------------------------------------------------------------
enum PlaneData
{
	A = 0,				// The X value of the plane's normal
	B = 1,				// The Y value of the plane's normal
	C = 2,				// The Z value of the plane's normal
	D = 3				// The distance the plane is from the origin
};





//------------------------------------------------------------------------------------
// возможные состояния... для прорисовки и обхода
//------------------------------------------------------------------------------------
enum eGameStatus
{
	// основное меню
	MAIN_MENU = 1,


	// игра
	GAME,

	// лучшие результаты
	TOP_SCORES,
	// настройка интерфейса
	INTERFACE,
	// настройка
	OPTIONS,
	// настройка управления
	CONFCONTROL,
	// настройки быстродействия
	OPTIONS_ADVANCED,
	// информация об игре и т.п.
	INFORMATION,
	// кто делал игру
	CREDITS,
	// профайл
	PROFILE,
	// настройка сложности
	DIFFICULTY,
	// выбор миссии
	MISSION,
	// мастерская покупка-усовершенствование корабля
	WORKSHOP
};





//------------------------------------------------------------------------------------
// для выбора в списке режимов разрешения
//------------------------------------------------------------------------------------
struct sVideoModes
{
	// ширина
	int W;
	// высота
	int H;
	// битность палитры
	int BPP;
};





//------------------------------------------------------------------------------------
// структура данных профайла игрока
//------------------------------------------------------------------------------------
struct GameProfile
{
	bool	Used;

	char	Name[128];
	// замедление снарядов NPC ... 1-3...
	BYTE	NPCWeaponPenalty;
	// ум. защиты NPC объектов
	BYTE	NPCArmorPenalty;
	// "замедление" наведения NPC ... 1-4
	BYTE	NPCTargetingSpeedPenalty;
	// 0-ограничено, 1-нет
	BYTE	LimitedAmmo;
	// 0-может быть уничтожено, 1-нет
	BYTE	DestroyableWeapon;
	// 1-аркада, 0-симулятор
	BYTE	WeaponTargetingMode;
	// 1-аркада, 0-симулятор
	BYTE	SpaceShipControlMode;


	BYTE	Ship;
	BYTE	ShipHullUpgrade;
	float	ShipHullCurrentStrength;

	BYTE	Weapon[6];
	int		WeaponAmmo[6];
	// для каждого
	// 1-только примари, 2 только секондари, 3 оба
	BYTE	WeaponControl[6];
	// доп. управление, 0-нет, 1-клава,2-мышка,3-джойст
	BYTE	WeaponAltControl[6];
	BYTE	WeaponAltControlData[6];
	// для каждого слота - текущее положение оружия
	float	WeaponSlotYAngle[6];



	BYTE	EngineSystem;
	BYTE	TargetingSystem;
	BYTE	AdvancedProtectionSystem;
	BYTE	PowerSystem;
	BYTE	TargetingMechanicSystem;

	BYTE	Difficulty;

	int		Money;
	int		Experience;


	// как стрелять // 1 - как и раньше, все вместе... 2 - поочереди
	BYTE	PrimaryWeaponFireMode;
	BYTE	SecondaryWeaponFireMode;

	// последний открытый уровень для данной записи
	BYTE	OpenLevelNum; // BYTE - 255, у нас макс 100
	// последняя выбранная миссия
	BYTE	LastMission; // BYTE - 255, у нас макс 100

	// опыт за каждую миссию
	int		ByMissionExperience[100]; // ставим 100, на максимум миссий
	// кол-во раз которое играли в миссию
	int		MissionReplayCount[100]; // ставим 100, на максимум миссий



	// резерв
	int 	i[3];
	BYTE	c[3];
	bool	b[3];
	float	f[3];
};



//------------------------------------------------------------------------------------
// структура лучших результатов
//------------------------------------------------------------------------------------
struct sTopScores
{
	char	Name[128];
	int		Score;
};




//------------------------------------------------------------------------------------
// структура данных настройки игры
//------------------------------------------------------------------------------------
struct GameSetup
{
	// номер билда, в котором был создан файл
	int BuildVersion;

	// язык меню
	int		MenuLanguage; // 1-en, 2-de, 3-ru
	// язык голосовых сообщений
	int		VoiceLanguage; // 1-en, 2-de, 3-ru
	// номер шрифта
	int		FontNumber;
	// имя шрифта для fontconfig
	char	FontName[1024];
	// размер шрифта
	int		FontSize;

	// вкл/откл музыки
	int		MusicSw;
	bool	Music_check; // вообще можем-не можем играть музыку
	// вкл/откл SFX
	int		SoundSw;
	int		VoiceSw;
	bool	Sound_check; // вообще можем-не можем играть sfx
	// режим отображения игры
	int		Width;
	int		Height;
	int		BPP;
	float	fAspectRatioWidth;
	float	fAspectRatioHeight;
	int		iAspectRatioWidth;
	int		iAspectRatioHeight;
	// поведение камеры при стандартном отношении (перемещать-не перемешать)
	int 	CameraModeWithStandardAspectRatio;

	// синхронизация
	int		VSync;
	// яркость
	int		Brightness;
	// режим фильтра текстур
	int		TextureFilteringMode;
	// режим качества прорисовки текстур
	int		TexturesQuality;
	// мультисэмпл антиалиасинг
	int		MSAA;
	int		CSAA;


	// качество визуальных эффектов (тайловая подложка, взрывы, системы частиц)  //0-2
	int		VisualEffectsQuality;
	// уровень анизотропии при фильтрации текстур
	int 	AnisotropyLevel;
	// компрессия текстур 0-выкл, 1-S3TC, 2-BPTC
	int		TexturesCompressionType;
	// использование шейдеров
	bool	UseGLSL;
	// использование шадовмеп
	int		ShadowMap;
	// кол-во точечных источников света на 1 объект
	int		MaxPointLights;



	// информация о победителях
	sTopScores	TopScores[10];




	int		KeyboardDecreaseGameSpeed;
	int		KeyboardResetGameSpeed;
	int		KeyboardIncreaseGameSpeed;
	int		KeyboardGameWeaponInfoType;
	int		KeyboardPrimaryWeaponFireMode;
	int		KeyboardSecondaryWeaponFireMode;
	// управление в игре
	// клавиатура
	int		KeyBoardLeft;
	int		KeyBoardRight;
	int		KeyBoardUp;
	int		KeyBoardDown;
	int		KeyBoardPrimary;
	int		KeyBoardSecondary;
	// мышка
	int		MousePrimary;
	int		MouseSecondary;
	// джойстик
	int		JoystickPrimary;
	int		JoystickSecondary;
	// номер джойстика (может их несколько)
	int		JoystickNum;
	// мертвая зона хода ручки джойстика
	int		JoystickDeadZone;



	// задействовать мышку
	bool	MouseControl;
	// чуствительность мышки
	int		ControlSensivity;

	// скорость времени в игре
	float 	GameSpeed;

	// показывать fps + треугольники
	bool	ShowFPS;

	// тип отображения панелей информации оружия в игре
	int 	GameWeaponInfoType;

	// профайлы игроков
	GameProfile	Profile[5];

	// последняя выбранный профайл
	int		LastProfile;

	// показываемые хинты в загрузке
	int		LoadingHint;

	// флаги, показывать-нет подсказки на меню
	// ставим 10, чтобы было с запасом
	bool	NeedShowHint[10];

	// номер скрипта подложки меню
	int		MenuScript;



	// параметры управление движком игры
	int		VBOCoreMode;
	int		VAOCoreMode;
	int		FBOCoreMode;
	// тип работы с видео памятью, больше или нет 128 мегабайт
	bool	EqualOrMore128MBVideoRAM;
	// работа с хардварной генерацией мипмеп уровней
	bool	HardwareMipMapGeneration;
};





#endif // STRUCT_H