KirbyDreamLand/Script_Control.cpp

398 lines
9.5 KiB
C++
Raw Normal View History

2016-04-30 13:46:05 +02:00
#include "Script_Control.hpp"
//Kirby script
void Control::Start()
{
direction = false;
couldown = 0;
isaspi = false;
ishurt = 0;
Ventre = Vide;
GetEngine()->AddObject(OAspi);
GetObject()->ORigibody->UseFixeBody(16,16);
}
void Control::Update()
{
if( GetObject()->ORigibody->CollisionDecor( GetX() , ( GetY() - 1 )) == 1) isground = true;
else isground = false;
isdo = false;
if(ishurt == 0)
{
if( Ventre == Vide)
{
if(input_release(K_OPTN) && isaspi == true)
{
OAspi->OTransforms->SetXY(-1000 , - 1000);
isaspi = false;
}
if(input_press(K_OPTN))
{
isaspi = true;
if(direction == false)
{
OAspi->OTransforms->SetXY( GetX() + 16 , GetY());
OAspi->ORender->ReverseRender(false);
}
else
{
OAspi->OTransforms->SetXY( GetX() - 40 , GetY());
OAspi->ORender->ReverseRender(true);
}
SetIt(3);
isdo = true;
}
//***************************//
if(input_press(K_DOWN))
{
SetIt(10);
isdo = true;
}
else
{
//***************************//
if(input_trigger(K_SHIFT))
{
if(isground == true)
{
GetObject()->ORigibody->R_body.velocity.y = 25;
SetIt(2);
isdo = true;
}
}
else
{
if(input_trigger(K_UP))
{
Ventre = Air;
SetIt(9);
isdo = true;
}
}
//***************************//
if(input_press(K_RIGHT) && (isground == true && GetObject()->ORender->GetIt() == 3) == false)
{
Move( 2 , 0 );
direction = false;
if(GetObject()->ORender->GetIt() != 3)SetIt(1);
isdo = true;
}
else
{
if(input_press(K_LEFT) && (isground == true && GetObject()->ORender->GetIt() == 3) == false)
{
Move( -2 , 0 );
direction = true;
if(GetObject()->ORender->GetIt() != 3)SetIt(1);
isdo = true;
}
}
}
//***************************//
if(isground == false && GetObject()->ORender->GetIt() != 3)SetIt(2);
else if(isdo == false)SetIt(0);
}
else
{
if(input_press(K_RIGHT))
{
Move( 2 , 0 );
direction = false;
if(isground == true)SetIt(5);
isdo = true;
}
else
{
if(input_press(K_LEFT))
{
Move( -2 , 0 );
direction = true;
if(isground == true)SetIt(5);
isdo = true;
}
}
//***************************//
if(input_trigger(K_UP))
{
if(Ventre == Air)
{
GetObject()->ORigibody->R_body.velocity.y = 25;
SetIt(7);
isdo = true;
}
}
else
{
if(input_trigger(K_SHIFT))
{
if(isground == true)
{
GetObject()->ORigibody->R_body.velocity.y = 25;
SetIt(6);
isdo = true;
}
}
}
//***************************//
if(input_trigger(K_OPTN))
{
if(Ventre == Air)
{
Object * Buffer = new Object;
SSoufle * ScriptSouffle = new SSoufle;
ScriptSouffle->time = 12;
ScriptSouffle->Interface = Interface;
Buffer->AffectTag("Souffle");
Buffer->ORender->SetRender(RenderSouffle);
Buffer->AffectScript(ScriptSouffle);
GetEngine()->AddObject(Buffer);
if(direction == false)
{
Buffer->OTransforms->SetXY( GetX() + 16 , GetY() + 8 );
Buffer->ORender->ReverseRender(false);
ScriptSouffle->direction = false;
}
else
{
Buffer->OTransforms->SetXY( GetX(), GetY() + 8 );
Buffer->ORender->ReverseRender(true);
ScriptSouffle->direction = true;
}
}
if(Ventre == Plein)
{
Object * Buffer = new Object;
SStar * ScriptStar = new SStar;
ScriptStar->Interface = Interface;
Buffer->ORender->SetRender(RenderEtoile);
Buffer->AffectScript(ScriptStar);
Buffer->ORigibody = new Rigibody(Buffer);
GetEngine()->AddObject(Buffer);
if(direction == false)
{
Buffer->OTransforms->SetXY( GetX() + 16 , GetY() + 8 );
Buffer->ORender->ReverseRender(false);
ScriptStar->direction = false;
}
else
{
Buffer->OTransforms->SetXY( GetX(), GetY() + 8 );
Buffer->ORender->ReverseRender(true);
ScriptStar->direction = true;
}
}
Ventre = Vide;
SetIt(8);
isdo = true;
}
//***************************//
if(isground == false)
{
if(GetObject()->ORender->GetIt() != 6 && GetObject()->ORender->GetIt() != 7)SetIt(7);
}
else if(isdo == false )SetIt(4);
}
GetObject()->ORender->ReverseRender(direction);
Object * Ennemi = GetObject()->CollisionTagO("Ennemis");
if(Ennemi != NULL )
{
if(isaspi == false)
{
Ventre = Vide;
GetEngine()->DelObject(Ennemi);
Interface->AddScore(400);
Interface->DelVie(1);
ishurt = 20;
}
else
{
Ventre = Plein;
GetEngine()->DelObject(Ennemi);
Interface->AddScore(200);
}
}
}
else
{
GetObject()->ORigibody->R_body.velocity.x = -20;
GetObject()->ORigibody->R_body.velocity.y = 10;
ishurt --;
}
if( GetY() < 2)
{
Ventre = Vide;
Interface->DelVie(6);
direction = false;
}
if(GetObject()->CollisionTag("Etoile"))
{
ML_clear_vram();
PrintMini(10,30,"Bravo vous venez de sauvez" , 0);
PrintMini(40,38,"la Terre XD" , 0);
ML_display_vram();
Sleep(2500);
GetEngine()->StopGame();
}
GetEngine()->MiddleScreen( GetX() , (GetY() + 2));
}
void Control::Initialisation(Animation E, Animation S , Object * A , Script_GUI * G)
{
RenderEtoile = E;
RenderSouffle = S;
OAspi = A;
Interface = G;
}
void SAspi::Update()
{
Object * Buffer = NULL;
Buffer = GetObject()->CollisionTagO("Ennemis");
if( Buffer != NULL)
{
if(GetObject()->ORender->GetReverse()== false)
{
Buffer->ORigibody->Move(-2,0);
}
else
{
Buffer->ORigibody->Move(2,0);
}
}
}
void SSoufle::Update()
{
if(time > 0)
{
if(direction == true)SetXY( GetX() - 3 , GetY() );
else SetXY( GetX() + 3 , GetY() );
}
time--;
Object * Buffer = GetObject()->CollisionTagO("Ennemis");
if(Buffer != NULL)
{
GetEngine()->DelObject(Buffer);
GetEngine()->DelObject(GetObject());
Interface->AddScore(200);
return;
}
if(time < -10)
{
GetEngine()->DelObject(GetObject());return;
}
}
void SStar::Update()
{
if(direction == true)
{
SetXY( GetX() - 3 , GetY() );
if(GetObject()->ORigibody->CollisionDecor(GetX() - 3 , GetY()))
{
GetEngine()->DelObject(GetObject());return;
}
}
else
{
SetXY( GetX() + 3 , GetY() );
if(GetObject()->ORigibody->CollisionDecor(GetX() + 3 , GetY()))
{
GetEngine()->DelObject(GetObject());return;
}
}
Object * Buffer = GetObject()->CollisionTagO("Ennemis");
if(Buffer != NULL)
{
GetEngine()->DelObject(Buffer);
GetEngine()->DelObject(GetObject());
Interface->AddScore(400);
return;
}
}