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