small fix
[supertux.git] / src / trigger / scripttrigger.cpp
index 5c8ecd7..c5e93eb 100644 (file)
 #include <config.h>\r
 \r
 #include <sstream>\r
+#include <stdexcept>\r
+#include <memory>\r
 \r
-#include "scripttrigger.h"\r
-#include "game_session.h"\r
-#include "lisp/lisp.h"\r
-#include "lisp/writer.h"\r
-#include "object_factory.h"\r
-#include "scripting/script_interpreter.h"\r
-#include "sector.h"\r
+#include "scripttrigger.hpp"\r
+#include "game_session.hpp"\r
+#include "lisp/lisp.hpp"\r
+#include "lisp/writer.hpp"\r
+#include "object_factory.hpp"\r
+#include "scripting/script_interpreter.hpp"\r
+#include "sector.hpp"\r
 \r
 ScriptTrigger::ScriptTrigger(const lisp::Lisp& reader)\r
 {\r
@@ -42,6 +44,9 @@ ScriptTrigger::ScriptTrigger(const lisp::Lisp& reader)
   bbox.set_size(w, h);\r
   reader.get("script", script);\r
   reader.get("button", must_activate);\r
+  if(script == "") {\r
+    throw std::runtime_error("Need to specify a script for trigger object");\r
+  }\r
   \r
   if (must_activate)\r
     triggerevent = EVENT_ACTIVATE;\r
@@ -79,30 +84,11 @@ ScriptTrigger::write(lisp::Writer& writer)
 void\r
 ScriptTrigger::event(Player& , EventType type)\r
 {\r
-  if(type == triggerevent)\r
-  {\r
-    if (script != "")\r
-    {\r
-      try\r
-      {\r
-        ScriptInterpreter* interpreter \r
-          = new ScriptInterpreter(GameSession::current()->get_working_directory());\r
-        interpreter->register_sector(Sector::current());\r
-        std::istringstream in(script);\r
-        interpreter->load_script(in, "trigger-script");\r
-        interpreter->start_script();\r
-        Sector::current()->add_object(interpreter);\r
-      }\r
-      catch(std::exception& e)\r
-      {\r
-          std::cerr << "Couldn't execute trigger script: " << e.what() << "\n";\r
-      }\r
-    }\r
-    else\r
-    {\r
-      std::cerr << "Couldn't find trigger script.\n";\r
-    }\r
-  }\r
+  if(type != triggerevent)\r
+    return;\r
+\r
+  ScriptInterpreter::add_script_object(Sector::current(), "trigger - scritp",\r
+      script);\r
 }\r
 \r
 IMPLEMENT_FACTORY(ScriptTrigger, "scripttrigger");\r