C-Engine/src/Trigger.cpp

98 lines
2.6 KiB
C++

/* ************************************************************************** */
/* _____ _ __ ___ __ */
/* Trigger.cpp | ___(_)/ _| ___ ( _ ) / /_ */
/* Project: C-Engine | |_ | | |_ / _ \/ _ \| '_ \ */
/* | _| | | _| __/ (_) | (_) | */
/* Author: Fife <wasabifife@gmail.com> |_| |_|_| \___|\___/ \___/ */
/* */
/* ************************************************************************** */
#include "..\C-Engine\include\Object.hpp"
Trigger::Trigger()
{
OTransform = new Transform(this);
ORender = new Render(this);
tag = new char[20];
ORigidBody = new RigidBody(this);
enable = true;
Trigger_Script * Buffer = new Trigger_Script;
Buffer->AffectTrigger(this);
OScript = Buffer;
Conteneur = NULL;
}
Trigger::~Trigger()
{
delete OTransform;
delete ORender;
delete ORigidBody;
delete OScript;
delete []tag;
}
void Trigger::CreateTrigger(int x , int y , int width , int height )
{
OTransform->SetXY(x,y);
ORigidBody->UseFixeBody(width,height);
}
void Trigger::SetDestination(int x , int y , int level , char * onlypass)
{
destination.x = x;
destination.y = y;
leveldestination = level;
pass = onlypass;
}
Vec2 Trigger::GetDestination()
{
return destination;
}
int Trigger::GetDestinationLevel()
{
return leveldestination;
}
char * Trigger::GetPass()
{
return pass;
}
void Trigger_Script::AffectTrigger(Trigger * TV)
{
TConteneur = TV;
OConteneur = TV;
EConteneur = TConteneur->GetEngine();
}
Trigger * Trigger_Script::GetTrigger()
{
return TConteneur;
}
void Trigger_Script::Update()
{
for(int i = 0 ; i < GetEngine()->GetCurrentLevel()->GetNbObject() ; i++ )
{
if(GetEngine()->GetCurrentLevel()->GetListeObject()[i] != GetObject())
{
if(GetObject()->Collision(i, GetEngine()->GetCurrentLevel()))
{
if(GetTrigger()->GetPass())
{
if(!strcmp(GetEngine()->GetCurrentLevel()->GetListeObject()[i]->GetTag() , GetTrigger()->GetPass()))
{
if(GetEngine()->GetCurrentLevel()->GetListeObject()[i]->GetScript())
GetEngine()->GetCurrentLevel()->GetListeObject()[i]->GetScript()->Teleport(TConteneur->GetDestination().x , TConteneur->GetDestination().y , TConteneur->GetDestinationLevel());
}
}
}
}
}
}