X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftrigger%2Fdoor.cpp;h=efe800444d74ad7d9d2665e0e3769693e029fce9;hb=9e89407a97c5dfb035192387121e6102bc45a8fc;hp=43a4b291d62b33dcb0d60ad1ad522fd812e1e294;hpb=f1c7a49dd18ff59d0d32bd118044402ff35f66f5;p=supertux.git diff --git a/src/trigger/door.cpp b/src/trigger/door.cpp index 43a4b291d..efe800444 100644 --- a/src/trigger/door.cpp +++ b/src/trigger/door.cpp @@ -19,25 +19,26 @@ #include #include "door.h" -#include "utils/lispreader.h" -#include "utils/lispwriter.h" -#include "gameloop.h" +#include "game_session.h" #include "resources.h" -#include "special/sprite.h" -#include "special/sprite_manager.h" +#include "object_factory.h" +#include "sprite/sprite.h" +#include "sprite/sprite_manager.h" #include "video/drawing_context.h" #include "app/globals.h" +#include "lisp/lisp.h" +#include "lisp/writer.h" using namespace SuperTux; -Door::Door(LispReader& reader) +Door::Door(const lisp::Lisp& reader) { - reader.read_float("x", bbox.p1.x); - reader.read_float("y", bbox.p1.y); + reader.get("x", bbox.p1.x); + reader.get("y", bbox.p1.y); bbox.set_size(32, 64); - reader.read_string("sector", target_sector); - reader.read_string("spawnpoint", target_spawnpoint); + reader.get("sector", target_sector); + reader.get("spawnpoint", target_spawnpoint); sprite = sprite_manager->create("door"); } @@ -58,7 +59,7 @@ Door::~Door() } void -Door::write(LispWriter& writer) +Door::write(lisp::Writer& writer) { writer.start_list("door"); @@ -77,7 +78,8 @@ void Door::action(float ) { //Check if door animation is complete - if (!sprite->check_animation()) { + if(sprite->check_animation()) { + sprite->set_action("normal"); GameSession::current()->respawn(target_sector, target_spawnpoint); } } @@ -96,3 +98,4 @@ Door::event(Player& , EventType type) } } +IMPLEMENT_FACTORY(Door, "door");