X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fgameobjs.h;h=49515a34551f9ef1e05045b23ff9a677fd8a515d;hb=5dba61177d71c5572fd29af172fcdab7b1f9a561;hp=103defa85d2197666a832fd36e2e4c5ec06db9aa;hpb=403f2652505e814b645892bffaf89a584984f9b8;p=supertux.git diff --git a/src/gameobjs.h b/src/gameobjs.h index 103defa85..49515a345 100644 --- a/src/gameobjs.h +++ b/src/gameobjs.h @@ -42,9 +42,7 @@ class BouncyDistro : public GameObject, public Drawable public: BouncyDistro(DisplayManager& displaymanager, const Vector& pos); virtual void action(float elapsed_time); - virtual void draw(ViewPort& viewport, int layer); - virtual std::string type() const - { return "BouncyDistro"; }; + virtual void draw(Camera& viewport, int layer); private: Vector position; @@ -65,10 +63,7 @@ public: const Vector& pos, const Vector& movement); virtual void action(float elapsed_time); - virtual void draw(ViewPort& viewport, int layer); - - virtual std::string type() const - { return "BrokenBrick"; }; + virtual void draw(Camera& viewport, int layer); private: Timer timer; @@ -82,11 +77,8 @@ class BouncyBrick : public GameObject, public Drawable public: BouncyBrick(DisplayManager& displaymanager, const Vector& pos); virtual void action(float elapsed_time); - virtual void draw(ViewPort& viewport, int layer); + virtual void draw(Camera& viewport, int layer); - virtual std::string type() const - { return "BouncyBrick"; }; - private: Vector position; float offset; @@ -100,9 +92,7 @@ public: FloatingScore(DisplayManager& displaymanager, const Vector& pos, int s); virtual void action(float elapsed_time); - virtual void draw(ViewPort& viewport, int layer); - virtual std::string type() const - { return "FloatingScore"; }; + virtual void draw(Camera& viewport, int layer); private: Vector position; @@ -117,9 +107,7 @@ public: virtual void write(LispWriter& writer); virtual void action(float frame_ratio); - virtual void draw(ViewPort& viewport, int layer); - virtual std::string type() const - { return "Trampoline"; }; + virtual void draw(Camera& viewport, int layer); virtual void collision(const MovingObject& other, int); void collision(void *p_c_object, int c_object, CollisionType type); @@ -132,6 +120,36 @@ public: unsigned int frame; }; +class FlyingPlatform : public MovingObject, public Drawable, public Serializable +{ +public: + FlyingPlatform(DisplayManager& displaymanager, LispReader& reader); + + virtual void write(LispWriter& writer); + virtual void action(float frame_ratio); + virtual void draw(Camera& viewport, int layer); + + virtual void collision(const MovingObject& other, int); + void collision(void *p_c_object, int c_object, CollisionType type); + + float get_vel_x() { return vel_x; } + float get_vel_y() { return vel_y; } + + Physic physic; + enum { M_NORMAL, M_HELD } mode; + + private: + std::vector pos_x; + std::vector pos_y; + float velocity; + + float vel_x, vel_y; // calculated based in the velocity + + int point; + bool move; + unsigned int frame; +}; + void load_object_gfx(); #endif