X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fobject%2Fplatform.hpp;h=a9567ed0821039416812f9d3137f1719d74934c0;hb=ed161bf9da56b598f3db3637c6017fa22e9ab0d7;hp=4a88dbb62ed7b149318fb63921495123701ea9c2;hpb=5b7f9214cb929399f1a855ef5807018a9447d510;p=supertux.git diff --git a/src/object/platform.hpp b/src/object/platform.hpp index 4a88dbb62..a9567ed08 100644 --- a/src/object/platform.hpp +++ b/src/object/platform.hpp @@ -1,7 +1,7 @@ // $Id$ -// +// // SuperTux -// Copyright (C) 2005 Matthias Braun +// Copyright (C) 2006 Matthias Braun // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -12,34 +12,68 @@ // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA. +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + #ifndef __PLATFORM_H__ #define __PLATFORM_H__ -#include "moving_object.hpp" -#include "sprite/sprite.hpp" +#include +#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: - int state; - Sprite* sprite; + std::auto_ptr path; + std::auto_ptr walker; + Vector speed; + }; #endif -