KirbyDreamLand/IA_Bomber.cpp

115 lines
2.0 KiB
C++

#include "IA_Bomber.hpp"
Mob_Bomber::Mob_Bomber()
{
direction = false;
needtoback = false;
choix = 0;
life = 3;
}
void Mob_Bomber::Update()
{
isground = CollisionDecor( GetX() , GetY() - 1 );
switch(choix)
{
case 0:
break;
case 1:
if(needtoback)Move(3,0);
else Move(-3,0);
if(isground && needtoback)
{
choix = 0;
needtoback = false;
return;
}
if(isground && !needtoback)
{
needtoback = true;
GetBody()->velocity.y = 40;
}
break;
case 2:
if(isground)
{
choix = 0;
Object * Buffer = new Object;
Ia_Bomb * Buffer_Script = new Ia_Bomb;
Buffer->AffectScript(Buffer_Script);
Buffer->GetTransform()->SetXY( GetX() - 16 , GetY() + 1);
Buffer->GetRender()->SetRender(A_Bomb);
Buffer->AddRigidBody();
Buffer->AffectTag("Ennemis");
GetEngine()->AddObject(Buffer);
}
break;
default: break;
}
SetIt(choix);
Object * Star = GetObject()->GetObjectCollisionTag("Star");
GetEngine()->UpdateRelativePosition();
int x = GetObject()->GetTransform()->GetRelativeX() + 5;
int y = 64 - GetObject()->GetTransform()->GetRelativeY() - 30;
for(int i = 0 ; i < life ; i++)
{
ML_rectangle( x + i * 4 , y , x + 2 + i * 4, y - 3 , 1 , ML_BLACK , ML_BLACK);
}
if(Star)
{
GetEngine()->DelObject(Star);
life --;
if(life < 1)GetEngine()->DelObject(GetObject());
}
}
void Mob_Bomber::UpdateEverySecond()
{
if(!choix)
{
choix = rand_int(6);
if(choix > 2)choix = 0;
if(choix)
{
GetBody()->velocity.y = 39;
Move(0,1);
}
}
}
void Ia_Bomb::Update()
{
Move(-4,0);
if(CollisionDecor( GetX() - 1 , GetY() ) )GetEngine()->DelObject(GetObject());
}