X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fobject%2Fblock.hpp;h=94f87fb048b948abad0f3dd63a76dd33205dcc94;hb=ca967dcf4ee89f99880355be00782d1cd047be6a;hp=ac7bdd23344334bfc04bf59ed07c27a2dc694b61;hpb=07ddaed2a657e4d2a3d038fed223fc5827159caf;p=supertux.git diff --git a/src/object/block.hpp b/src/object/block.hpp index ac7bdd233..94f87fb04 100644 --- a/src/object/block.hpp +++ b/src/object/block.hpp @@ -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 -