// $Id$
//
-// SuperTux - A Jump'n Run
-// Copyright (C) 2004 Matthias Braun <matze@braunis.de
+// SuperTux
+// Copyright (C) 2006 Matthias Braun <matze@braunis.de>
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
#ifndef SUPERTUX_DOOR_H
#define SUPERTUX_DOOR_H
#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