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) :
30 bool must_activate = false;
32 reader.get("x", bbox.p1.x);
33 reader.get("y", bbox.p1.y);
35 reader.get("width", w);
36 reader.get("height", h);
38 reader.get("script", script);
39 reader.get("button", must_activate);
41 throw std::runtime_error("Need to specify a script for trigger object");
45 triggerevent = EVENT_ACTIVATE;
47 triggerevent = EVENT_TOUCH;
50 ScriptTrigger::ScriptTrigger(const Vector& pos, const std::string& script_) :
55 bbox.set_size(32, 32);
56 this->script = script_;
57 triggerevent = EVENT_TOUCH;
60 ScriptTrigger::~ScriptTrigger()
65 ScriptTrigger::event(Player& , EventType type)
67 if(type != triggerevent)
70 std::istringstream stream(script);
71 Sector::current()->run_script(stream, "ScriptTrigger");