X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftrigger%2Fswitch.cpp;h=b32e5eded69147e0b6636eb54a2b36af151c29ab;hb=3d0fc88a41d3774bbbcaee76efdb996bbacc6c45;hp=23f5754f8fa741881aeb7c362380a183f673c1fd;hpb=fea3446f05e1e7673607b835c269d3e8d1929ab3;p=supertux.git diff --git a/src/trigger/switch.cpp b/src/trigger/switch.cpp index 23f5754f8..b32e5eded 100644 --- a/src/trigger/switch.cpp +++ b/src/trigger/switch.cpp @@ -32,7 +32,7 @@ namespace { } Switch::Switch(const lisp::Lisp& reader) - : state(OFF) + : state(OFF) { if (!reader.get("x", bbox.p1.x)) throw std::runtime_error("no x position set"); if (!reader.get("y", bbox.p1.y)) throw std::runtime_error("no y position set"); @@ -53,10 +53,10 @@ void Switch::write(lisp::Writer& writer) { writer.start_list("switch"); - writer.write_float("x", bbox.p1.x); - writer.write_float("y", bbox.p1.y); - writer.write_string("sprite", sprite_name); - writer.write_string("script", script); + writer.write("x", bbox.p1.x); + writer.write("y", bbox.p1.y); + writer.write("sprite", sprite_name); + writer.write("script", script); writer.end_list("switch"); } @@ -68,23 +68,25 @@ Switch::update(float ) break; case TURN_ON: if(sprite->animation_done()) { - std::istringstream stream(script); - Sector::current()->run_script(stream, "Switch"); + std::istringstream stream(script); + std::ostringstream location; + location << "switch" << bbox.p1; + Sector::current()->run_script(stream, location.str()); - sprite->set_action("on", 1); - state = ON; + sprite->set_action("on", 1); + state = ON; } break; case ON: if(sprite->animation_done()) { - sprite->set_action("turnoff", 1); - state = TURN_OFF; + sprite->set_action("turnoff", 1); + state = TURN_OFF; } break; case TURN_OFF: if(sprite->animation_done()) { - sprite->set_action("off"); - state = OFF; + sprite->set_action("off"); + state = OFF; } break; } @@ -103,9 +105,9 @@ Switch::event(Player& , EventType type) switch (state) { case OFF: - sprite->set_action("turnon", 1); + sprite->set_action("turnon", 1); sound_manager->play( SWITCH_SOUND ); - state = TURN_ON; + state = TURN_ON; break; case TURN_ON: break;