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;
}
}
}