2 // Copyright (C) 2006 Matthias Braun <matze@braunis.de>
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
21 #include "supertux/object_factory.hpp"
22 #include "supertux/sector.hpp"
23 #include "trigger/scripttrigger.hpp"
24 #include "util/reader.hpp"
26 ScriptTrigger::ScriptTrigger(const Reader& reader)
28 bool must_activate = false;
30 reader.get("x", bbox.p1.x);
31 reader.get("y", bbox.p1.y);
33 reader.get("width", w);
34 reader.get("height", h);
36 reader.get("script", script);
37 reader.get("button", must_activate);
39 throw std::runtime_error("Need to specify a script for trigger object");
43 triggerevent = EVENT_ACTIVATE;
45 triggerevent = EVENT_TOUCH;
48 ScriptTrigger::ScriptTrigger(const Vector& pos, const std::string& script)
51 bbox.set_size(32, 32);
52 this->script = script;
53 triggerevent = EVENT_TOUCH;
56 ScriptTrigger::~ScriptTrigger()
61 ScriptTrigger::event(Player& , EventType type)
63 if(type != triggerevent)
66 std::istringstream stream(script);
67 Sector::current()->run_script(stream, "ScriptTrigger");
70 IMPLEMENT_FACTORY(ScriptTrigger, "scripttrigger");