00001
00002
00009
00010
00011
#ifndef GAME_MANAGER_H
00012
#define GAME_MANAGER_H
00013
00014
00015
class cGame_Manager;
00016
00018 extern cGame_Manager Game_Manager;
00019
00020
00021
#include <list>
00022
00023
00024
#include "player.h"
00025
#include "ennemies.h"
00026
#include "bonus.h"
00027
#include "game_bsp.h"
00028
#include "gen_rnd.h"
00029
#include "bsp_debug_X.h"
00030
00031
00032
00033 #define N_LEVELS 3
00034 #define INITIAL_NB_LIVES 3
00035
00036 #define NB_MAX_BOMBS 8
00037 #define NB_MAX_TELEPORTEURS 8
00038 #define NB_MAX_HOLOGRAMMES 5
00039
00041
00048 typedef enum {
INITIALIZING ,
RUNNING,
GAME_OVER ,
READY_TO_START ,
LEVEL_FINISHED ,
VICTORY }
Game_State_Type;
00049
00050
00051
00052
00053
00054
00056
00058
00059 class cGame_Manager
00060 {
00061
friend class cPlayer;
00062
friend class cLevel_Loader;
00063
friend class cEnnemy;
00064
friend class cRed_Ball;
00065
friend class cBlue_Ball;
00066
friend class cGreen_Ball;
00067
friend class cUnit;
00068
00069
public :
00071
cGame_Manager();
00072
00074
~cGame_Manager();
00075
00077
void Try_Start();
00078
00080
void Main_Loop();
00081
00082
00084 cGame_World *
Game_World;
00085
00086 Game_State_Type Game_State;
00087
00088 bool bDisplay_Square_Areas ;
00089 bool bDisplay_Ennemies_Path ;
00090 bool bDisplay_Path_Graph ;
00091 bool bGame_Paused ;
00092 bool bInvincible ;
00093
00094
00096 cSprite_Display_Def *
pDisplay_White_Ball ;
00097 cSprite_Display_Def *
pDisplay_Red_Ball ;
00098 cSprite_Display_Def *
pDisplay_Blue_Ball ;
00099 cSprite_Display_Def *
pDisplay_Green_Ball ;
00100 cSprite_Display_Def *
pDisplay_Bomb ;
00101 cSprite_Display_Def *
pDisplay_Teleporteur ;
00102 cSprite_Display_Def *
pDisplay_Hologramme ;
00103 cSprite_Display_Def *
pDisplay_Cadeau ;
00104 cSprite_Display_Def *
pDisplay_Red_Trap ;
00105 cSprite_Display_Def *
pDisplay_Blue_Trap ;
00106 cSprite_Display_Def *
pDisplay_Green_Trap ;
00107 cSprite_Display_Def *
pDisplay_Coeur ;
00108
00109 cBitmap_Display_Def *
pDisplay_Game_Over;
00110 cBitmap_Display_Def *
pDisplay_Victory ;
00111 cBitmap_Display_Def *
pDisplay_Press_Space ;
00112
00113
00114
00115
private:
00116 std::list<cEnnemy*>
Ennemies_List;
00117 std::list<cInteractive_Item*>
Bonus_List;
00118 std::vector <cEnnemy*>
Ennemies_Garbage_Collector;
00119 std::vector <cInteractive_Item*>
Bonus_Garbage_Collector;
00120
00121 int Id_Level;
00122 float Time_Of_Last_Bonus;
00123 int Nb_Seconds_For_Level;
00124 float Time_Last_Generated_Cadeau;
00125 unsigned int Score;
00126 bool bTeleporteur_In_Game;
00127
00128 cRnd_Number_Generator Rnd_Gen ;
00129 cGame_World_Debug_Displayer *
World_Debug_Displayer;
00130 cPlayer *
Player;
00131 cLevel_Loader *
Level_Loader;
00132
00134 float Time_Since_Level_Start;
00135
00137
00143
void Update_Game();
00144
void Update_Ennemies();
00145
void Test_Collisions();
00146
00148
void Erase_Ennemies_Garbage_Collector( );
00149
00151
void Erase_Bonus_Garbage_Collector( );
00152
00154
void Generate_Cadeaux();
00155
00157
void Display();
00158
void Display_Score();
00159
void Display_Time();
00160
void Display_Debug_X();
00161
void Display_Inventaire_Player();
00162
00164 HRESULT
Read_Keyboard_And_React();
00165
00167
void Clear();
00168
00170
void Reset();
00171
00173
bool Load_Level(
int i);
00174
00176
00178
void Start();
00179
00181
00185
bool Add_Ennemy( Ennemy_Type bonus,
int x,
int y );
00186
00188
void Kill_Ennemy(
cEnnemy * ennemy );
00189
00191
00195
bool Add_Bonus( Interactive_Item_Type bonus,
int x,
int y);
00196
00198
void Remove_Bonus(
cInteractive_Item * bonus);
00199
00201
bool Is_Free_Place(
int x,
int y ,
int rayon);
00202
00204
void Try_Kill_Player();
00205
00207
void Initiate_Unit_Defs();
00208 };
00209
00210
00211
00212
#endif