Fixed flip level transformer
[supertux.git] / src / object / unstable_tile.hpp
index 6b91b5c..cd19c4e 100644 (file)
@@ -1,7 +1,8 @@
 //  $Id$
 //
-//  SuperTux
+//  SuperTux - Unstable Tile
 //  Copyright (C) 2006 Matthias Braun <matze@braunis.de>
+//  Copyright (C) 2006 Christoph Sommer <christoph.sommer@2006.expires.deltadevelopment.de>
 //
 //  This program is free software; you can redistribute it and/or
 //  modify it under the terms of the GNU General Public License
 #ifndef __UNSTABLE_TILE_H__
 #define __UNSTABLE_TILE_H__
 
-#include "moving_object.hpp"
+#include "object/moving_sprite.hpp"
 #include "lisp/lisp.hpp"
 #include "physic.hpp"
 #include "timer.hpp"
 
-class Sprite;
-class Player;
-
-/** A tile that starts falling down if tux stands to long on it */
-class UnstableTile : public MovingObject
+/** 
+ * A block that disintegrates when stood on
+ */
+class UnstableTile : public MovingSprite
 {
 public:
   UnstableTile(const lisp::Lisp& lisp);
-  ~UnstableTile();
+  virtual UnstableTile* clone() const { return new UnstableTile(*this); }
 
   HitResponse collision(GameObject& other, const CollisionHit& hit);
   void update(float elapsed_time);
-  void draw(DrawingContext& context);
 
 private:
+  enum State {
+    STATE_NORMAL,        /**< default state */
+    STATE_CRUMBLING,     /**< crumbling, still solid */
+    STATE_DISINTEGRATING /**< disintegrating, no longer solid */
+  };
+  State state;
+
   Physic physic;
-  Sprite* sprite;
-  Timer timer;
-  bool hit;
-  bool falling;
 };
 
 #endif