X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fobject%2Fplatform.hpp;h=a9567ed0821039416812f9d3137f1719d74934c0;hb=ed161bf9da56b598f3db3637c6017fa22e9ab0d7;hp=a41f4e118836c59e14e61b592c0cbe66ffac2282;hpb=07ddaed2a657e4d2a3d038fed223fc5827159caf;p=supertux.git diff --git a/src/object/platform.hpp b/src/object/platform.hpp index a41f4e118..a9567ed08 100644 --- a/src/object/platform.hpp +++ b/src/object/platform.hpp @@ -21,34 +21,59 @@ #define __PLATFORM_H__ #include -#include "moving_object.hpp" -#include "sprite/sprite.hpp" +#include +#include "object/moving_sprite.hpp" #include "object/path.hpp" #include "object/path_walker.hpp" +#include "script_interface.hpp" /** * This class is the base class for platforms that tux can stand on */ -class Platform : public MovingObject +class Platform : public MovingSprite, public ScriptInterface { public: Platform(const lisp::Lisp& reader); - ~Platform(); + Platform(const Platform& platform); + virtual Platform* clone() const { return new Platform(*this); } virtual HitResponse collision(GameObject& other, const CollisionHit& hit); virtual void update(float elapsed_time); - virtual void draw(DrawingContext& context); const Vector& get_speed() const { return speed; } + /** + * @name Scriptable Methods + * @{ + */ + + /** Move platform until at given node, then stop */ + void goto_node(int node_no); + + /** Start moving platform */ + void start_moving(); + + /** Stop platform at next node */ + void stop_moving(); + + /** + * @} + */ + + virtual void expose(HSQUIRRELVM vm, SQInteger table_idx); + virtual void unexpose(HSQUIRRELVM vm, SQInteger table_idx); + + Path& get_path() { + return *path.get(); + } + private: - std::auto_ptr sprite; std::auto_ptr path; std::auto_ptr walker; Vector speed; + }; #endif -