Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

player.cpp

Go to the documentation of this file.
00001 #pragma warning(disable: 4786) 00002 00003 /*------------------------------------ Includes ---------------------------------------------*/ 00004 #include "player.h" 00005 #include "game_manager.h" 00006 00007 00008 /*------------------------------------ Define ---------------------------------------------*/ 00009 00010 #define NB_MAX_LIVES 4 00011 00012 00013 00014 /****************************************************************************************************/ 00015 // class cPlayer 00016 /****************************************************************************************************/ 00017 cPlayer::cPlayer(int x, int y):cUnit(x,y,Game_Manager.pDisplay_White_Ball,SPEED_WHITE_BALL,RAYON_WHITE_BALL) 00018 { 00019 Nb_Bombs = 1; 00020 Nb_Teleporteurs = 1; 00021 Nb_Hologrammes = 1; 00022 Nb_Lives = INITIAL_NB_LIVES; 00023 }; 00024 00025 /*--------------------------------------------------------------------------------------------------*/ 00026 void cPlayer::React_To_Bomb(cBomb * bomb) 00027 { 00028 assert( bomb != NULL); 00029 00030 //si ce n'est pas la bombe que je viens de poser 00031 if( DXUtil_Timer( TIMER_GETAPPTIME ) - bomb->Time_Stamp > DELAY_BOMB) 00032 { 00033 Game_Manager.Try_Kill_Player(); // faire signe au game manager qu'il doit enlever une vie au game 00034 Game_Manager.Remove_Bonus(bomb); 00035 } 00036 } 00037 00038 /*--------------------------------------------------------------------------------------------------*/ 00039 void cPlayer::React_To_Cadeau(cCadeau * cado) 00040 { 00041 assert( cado != NULL); 00042 00043 // selon ce que contient ce cadeau, on agit 00044 switch( cado->Get_Inside()) 00045 { 00046 case CADEAU_TELEPORTEUR: 00047 if( Nb_Teleporteurs < NB_MAX_TELEPORTEURS) 00048 Nb_Teleporteurs++; 00049 break; 00050 case CADEAU_BOMB: 00051 if( Nb_Bombs < NB_MAX_BOMBS) 00052 Nb_Bombs++; 00053 break; 00054 case CADEAU_HOLOGRAMME: 00055 if( Nb_Hologrammes < NB_MAX_HOLOGRAMMES) 00056 Nb_Hologrammes++; 00057 break; 00058 case CADEAU_COEUR: 00059 if( Nb_Lives < NB_MAX_LIVES) 00060 Nb_Lives++; 00061 break; 00062 case CADEAU_POINTS: 00063 Game_Manager.Score += 10*(Game_Manager.Id_Level+1)*(Game_Manager.Id_Level+1); 00064 break; 00065 case CADEAU_TIME: 00066 // TODO 00067 break; 00068 default: 00069 assert(0); 00070 break; 00071 } 00072 00073 Game_Manager.Bonus_Garbage_Collector.push_back( cado ); 00074 } 00075 00076 00077 /*--------------------------------------------------------------------------------------------------*/ 00078 void cPlayer::Use_Teleporteur() 00079 { 00080 // si cette fonction est appellée, c qu'il y a un teleporteur sur la carte !!! 00081 assert( Game_Manager.bTeleporteur_In_Game); 00082 std::list<cInteractive_Item*>::iterator bonus_itr; 00083 00084 // cherche ou est le teleporteur pout y aller 00085 for( bonus_itr = Game_Manager.Bonus_List.begin() ; bonus_itr != Game_Manager.Bonus_List.end() ; bonus_itr++) 00086 if( (*bonus_itr)->Type == TELEPORTEUR) 00087 { 00088 Px = (*bonus_itr)->Px; 00089 Py = (*bonus_itr)->Py; 00090 Game_Manager.Bonus_List.remove( (*bonus_itr) ); 00091 Game_Manager.bTeleporteur_In_Game = false; 00092 return; 00093 } 00094 00095 00096 assert(0); // il y a forcement un teleporteur ds la liste !!!! 00097 }

Generated on Fri May 21 19:22:37 2004 for LIBELL by doxygen 1.3.7