00001
00002
00009
00010
#include "entite_arme.h"
00011
#include "ctrl_entite.h"
00012
#include "type_arme.h"
00013
#include "fx_explosion.h"
00014
00015 CEntiteArme::CEntiteArme ()
00016 {
00017
m_uiPoint = 0;
00018
m_iBouclier = 1;
00019 }
00020
00021 CEntiteArme::~CEntiteArme ()
00022 {
00023
00024
if (
EstDansEcran (GetPosition (), m_pTypeArme->
GetTaille ()))
00025
CExplosion::Create (0, 8, GetPosition (), 32, 0.5f,
CCouleur (1.0f, 0.5f, 0.2f));
00026
00027
00028
if (m_pFumee)
00029 m_pFumee->
Supprimer ();
00030 }
00031
00032
00033 CEntiteArme*
CEntiteArme::Create (
const CTypeArme* pTypeArme,
CEntite* pProprietaire,
const CVecteur & Ancrage)
00034 {
00035
00036
CEntiteArme *pEntite =
CEntityManager::Instance ()->
CreateArme ();
00037
if (pEntite == 0)
00038
return 0;
00039
00040 pEntite->
m_EntiteType = pProprietaire->
GetType ();
00041 pEntite->
m_pProprietaire = pProprietaire;
00042 pEntite->
m_pTypeArme = pTypeArme;
00043 pEntite->
m_PositionI = pEntite->
m_PositionF = pProprietaire->
GetPosition () + Ancrage;
00044
float fPrecision = pTypeArme->
GetVitesse () (gtl::Y) * pTypeArme->
GetPrecision ();
00045
float fRand =
RandFloat (-fPrecision, fPrecision);
00046
CVecteur VecteurTemp =
CVecteur (
00047
RandFloat (pTypeArme->
GetVitesse () (gtl::X) * 0.9f, pTypeArme->
GetVitesse () (gtl::X) * 1.1f),
00048
RandFloat (pTypeArme->
GetVitesse () (gtl::Y) * 0.9f, pTypeArme->
GetVitesse () (gtl::Y) * 1.1f));
00049
CVecteur Vitesse = VecteurTemp +
CVecteur (fRand, fabs (1-fRand));
00050 pEntite->
m_VitesseI = pEntite->
m_VitesseF = Vitesse;
00051 pEntite->
m_Acceleration = pTypeArme->
GetAcceleration ();
00052
00053
if (pTypeArme->
GetFumee ())
00054 pEntite->
m_pFumee =
CFumee::Create (pEntite, pTypeArme->
GetTaille (), 0, Vitesse (gtl::Y) * 0.25f, 0.5f, pTypeArme->
GetCouleur ());
00055
else
00056 pEntite->
m_pFumee = 0;
00057
00058
return pEntite;
00059 }
00060
00061 int CEntiteArme::GetDommage ()
const
00062
{
00063
return m_pTypeArme->
GetDommage ();
00064 }
00065
00066 float CEntiteArme::GetTaille ()
const
00067
{
00068
return m_pTypeArme->
GetTaille ();
00069 }
00070
00071 CTexture*
CEntiteArme::GetTexture ()
const
00072
{
00073
return m_pTypeArme->
GetTexture ();
00074 }
00075
00076
00077
00078