115 lines
2.0 KiB
C++
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());
|
|
|
|
}
|