/* ************************************************************************** */ /* _____ _ __ ___ __ */ /* Trigger.cpp | ___(_)/ _| ___ ( _ ) / /_ */ /* Project: C-Engine | |_ | | |_ / _ \/ _ \| '_ \ */ /* | _| | | _| __/ (_) | (_) | */ /* Author: Fife |_| |_|_| \___|\___/ \___/ */ /* */ /* ************************************************************************** */ #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()); } } } } } }