#include "trigger_base.hpp"
#include "serializable.hpp"
#include "timer.hpp"
+#include "object/player.hpp"
class Door : public TriggerBase, public Serializable
{
virtual ~Door();
virtual void write(lisp::Writer& writer);
-
+
virtual void update(float elapsed_time);
virtual void draw(DrawingContext& context);
virtual void event(Player& player, EventType type);
+ virtual HitResponse collision(GameObject& other, const CollisionHit& hit);
private:
- std::string target_sector;
- std::string target_spawnpoint;
- Sprite* sprite;
+ enum DoorState {
+ CLOSED,
+ OPENING,
+ OPEN,
+ CLOSING
+ };
+
+ DoorState state; /**< current state of the door */
+ std::string target_sector; /**< target sector to teleport to */
+ std::string target_spawnpoint; /**< target spawnpoint to teleport to */
+ Sprite* sprite; /**< "door" sprite to render */
+ Timer stay_open_timer; /**< time until door will close again */
};
#endif