212 lines
4.1 KiB
C++
212 lines
4.1 KiB
C++
|
|
#include "IA_Whispy.hpp"
|
|
|
|
Mob_Whispy::Mob_Whispy()
|
|
{
|
|
direction = false;
|
|
choix = 0;
|
|
life = 6;
|
|
couldown = 0;
|
|
}
|
|
|
|
void Mob_Whispy::Update()
|
|
{
|
|
|
|
switch(choix)
|
|
{
|
|
case 0:
|
|
|
|
SetIt(0);
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
SetIt(0);
|
|
|
|
if(!rand_int(80))
|
|
{
|
|
Object * Buffer = new Object;
|
|
|
|
Ia_Apple * Buffer_Script = new Ia_Apple;
|
|
Buffer->AffectScript(Buffer_Script);
|
|
|
|
Buffer->GetTransform()->SetXY( rand_int_ab(16,80) , 140);
|
|
|
|
Buffer->AddRigidBody();
|
|
Buffer->GetRigidBody()->SetMass(1);
|
|
|
|
Buffer->GetRender()->SetRender(A_Apple);
|
|
|
|
Buffer->AffectTag("Ennemis");
|
|
|
|
GetEngine()->AddObject(Buffer);
|
|
|
|
couldown --;
|
|
}
|
|
|
|
if(!couldown)choix = 0;
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
SetIt(1);
|
|
|
|
if(!rand_int(50))
|
|
{
|
|
Object * Buffer = new Object;
|
|
|
|
Ia_Souffle * Buffer_Script = new Ia_Souffle;
|
|
Buffer->AffectScript(Buffer_Script);
|
|
|
|
Buffer->GetTransform()->SetXY( GetX() - 4 , GetY() + 2);
|
|
|
|
Buffer->AddRigidBody();
|
|
|
|
Buffer->GetRender()->SetRender(A_Souffle);
|
|
Buffer->GetRender()->ReverseRender(true);
|
|
|
|
Buffer->AffectTag("Boss");
|
|
|
|
GetEngine()->AddObject(Buffer);
|
|
|
|
|
|
couldown --;
|
|
}
|
|
|
|
if(!couldown)choix = 0;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
SetIt(2);
|
|
couldown--;
|
|
if(!couldown)choix = 0;
|
|
|
|
break;
|
|
|
|
default: break;
|
|
}
|
|
|
|
|
|
|
|
GetEngine()->UpdateRelativePosition();
|
|
|
|
int x = GetObject()->GetTransform()->GetRelativeX() + 16;
|
|
int y = 64 - GetObject()->GetTransform()->GetRelativeY() + 6;
|
|
|
|
for(int i = 0 ; i < life ; i++)
|
|
{
|
|
ML_rectangle( x + i * 4 , y , x + 2 + i * 4, y - 3 , 1 , ML_BLACK , ML_BLACK);
|
|
}
|
|
|
|
Object * Star = GetObject()->GetObjectCollisionTag("Star");
|
|
|
|
if(Star)
|
|
{
|
|
GetEngine()->DelObject(Star);
|
|
life --;
|
|
choix = 3;
|
|
couldown = 35;
|
|
|
|
if(life < 1)
|
|
{
|
|
choix = -1;
|
|
SetIt(2);
|
|
|
|
Object * Buffer = new Object;
|
|
|
|
Ia_FS * Buffer_Script = new Ia_FS;
|
|
Buffer->AffectScript(Buffer_Script);
|
|
|
|
Buffer->GetTransform()->SetXY( 50, 50 );
|
|
Buffer->GetRender()->SetRender(A_FS);
|
|
|
|
Buffer->AffectTag("FS");
|
|
|
|
GetEngine()->AddObject(Buffer);
|
|
|
|
GetObject()->AffectTag(" ");
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void Mob_Whispy::UpdateEverySecond()
|
|
{
|
|
Object * Kirby;
|
|
|
|
for(int i = 0 ; i < GetEngine()->GetCurrentLevel()->GetNbObject() ; i++ )
|
|
{
|
|
if(!strcmp(GetEngine()->GetCurrentLevel()->GetListeObject()[i]->GetTag(), "Kirby"))Kirby = GetEngine()->GetCurrentLevel()->GetListeObject()[i];
|
|
}
|
|
|
|
int y = Kirby->GetTransform()->GetY();
|
|
|
|
if(!choix && y < 200)
|
|
{
|
|
choix = rand_int(6);
|
|
|
|
if(choix > 2)choix = 0;
|
|
|
|
couldown = 3;
|
|
}
|
|
}
|
|
|
|
Ia_Apple::Ia_Apple()
|
|
{
|
|
rebond = 1;
|
|
}
|
|
|
|
void Ia_Apple::Update()
|
|
{
|
|
const unsigned char Arrow[]={0xff, 0xff, 0x6f, };
|
|
|
|
if(!GetObject()->IsOnScreen() && GetY() > 32)
|
|
{
|
|
ML_bmp_or_cl(Arrow,GetObject()->GetTransform()->GetRelativeX() + 6 , 1 , 4 , 3);
|
|
}
|
|
|
|
GetObject()->GetRender()->SetDirection(GetObject()->GetRender()->GetDirection() + 20);
|
|
|
|
if(CollisionDecor( GetX() , GetY() - 1 ) )
|
|
{
|
|
if(rebond)
|
|
{
|
|
GetBody()->velocity.y = 12;
|
|
GetBody()->velocity.x = 12;
|
|
|
|
rebond --;
|
|
}
|
|
else
|
|
{
|
|
GetEngine()->DelObject(GetObject());
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
void Ia_Souffle::Update()
|
|
{
|
|
Move( - 3 , rand_int_ab(-1,1));
|
|
|
|
if(CollisionDecor( GetX() - 1, GetY() ) )GetEngine()->DelObject(GetObject());
|
|
}
|
|
|
|
Ia_FS::Ia_FS()
|
|
{
|
|
time = 0;
|
|
}
|
|
|
|
void Ia_FS::Update()
|
|
{
|
|
if(!time)GetObject()->GetRender()->SetDirection(GetObject()->GetRender()->GetDirection() + 45);
|
|
|
|
time ++;
|
|
|
|
if(time > 5)time = 0;
|
|
}
|