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