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
*************************************************************************************/
33
#include "Core/Core.h"
39
// ŃŠŗŃŠøŠæŃŠ¾Š²ŃŠ¹ Š“Š²ŠøŠ¶Š¾Šŗ
40
#include "ScriptEngine/Script.h"
42
#include "GraphicFX/SpaceStars/SpaceStars.h"
43
#include "GraphicFX/GameLvlText/GameLvlText.h"
44
// Š¼Š¾Š“ŠµŠ»Šø Šø Š²ŃŠµ Š¾Š±ŃŠµŠŗŃŃ
45
#include "Object3D/Object3D.h"
46
#include "Object3D/SpaceShip/EarthSpaceFighter/EarthSpaceFighter.h"
47
#include "Object3D/SpaceShip/AlienSpaceFighter/AlienSpaceFighter.h"
48
#include "Object3D/SpaceShip/AlienSpaceMotherShip/AlienSpaceMotherShip.h"
49
#include "Object3D/SpaceShip/PirateShip/PirateShip.h"
50
#include "Object3D/GroundObject/Building/Building.h"
51
#include "Object3D/GroundObject/MilitaryBuilding/MilitaryBuilding.h"
52
#include "Object3D/GroundObject/Wheeled/Wheeled.h"
53
#include "Object3D/GroundObject/Tracked/Tracked.h"
54
#include "Object3D/SpaceObject/Asteroid/Asteroid.h"
55
#include "Object3D/SpaceObject/BigAsteroid/BigAsteroid.h"
56
#include "Object3D/SpaceObject/BasePart/BasePart.h"
57
#include "Object3D/SpaceObject/ShipPart/ShipPart.h"
58
#include "Object3D/SpaceObject/Planet/Planet.h"
67
//------------------------------------------------------------------------------------
69
//------------------------------------------------------------------------------------
70
extern GameSetup Setup;
71
extern eDevCaps *CAPS;
72
extern eGameStatus GameStatus;
73
extern SDL_Joystick *Joystick;
74
extern eParticleSystem2D *CursorParticleSystem2D;
75
extern CSpaceStars *psSpaceStatic;
76
extern VECTOR3D GamePoint;
77
extern VECTOR3D GameCameraMovement;
79
extern sVideoModes *VideoModes;
80
extern int VideoModesNum;
81
extern sVideoModes CurrentVideoMode;
83
extern bool LoadedTypes[1000];
84
extern char DatFileName[MAX_PATH];
85
extern char ProgrammDir[MAX_PATH];
86
extern char ScreenshotDir[MAX_PATH];
87
extern char VFSFileNamePath1[MAX_PATH];
88
extern char VFSFileNamePath2[MAX_PATH];
89
extern char UserPath[MAX_PATH];
92
extern bool NeedReCreate;
93
extern bool SDL_MouseCurrentStatus[8];
94
extern int JoystickAxisX;
95
extern int JoystickAxisY;
96
extern bool JoysticButtons[100];
99
void CodeXOR(char *Text, char *Key, int Count);
101
const int FontQuantity=7;
102
extern sFontList FontList[FontQuantity];
108
//------------------------------------------------------------------------------------
110
//------------------------------------------------------------------------------------
111
int ConvertFS2VFS(char RawDataDir[MAX_PATH]);
116
//------------------------------------------------------------------------------------
118
//------------------------------------------------------------------------------------
119
bool LoadXMLSetupFile(bool NeedSafeMode);
120
void SaveXMLSetupFile();
127
//------------------------------------------------------------------------------------
129
//------------------------------------------------------------------------------------
130
extern ScriptEngine *Script;
132
extern int ComBuffer;
133
extern int CurrentCursorStatus;
134
extern bool DrawGameCursor;
146
//------------------------------------------------------------------------------------
148
//------------------------------------------------------------------------------------
149
extern bool GameMainMusicSet;
150
extern char GameMainMusic[MAX_PATH];
151
extern bool GameBossMusicSet;
152
extern char GameBossMusic[MAX_PATH];
153
extern bool GameDeathMusicSet;
154
extern char GameDeathMusic[MAX_PATH];
156
int Audio_PlaySound2D(int SoundID, float fVol, bool Loop = false);
157
int Audio_PlayVoice(int VoiceID, float fVol, bool Loop = false);
158
int Audio_PlaySound3D(int SoundID, float fVol, VECTOR3D Location, bool Loop, int AtType);
159
void Audio_LoopProc();
161
void StartMusicWithFade(int StartMusic, float FadeInTime, float FadeOutTime);
162
void Audio_SetSound2DMainVolume(float NewMainVolume);
163
void Audio_SetVoiceMainVolume(float NewMainVolume);
168
//------------------------------------------------------------------------------------
170
//------------------------------------------------------------------------------------
171
void LoadGameData(int LoadType);
178
//------------------------------------------------------------------------------------
179
// Camera.cpp, GameCamera.cpp, CameraMath.cpp
180
//------------------------------------------------------------------------------------
181
void GameCameraUpdate(float Time);
182
void InitGameCamera();
183
float GameCameraGetDeviation();
184
float GameCameraGetSpeed();
185
void GameCameraSetExplosion(VECTOR3D Location, float Power);
192
//------------------------------------------------------------------------------------
194
//------------------------------------------------------------------------------------
195
void SkyBoxSetTexture(eTexture *nTexture, int Side);
196
void SkyBoxCreate(float nx, float ny, float nz, float nwidth, float nheight, float nlength);
197
void SkyBoxDraw(void);
204
//------------------------------------------------------------------------------------
206
//------------------------------------------------------------------------------------
207
void StarSystemInit(int Num, VECTOR3D SetBaseRotation);
208
void StarSystemDraw(int DrawType); // 1- Š¼ŠµŠ½Ń, 2- ŠøŠ³ŃŠ°
209
void StarSystemDrawSecondLayer(int DrawType);
210
void StarSystemUpdate();
211
void StarSystemRelease();
217
//------------------------------------------------------------------------------------
219
//------------------------------------------------------------------------------------
220
bool ShadowMap_Init(int Width, int Height);
221
void ShadowMap_Release();
222
void ShadowMap_StartRenderToFBO(VECTOR3D FocusPointCorrection, float Distance, float fFarClip);
223
void ShadowMap_EndRenderToFBO();
224
void ShadowMap_StartFinalRender();
225
void ShadowMap_EndFinalRender();
226
float ShadowMap_Get_xPixelOffset();
227
float ShadowMap_Get_yPixelOffset();
232
//------------------------------------------------------------------------------------
234
//------------------------------------------------------------------------------------
235
extern int CurrentActiveMenuElement;
236
extern int CurrentKeyboardSelectMenuElement;
238
bool DrawButton384(int X, int Y, const char *Text, float Transp, float *ButTransp, float *Update);
239
bool DrawButton256(int X, int Y, const char *Text, float Transp, float *ButTransp, float *Update, bool Off=false);
240
bool DrawButton128_2(int X, int Y, const char *Text, float Transp, bool Off, bool SoundClick = true);
241
bool DrawButton200_2(int X, int Y, const char *Text, float Transp, bool Off);
242
void DrawCheckBox(int X, int Y, bool *CheckBoxStatus, const char *Text, float Transp);
251
//------------------------------------------------------------------------------------
253
//------------------------------------------------------------------------------------
254
extern float Button1Transp;
255
extern float LastButton1UpdateTime;
256
extern float Button2Transp;
257
extern float LastButton2UpdateTime;
258
extern float Button3Transp;
259
extern float LastButton3UpdateTime;
260
extern float Button4Transp;
261
extern float LastButton4UpdateTime;
262
extern float Button5Transp;
263
extern float LastButton5UpdateTime;
264
extern float Button6Transp;
265
extern float LastButton6UpdateTime;
266
extern float Button7Transp;
267
extern float LastButton7UpdateTime;
268
extern float Button8Transp;
269
extern float LastButton8UpdateTime;
270
extern float Button9Transp;
271
extern float LastButton9UpdateTime;
272
extern float Button10Transp;
273
extern float LastButton10UpdateTime;
274
extern float Button11Transp;
275
extern float LastButton11UpdateTime;
276
extern float Button12Transp;
277
extern float LastButton12UpdateTime;
278
extern float Button13Transp;
279
extern float LastButton13UpdateTime;
280
extern float Button14Transp;
281
extern float LastButton14UpdateTime;
282
extern float MenuContentTransp;
283
extern float LastMenuOnOffUpdateTime;
286
void SetMenu(eGameStatus Menu);
288
void DrawTransparent(RECT *DstRest, RECT *SrcRest, eTexture *Tex, eTexture *Tex2, bool Alpha, float Transp, float RotateAngle, int DrawCorner, float R, float G, float B);
300
//------------------------------------------------------------------------------------
302
//------------------------------------------------------------------------------------
303
extern float CreditsCurrentPos;
304
extern float LastCreditsCurrentPosUpdateTime;
316
//------------------------------------------------------------------------------------
318
//------------------------------------------------------------------------------------
319
extern int Options_Width;
320
extern int Options_Height;
321
extern int Options_BPP;
322
extern int Options_VSync;
323
extern int Options_iAspectRatioWidth;
335
//------------------------------------------------------------------------------------
336
// Menu_ConfControl.cpp
337
//------------------------------------------------------------------------------------
338
extern int NeedCheck;
340
extern float But[10];
342
void ConfControlMenu();
343
const char * MouseCodeName(char Num);
344
const char * JoystickCodeName(char Num);
345
void CheckMouseKeybJState();
353
//------------------------------------------------------------------------------------
355
//------------------------------------------------------------------------------------
365
//------------------------------------------------------------------------------------
366
// Menu_Interface.cpp
367
//------------------------------------------------------------------------------------
368
extern int Options_FontNumber;
370
void CreateMenuLanguageEntryLinks();
371
void ReCreateMenuLanguageEntryLinks();
372
void CreateVoiceLanguageEntryLinks();
373
void ReCreateVoiceLanguageEntryLinks();
374
void InterfaceMenu();
382
//------------------------------------------------------------------------------------
383
// Menu_OptionsAdvMenu.cpp
384
//------------------------------------------------------------------------------------
385
extern int Options_TexturesCompression;
386
extern int Options_UseGLSL;
387
extern int Options_MSAA;
388
extern int Options_CSAA;
389
extern int Options_ShadowMap;
390
extern int Options_TexturesQuality;
392
void OptionsAdvMenu();
401
//------------------------------------------------------------------------------------
403
//------------------------------------------------------------------------------------
404
extern int CurrentProfile;
416
//------------------------------------------------------------------------------------
417
// Menu_Information.cpp
418
//------------------------------------------------------------------------------------
419
extern int CreateNum;
421
void InformationMenu();
422
void InformationDrawObject();
423
void CreateInfoObject();
424
void DestroyInfoObject();
434
//------------------------------------------------------------------------------------
435
// Menu_TopScores.cpp
436
//------------------------------------------------------------------------------------
437
extern char GameName[10][128];
438
extern int GameScore[10];
440
void TopScoresMenu();
441
void AddTopScores(int Score, char Name[128], bool Type);
450
//------------------------------------------------------------------------------------
451
// Menu_Difficulty.cpp
452
//------------------------------------------------------------------------------------
453
void DifficultyMenu();
461
//------------------------------------------------------------------------------------
463
//------------------------------------------------------------------------------------
464
extern int CurrentMission;
465
extern int MissionLimitation;
466
extern int AllMission;
467
extern int StartMission;
468
extern int EndMission;
471
char *GetMissionFileName();
472
void MissionsListRelease();
473
void MissionsListInit();
482
//------------------------------------------------------------------------------------
484
//------------------------------------------------------------------------------------
485
extern int CurrentWorkshop;
486
extern int NewWeaponControlType;
487
extern int NewWeaponControlTypeData;
488
extern int VoiceNeedMoreEnergy;
489
extern int VoiceAmmoOut;
492
void WorkshopCreate();
493
void WorkshopDestroyData();
494
const char *GetWeaponIconName(int Num);
505
//------------------------------------------------------------------------------------
507
//------------------------------------------------------------------------------------
508
extern CEarthSpaceFighter *PlayerFighter;
510
extern int GameNPCWeaponPenalty;
511
extern int GameNPCArmorPenalty;
512
extern int GameNPCTargetingSpeedPenalty;
513
extern int GameLimitedAmmo;
514
extern int GameDestroyableWeapon;
515
extern int GameWeaponTargetingMode;
516
extern int GameSpaceShipControlMode;
517
extern int GameEngineSystem;
518
extern int GameTargetingSystem;
519
extern int GameAdvancedProtectionSystem;
520
extern int GamePowerSystem;
521
extern int GameTargetingMechanicSystem;
522
extern int GameMenuStatus;
523
extern float GameContentTransp;
524
extern float GameButton1Transp;
525
extern float LastGameButton1UpdateTime;
526
extern bool NeedShowGameMenu;
527
extern bool NeedHideGameMenu;
528
extern bool GameMissionCompleteStatus;
529
extern float StarsTileStartTransparentLayer1;
530
extern float StarsTileEndTransparentLayer1;
531
extern float StarsTileStartTransparentLayer2;
532
extern float StarsTileEndTransparentLayer2;
538
void ExitGameWithSave();
539
void SetGameMissionComplete();
549
//------------------------------------------------------------------------------------
551
//------------------------------------------------------------------------------------
552
void SetCurrentDialogBox(int DialogBox);
553
bool isDialogBoxDrawing();
554
void DrawDialogBox();
564
//------------------------------------------------------------------------------------
566
//------------------------------------------------------------------------------------
567
void GameSetMissionTitleData(float ShowTime, int Num);
568
void GameDrawMissionTitle();
569
void GameSetMissionFailedData(float ShowTime);
570
void GameDrawMissionFailed();
579
//------------------------------------------------------------------------------------
580
// Game_WeaponSlot.cpp
581
//------------------------------------------------------------------------------------
582
void DrawGameWeaponSlots();