From 6fee8a81b1c892032cb4d808baea2a2349d4007e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20F=C3=BCndgens?= Date: Wed, 4 Mar 2015 14:35:14 +0100 Subject: [PATCH] Changed triggers so the undo function can be in the same lua file. Fixed triggers for the second door. --- data/levels/Level1.xml | 76 ++++++++++++++++++++++- data/levels/scripts/openFirstDoor.lua | 24 +++++++ data/levels/scripts/openFirstDoorUndo.lua | 23 ------- data/levels/scripts/openSecondDoor1.lua | 28 +++++++-- data/levels/scripts/openSecondDoor2.lua | 28 +++++++-- data/levels/scripts/openSecondDoor3.lua | 28 +++++++-- data/levels/scripts/openSecondDoor4.lua | 30 +++++++-- data/levels/scripts/openThirdDoor.lua | 24 +++++++ data/levels/scripts/openThirdDoorUndo.lua | 23 ------- loader.cc | 3 +- trigger.cc | 15 ++++- trigger.hh | 3 +- 12 files changed, 231 insertions(+), 74 deletions(-) delete mode 100644 data/levels/scripts/openFirstDoorUndo.lua delete mode 100644 data/levels/scripts/openThirdDoorUndo.lua diff --git a/data/levels/Level1.xml b/data/levels/Level1.xml index 80e3368..76335e2 100644 --- a/data/levels/Level1.xml +++ b/data/levels/Level1.xml @@ -715,6 +715,7 @@ openSecondDoor1 + false -6.5 22.0 51.5 @@ -728,6 +729,22 @@ 8 0 + + openSecondDoor1Undo + true + -6.5 + 22.0 + 51.5 + - + - + 0.2 + false + 0 + openSecondDoor1.lua + 1 + 8 + 0 + @@ -751,6 +768,7 @@ openSecondDoor3 + false -6.5 22.0 29.5 @@ -764,6 +782,22 @@ 8 0 + + openSecondDoor3Undo + true + -6.5 + 22.0 + 29.5 + - + - + 0.2 + false + 0 + openSecondDoor3.lua + 1 + 8 + 0 + @@ -2411,6 +2445,7 @@ openSecondDoor4 + false -53.5 22.0 51.5 @@ -2424,6 +2459,22 @@ 8 0 + + openSecondDoor4Undo + true + -53.5 + 22.0 + 51.5 + - + - + 0.2 + false + 0 + openSecondDoor4.lua + 1 + 8 + 0 + @@ -2476,6 +2527,7 @@ openSecondDoor2 + false -53.5 22.0 29.5 @@ -2489,6 +2541,22 @@ 8 0 + + openSecondDoor2Undo + true + -53.5 + 22.0 + 29.5 + - + - + 0.2 + false + 0 + openSecondDoor2.lua + 1 + 8 + 0 + @@ -3672,6 +3740,7 @@ openThirdDoor + false -161.5 21.7 67.5 @@ -3687,6 +3756,7 @@ openThirdDoorUndo + true -161.5 21.7 67.5 @@ -3695,7 +3765,7 @@ 0.2 false 0 - openThirdDoorUndo.lua + openThirdDoor.lua 0 178 0 @@ -6159,6 +6229,7 @@ openFirstDoor + false 17.5 21.8 159.5 @@ -6174,6 +6245,7 @@ openFirstDoorUndo + true 17.5 21.8 159.5 @@ -6182,7 +6254,7 @@ 0.2 false 0 - openFirstDoorUndo.lua + openFirstDoor.lua 1 94 0 diff --git a/data/levels/scripts/openFirstDoor.lua b/data/levels/scripts/openFirstDoor.lua index 0dceaa4..001f8d6 100644 --- a/data/levels/scripts/openFirstDoor.lua +++ b/data/levels/scripts/openFirstDoor.lua @@ -2,6 +2,10 @@ local global = require( "global" ) if(global.triggeredOpenFirstDoor == nil) then global.triggeredOpenFirstDoor = false end +if(global.triggeredOpenFirstDoorUndo == nil) then + global.triggeredOpenFirstDoorUndo = true +end + function trigger(objectToChange) if(global.triggeredOpenFirstDoor == false) then if(not level) then @@ -21,3 +25,23 @@ function trigger(objectToChange) print("openFirstDoor") end end + +function triggerUndo(objectToChange) + if(global.triggeredOpenFirstDoorUndo == false) then + if(not level) then + print("No level found in Lua!") + return + end + + local strength = 100 + local xPos = 17.5 + local yPos = 25 + local zPos = 81.5 + level:moveObject(objectToChange, strength, xPos, yPos, zPos) + + global.triggeredOpenFirstDoor = false + + global.triggeredOpenFirstDoorUndo = true + print("openFirstDoorUndo") + end +end diff --git a/data/levels/scripts/openFirstDoorUndo.lua b/data/levels/scripts/openFirstDoorUndo.lua deleted file mode 100644 index e7538da..0000000 --- a/data/levels/scripts/openFirstDoorUndo.lua +++ /dev/null @@ -1,23 +0,0 @@ -local global = require( "global" ) -if(global.triggeredOpenFirstDoorUndo == nil) then - global.triggeredOpenFirstDoorUndo = true -end -function trigger(objectToChange) - if(global.triggeredOpenFirstDoorUndo == false) then - if(not level) then - print("No level found in Lua!") - return - end - - local strength = 100 - local xPos = 17.5 - local yPos = 25 - local zPos = 81.5 - level:moveObject(objectToChange, strength, xPos, yPos, zPos) - - global.triggeredOpenFirstDoor = false - - global.triggeredOpenFirstDoorUndo = true - print("openFirstDoorUndo") - end -end diff --git a/data/levels/scripts/openSecondDoor1.lua b/data/levels/scripts/openSecondDoor1.lua index 3a38643..7baccc5 100644 --- a/data/levels/scripts/openSecondDoor1.lua +++ b/data/levels/scripts/openSecondDoor1.lua @@ -2,6 +2,10 @@ local global = require( "global" ) if(global.triggeredOpenSecondDoor1 == nil) then global.triggeredOpenSecondDoor1 = false end +if(global.triggeredOpenSecondDoor1Undo == nil) then + global.triggeredOpenSecondDoor1Undo = true +end + function trigger(objectToChange) if(global.triggeredOpenSecondDoor1 == false) then if(not level) then @@ -25,14 +29,28 @@ function trigger(objectToChange) local zPos = 4.5 level:moveObject(objectToChange, strength, xPos, yPos, zPos) else - global.openSecondDoorCounter = 0 - global.triggeredOpenSecondDoor1 = false - global.triggeredOpenSecondDoor2 = false - global.triggeredOpenSecondDoor3 = false - global.triggeredOpenSecondDoor4 = false + global.triggeredOpenSecondDoor1Undo = false end end print("openSecondDoor1") end end + +function triggerUndo(objectToChange) + if(global.triggeredOpenSecondDoor1Undo == false) then + if(not level) then + print("No level found in Lua!") + return + end + + global.openSecondDoorCounter = 0 + global.triggeredOpenSecondDoor1 = false + global.triggeredOpenSecondDoor2 = false + global.triggeredOpenSecondDoor3 = false + global.triggeredOpenSecondDoor4 = false + + global.triggeredOpenSecondDoor1Undo = true + print("openSecondDoor1Undo") + end +end diff --git a/data/levels/scripts/openSecondDoor2.lua b/data/levels/scripts/openSecondDoor2.lua index b2bbdb5..f1de38e 100644 --- a/data/levels/scripts/openSecondDoor2.lua +++ b/data/levels/scripts/openSecondDoor2.lua @@ -2,6 +2,10 @@ local global = require( "global" ) if(global.triggeredOpenSecondDoor2 == nil) then global.triggeredOpenSecondDoor2 = false end +if(global.triggeredOpenSecondDoor2Undo == nil) then + global.triggeredOpenSecondDoor2Undo = true +end + function trigger(objectToChange) if(global.triggeredOpenSecondDoor2 == false) then if(not level) then @@ -25,14 +29,28 @@ function trigger(objectToChange) local zPos = 4.5 level:moveObject(objectToChange, strength, xPos, yPos, zPos) else - global.openSecondDoorCounter = 0 - global.triggeredOpenSecondDoor1 = false - global.triggeredOpenSecondDoor2 = false - global.triggeredOpenSecondDoor3 = false - global.triggeredOpenSecondDoor4 = false + global.triggeredOpenSecondDoor2Undo = false end end print("openSecondDoor2") end end + +function triggerUndo(objectToChange) + if(global.triggeredOpenSecondDoor2Undo == false) then + if(not level) then + print("No level found in Lua!") + return + end + + global.openSecondDoorCounter = 0 + global.triggeredOpenSecondDoor1 = false + global.triggeredOpenSecondDoor2 = false + global.triggeredOpenSecondDoor3 = false + global.triggeredOpenSecondDoor4 = false + + global.triggeredOpenSecondDoor2Undo = true + print("openSecondDoor2Undo") + end +end diff --git a/data/levels/scripts/openSecondDoor3.lua b/data/levels/scripts/openSecondDoor3.lua index 985b72d..0da7adf 100644 --- a/data/levels/scripts/openSecondDoor3.lua +++ b/data/levels/scripts/openSecondDoor3.lua @@ -2,6 +2,10 @@ local global = require( "global" ) if(global.triggeredOpenSecondDoor3 == nil) then global.triggeredOpenSecondDoor3 = false end +if(global.triggeredOpenSecondDoor3Undo == nil) then + global.triggeredOpenSecondDoor3Undo = true +end + function trigger(objectToChange) if(global.triggeredOpenSecondDoor3 == false) then if(not level) then @@ -25,14 +29,28 @@ function trigger(objectToChange) local zPos = 4.5 level:moveObject(objectToChange, strength, xPos, yPos, zPos) else - global.openSecondDoorCounter = 0 - global.triggeredOpenSecondDoor1 = false - global.triggeredOpenSecondDoor2 = false - global.triggeredOpenSecondDoor3 = false - global.triggeredOpenSecondDoor4 = false + global.triggeredOpenSecondDoor3Undo = false end end print("openSecondDoor3") end end + +function triggerUndo(objectToChange) + if(global.triggeredOpenSecondDoor3Undo == false) then + if(not level) then + print("No level found in Lua!") + return + end + + global.openSecondDoorCounter = 0 + global.triggeredOpenSecondDoor1 = false + global.triggeredOpenSecondDoor2 = false + global.triggeredOpenSecondDoor3 = false + global.triggeredOpenSecondDoor4 = false + + global.triggeredOpenSecondDoor3Undo = true + print("openSecondDoor3Undo") + end +end diff --git a/data/levels/scripts/openSecondDoor4.lua b/data/levels/scripts/openSecondDoor4.lua index f3fdfbb..9c2c98b 100644 --- a/data/levels/scripts/openSecondDoor4.lua +++ b/data/levels/scripts/openSecondDoor4.lua @@ -2,6 +2,10 @@ local global = require( "global" ) if(global.triggeredOpenSecondDoor4 == nil) then global.triggeredOpenSecondDoor4 = false end +if(global.triggeredOpenSecondDoor4Undo == nil) then + global.triggeredOpenSecondDoor4Undo = true +end + function trigger(objectToChange) if(global.triggeredOpenSecondDoor4 == false) then if(not level) then @@ -13,7 +17,7 @@ function trigger(objectToChange) global.openSecondDoorCounter = 0 end if(global.openSecondDoorCounter == 3) then - global.openSecondDoorCounter = global.openSecondDoorCounter + 1 + global.openSecondDoorCounter = global.openSecondDoorCounter + 1 end global.triggeredOpenSecondDoor4 = true @@ -25,14 +29,28 @@ function trigger(objectToChange) local zPos = 4.5 level:moveObject(objectToChange, strength, xPos, yPos, zPos) else - global.openSecondDoorCounter = 0 - global.triggeredOpenSecondDoor1 = false - global.triggeredOpenSecondDoor2 = false - global.triggeredOpenSecondDoor3 = false - global.triggeredOpenSecondDoor4 = false + global.triggeredOpenSecondDoor4Undo = false end end print("openSecondDoor4") end end + +function triggerUndo(objectToChange) + if(global.triggeredOpenSecondDoor4Undo == false) then + if(not level) then + print("No level found in Lua!") + return + end + + global.openSecondDoorCounter = 0 + global.triggeredOpenSecondDoor1 = false + global.triggeredOpenSecondDoor2 = false + global.triggeredOpenSecondDoor3 = false + global.triggeredOpenSecondDoor4 = false + + global.triggeredOpenSecondDoor4Undo = true + print("openSecondDoor4Undo") + end +end diff --git a/data/levels/scripts/openThirdDoor.lua b/data/levels/scripts/openThirdDoor.lua index e1776de..69f3120 100644 --- a/data/levels/scripts/openThirdDoor.lua +++ b/data/levels/scripts/openThirdDoor.lua @@ -2,6 +2,10 @@ local global = require( "global" ) if(global.triggeredOpenThirdDoor == nil) then global.triggeredOpenThirdDoor = false end +if(global.triggeredOpenThirdDoorUndo == nil) then + global.triggeredOpenThirdDoorUndo = true +end + function trigger(objectToChange) if(global.triggeredOpenThirdDoor == false) then if(not level) then @@ -21,3 +25,23 @@ function trigger(objectToChange) print("openThirdDoor") end end + +function triggerUndo(objectToChange) + if(global.triggeredOpenThirdDoorUndo == false) then + if(not level) then + print("No level found in Lua!") + return + end + + local strength = 100 + local xPos = -172.5 + local yPos = 25 + local zPos = 58.5 + level:moveObject(objectToChange, strength, xPos, yPos, zPos) + + global.triggeredOpenThirdDoor = false + + global.triggeredOpenThirdDoorUndo = true + print("openThirdDoorUndo") + end +end diff --git a/data/levels/scripts/openThirdDoorUndo.lua b/data/levels/scripts/openThirdDoorUndo.lua deleted file mode 100644 index f183e34..0000000 --- a/data/levels/scripts/openThirdDoorUndo.lua +++ /dev/null @@ -1,23 +0,0 @@ -local global = require( "global" ) -if(global.triggeredOpenThirdDoorUndo == nil) then - global.triggeredOpenThirdDoorUndo = true -end -function trigger(objectToChange) - if(global.triggeredOpenThirdDoorUndo == false) then - if(not level) then - print("No level found in Lua!") - return - end - - local strength = 100 - local xPos = -172.5 - local yPos = 25 - local zPos = 58.5 - level:moveObject(objectToChange, strength, xPos, yPos, zPos) - - global.triggeredOpenThirdDoor = false - - global.triggeredOpenThirdDoorUndo = true - print("openThirdDoorUndo") - end -end diff --git a/loader.cc b/loader.cc index 3c1e386..5c93b29 100644 --- a/loader.cc +++ b/loader.cc @@ -325,6 +325,7 @@ void Loader::load(std::string filePath, Level* level, std::string compositionsPa float xPos = queryFloat(xmlTrigger, "xPosition"); float yPos = queryFloat(xmlTrigger, "yPosition"); float zPos = queryFloat(xmlTrigger, "zPosition"); + bool undo = queryBool(xmlTrigger, "undo"); glm::vec3 position = glm::vec3(xPos, yPos, zPos); std::string stringTarget = queryString(xmlTrigger, "targetIdGreen"); if (stringTarget.compare("-") != 0){ @@ -381,7 +382,7 @@ void Loader::load(std::string filePath, Level* level, std::string compositionsPa printf("No Identifier found for an object that was to be changed by a trigger.\n"); } if (object != 0) { - Trigger trigger = Trigger(position, distance, isBigger, object, luaScript, level->getLuaState(), objectToChange, scriptPath); + Trigger trigger = Trigger(position, distance, isBigger, object, luaScript, level->getLuaState(), objectToChange, scriptPath, undo); level->addTrigger(trigger); } else { diff --git a/trigger.cc b/trigger.cc index dbea382..ee66fbe 100644 --- a/trigger.cc +++ b/trigger.cc @@ -1,7 +1,7 @@ #include "trigger.hh" #include -Trigger::Trigger(glm::vec3 position, float distance, bool isBigger, Object* object, std::string luaScript, lua_State* luaState, int objectToChange, std::string scriptPath) { +Trigger::Trigger(glm::vec3 position, float distance, bool isBigger, Object* object, std::string luaScript, lua_State* luaState, int objectToChange, std::string scriptPath, bool undo) { this->position=position; this->distance=distance; this->isBigger=isBigger; @@ -17,6 +17,7 @@ Trigger::Trigger(glm::vec3 position, float distance, bool isBigger, Object* obje printf("The Lua state is NULL in trigger!\n"); } this->objectToChange = objectToChange; + this->undo = undo; } Trigger::Trigger(){ @@ -28,11 +29,19 @@ Trigger::~Trigger(){ void Trigger::triggerUpdate(){ if (isBigger && (glm::distance(object->getPosition(), position) > distance)) { luaL_dofile(luaState, luaScript.c_str()); - luabridge::getGlobal(luaState, "trigger")(objectToChange); + if (undo){ + luabridge::getGlobal(luaState, "triggerUndo")(objectToChange); + }else{ + luabridge::getGlobal(luaState, "trigger")(objectToChange); + } } else if (!isBigger && (glm::distance(object->getPosition(), position) < distance)) { luaL_dofile(luaState, luaScript.c_str()); - luabridge::getGlobal(luaState, "trigger")(objectToChange); + if (undo){ + luabridge::getGlobal(luaState, "triggerUndo")(objectToChange); + }else{ + luabridge::getGlobal(luaState, "trigger")(objectToChange); + } } } diff --git a/trigger.hh b/trigger.hh index 7afa73d..3c30ca9 100644 --- a/trigger.hh +++ b/trigger.hh @@ -14,7 +14,7 @@ class Level; class Trigger { public: - Trigger(glm::vec3 position, float distance, bool isBigger, Object* object, std::string luaScript, lua_State* L, int objectToChange, std::string scriptPath); + Trigger(glm::vec3 position, float distance, bool isBigger, Object* object, std::string luaScript, lua_State* L, int objectToChange, std::string scriptPath, bool undo); Trigger(); ~Trigger(); void triggerUpdate(); @@ -27,6 +27,7 @@ class Trigger { std::string luaScript; lua_State* luaState; int objectToChange; + bool undo; }; #endif