78 lines
2.2 KiB
C++
78 lines
2.2 KiB
C++
#include "trigger.hh"
|
|
#include "level.hh"
|
|
|
|
Trigger::Trigger(glm::vec3 position, float distance, bool isBigger, Object* object, int functionPointer_int, lua_State* L, Level* level) {
|
|
this->position=position;
|
|
this->distance=distance;
|
|
this->isBigger=isBigger;
|
|
this->object=object;
|
|
void (*functionPointer)(Level*) = NULL;
|
|
switch(functionPointer_int) {
|
|
case 0:
|
|
this->functionPointer = &Trigger::trigger_function_0;
|
|
break;
|
|
case 1:
|
|
this->functionPointer = &Trigger::trigger_function_1;
|
|
break;
|
|
case 2:
|
|
this->functionPointer = &Trigger::trigger_function_2;
|
|
break;
|
|
case 3:
|
|
this->functionPointer = &Trigger::trigger_function_3;
|
|
break;
|
|
case 4:
|
|
this->functionPointer = &Trigger::trigger_function_4;
|
|
break;
|
|
default:
|
|
printf("Trigger function could not be found.\n");
|
|
}
|
|
this->level = level;
|
|
this->L = L;
|
|
if(L == nullptr){
|
|
printf("L is NULL in trigger!\n");
|
|
}
|
|
triggered = false;
|
|
}
|
|
|
|
Trigger::Trigger(){
|
|
}
|
|
|
|
Trigger::~Trigger(){
|
|
}
|
|
|
|
void Trigger::triggerUpdate(){
|
|
if (!triggered){
|
|
if (isBigger && (glm::distance(object->getPosition(), position) > distance)) {
|
|
(this->*functionPointer)(level);
|
|
luaL_dofile(L, "../Levels/scripts/Level1/deleteRandomObject.lua");
|
|
luabridge::getGlobal(L, "trigger")();
|
|
triggered = true;
|
|
}
|
|
else if (!isBigger && (glm::distance(object->getPosition(), position) < distance)) {
|
|
(this->*functionPointer)(level);
|
|
luaL_dofile(L, "../Levels/scripts/Level1/deleteRandomObject.lua");
|
|
luabridge::getGlobal(L, "trigger")();
|
|
triggered = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
void Trigger::trigger_function_0(Level* level) {
|
|
if (!triggered) {
|
|
int rand = std::rand() % level->getObjects()->size();
|
|
level->getObjects()->erase(level->getObjects()->begin() + rand);
|
|
}
|
|
}
|
|
|
|
void Trigger::trigger_function_1(Level* level) {
|
|
}
|
|
|
|
void Trigger::trigger_function_2(Level* level) {
|
|
}
|
|
|
|
void Trigger::trigger_function_3(Level* level) {
|
|
}
|
|
|
|
void Trigger::trigger_function_4(Level* level) {
|
|
}
|