X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftrigger%2Fdoor.cpp;h=efe800444d74ad7d9d2665e0e3769693e029fce9;hb=0b585f0dc8e185bcf1a7e281108281f5b2b96706;hp=79bfef8c034dcc66f62af22d864e1c8d81879265;hpb=d46c78c842ab4090a3f46e560c891234167f124b;p=supertux.git diff --git a/src/trigger/door.cpp b/src/trigger/door.cpp index 79bfef8c0..efe800444 100644 --- a/src/trigger/door.cpp +++ b/src/trigger/door.cpp @@ -19,33 +19,36 @@ #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"); } -Door::Door(int x, int y) +Door::Door(int x, int y, std::string sector, std::string spawnpoint) { bbox.set_pos(Vector(x, y)); bbox.set_size(32, 64); + target_sector = sector; + target_spawnpoint = spawnpoint; sprite = sprite_manager->create("door"); } @@ -56,7 +59,7 @@ Door::~Door() } void -Door::write(LispWriter& writer) +Door::write(lisp::Writer& writer) { writer.start_list("door"); @@ -75,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); } } @@ -87,11 +91,11 @@ Door::draw(DrawingContext& context) } void -Door::event(Player& player, EventType type) +Door::event(Player& , EventType type) { if(type == EVENT_ACTIVATE) { - sprite->set_action("open"); - sprite->start_animation(1); + sprite->set_action("open", 1); } } +IMPLEMENT_FACTORY(Door, "door");