+class Trampoline : public MovingObject, public Drawable, public Serializable
+{
+public:
+ Trampoline(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);
+
+ Physic physic;
+ enum { M_NORMAL, M_HELD } mode;
+
+ private:
+ float power;
+ 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<int> pos_x;
+ std::vector<int> 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();
+