www.pudn.com > sxdl.zip > cBomb.cpp


#include "cBomb.h" 
#include "cBoomBastic.h" 
#include "bbUtil.h" 
#include "cTank.h" 
 
#define BOMB_SIZE 48.0f 
 
cBomb::cBomb(int BombX, int BombY, int Power, int OwnerID) : 
	cExplosiveDevice(Power) 
{ 
	m_BombX = BombX; 
	m_BombY = BombY; 
	m_OwnerID = OwnerID; 
	 
	//Le tank qui a pose une bombe en a une de moins 
	if (g_BoomBastic.IsStillAlive[m_OwnerID]) 
		g_BoomBastic.Tanks[OwnerID]->NbBombs--; 
	 
	//La bombe explose au bout de 2 secondes 
	LifeTime = 2.0f; 
	Family = BOMB_ID; 
	Position = g_BoomBastic.Tilemap->MapToWorld(m_BombX, m_BombY); 
 
	g_BoomBastic.Tilemap->LogicalMap(m_BombX, m_BombY, LMAP_BOMB); 
	 
	WillRenderLike(g_BoomBastic.EntitySprites[BOMB_SPRITE]); 
	Activate(); 
} 
 
bool cBomb::OnAnimate(float ElapsedTime, float AbsoluteTime) 
{ 
	cExplosiveDevice::OnAnimate(ElapsedTime, AbsoluteTime); 
	 
	//On calcule la nouvelle taille de la bombe (la taille de la bombe evolue au cours du temps) 
	float Size = BOMB_SIZE * (fabsf(sinf(Age * Pi / 2.0f)) * 0.25f + 0.75f); 
	Scale = Vector3(Size, Size, 1.0f); 
	 
	return true;	 
} 
 
void cBomb::OnDying() 
{ 
	cExplosiveDevice::OnDying(); 
	 
	//Le tank qui a pose une bombe peut en poser une de plus 
	if (g_BoomBastic.IsStillAlive[m_OwnerID]) 
		g_BoomBastic.Tanks[m_OwnerID]->NbBombs++; 
}