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


#include "cRock.h" 
#include "cBoomBastic.h" 
#include "cBonus.h" 
 
#define ROCK_SIZE 64.0f 
 
cRock::cRock(int RockX, int RockY) 
{ 
	m_RockX = RockX; 
	m_RockY = RockY; 
	 
	Family = ROCK_ID; 
	Scale = Vector3(ROCK_SIZE, ROCK_SIZE, 1.0f); 
	Position = g_BoomBastic.Tilemap->MapToWorld(m_RockX, m_RockY); 
	 
	g_BoomBastic.Tilemap->LogicalMap(m_RockX, m_RockY, LMAP_ROCK); 
	 
	WillRenderLike(g_BoomBastic.EntitySprites[ROCK_SPRITE]); 
	Activate(); 
} 
 
bool cRock::OnAnimate(float ElapsedTime, float AbsoluteTime) 
{ 
	//Si le rocher est sur une tile en feu, on le detruit 
	if (g_BoomBastic.Tilemap->LogicalMap(m_RockX, m_RockY) == LMAP_FIRE) 
		HitPoints = -1; 
	 
	return true; 
} 
 
void cRock::OnDying() 
{ 
	g_BoomBastic.Tilemap->LogicalMap(m_RockX, m_RockY, LMAP_GROUND); 
	 
	//On cree un bonus 1 fois sur 2 
	if (g_BoomBastic.Tools.randi(0, 1) == 0) 
	{ 
		//On determine aleatoirement le type du bonus 
		int BonusType = g_BoomBastic.Tools.randi(0, 3); 
		switch (BonusType) 
		{ 
		case 0: 
		default: 
			new cBonus(m_RockX, m_RockY, SPEED_BONUS); 
			break; 
			 
		case 1: 
			new cBonus(m_RockX, m_RockY, BOMB_BONUS); 
			break; 
			 
		case 2: 
			new cBonus(m_RockX, m_RockY, EXPLO_BONUS); 
			break; 
			 
		case 3: 
			new cBonus(m_RockX, m_RockY, ROCKET_BONUS); 
			break; 
		} 
	} 
}