* Coins inside boxes are now being counted. (We'll have to decide if we want the...
[supertux.git] / src / object / block.hpp
index ac7bdd2..94f87fb 100644 (file)
@@ -37,14 +37,20 @@ public:
   virtual void draw(DrawingContext& context);
 
 protected:
+  friend class FlipLevelTransformer;
+
   virtual void hit(Player& player) = 0;
   void start_bounce();
+  void start_break();
+  void break_me();
 
   Sprite* sprite;
   bool bouncing;
+  bool breaking;
   float bounce_dir;
   float bounce_offset;
   float original_y;
+
 };
 
 class BonusBlock : public Block
@@ -53,13 +59,10 @@ public:
   BonusBlock(const Vector& pos, int data);
   BonusBlock(const lisp::Lisp& lisp);
   virtual ~BonusBlock();
+  HitResponse collision(GameObject& other, const CollisionHit& hit);
 
   void try_open();
 
-protected:
-  virtual void hit(Player& player);
-
-private:
   enum Contents {
     CONTENT_COIN,
     CONTENT_FIREGROW,
@@ -70,6 +73,10 @@ private:
   };
 
   Contents contents;
+protected:
+  virtual void hit(Player& player);
+
+private:
   MovingObject* object;
 };
 
@@ -79,6 +86,7 @@ public:
   Brick(const Vector& pos, int data);
 
   void try_break(bool playerhit = false);
+  HitResponse collision(GameObject& other, const CollisionHit& hit);
 
 protected:
   virtual void hit(Player& player);
@@ -89,4 +97,3 @@ private:
 };
 
 #endif
-