X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fobject%2Fplatform.hpp;h=fa95ef864e2a84af454e555b9a9c863f9d527566;hb=16f5825c87184139fb71c169427ecd48bc8b06d4;hp=ad1d999d7b1a1877a466dca35f7c9b29b8289cb4;hpb=a113d3bd1feddd510e3b2852b0d42522735eee40;p=supertux.git diff --git a/src/object/platform.hpp b/src/object/platform.hpp index ad1d999d7..fa95ef864 100644 --- a/src/object/platform.hpp +++ b/src/object/platform.hpp @@ -1,12 +1,10 @@ -// $Id$ -// // SuperTux // 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 -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -14,36 +12,38 @@ // 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. +// along with this program. If not, see . -#ifndef __PLATFORM_H__ -#define __PLATFORM_H__ +#ifndef HEADER_SUPERTUX_OBJECT_PLATFORM_HPP +#define HEADER_SUPERTUX_OBJECT_PLATFORM_HPP -#include -#include #include "object/moving_sprite.hpp" -#include "object/path.hpp" #include "object/path_walker.hpp" -#include "script_interface.hpp" +#include "supertux/script_interface.hpp" /** * This class is the base class for platforms that tux can stand on */ -class Platform : public MovingSprite, public ScriptInterface +class Platform : public MovingSprite, + public ScriptInterface { public: - Platform(const lisp::Lisp& reader); + Platform(const Reader& reader); 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); + const Vector& get_speed() const { return speed; } + /** + * @name Scriptable Methods + * @{ + */ + /** Move platform until at given node, then stop */ void goto_node(int node_no); @@ -53,6 +53,10 @@ public: /** Stop platform at next node */ void stop_moving(); + /** + * @} + */ + virtual void expose(HSQUIRRELVM vm, SQInteger table_idx); virtual void unexpose(HSQUIRRELVM vm, SQInteger table_idx); @@ -61,11 +65,17 @@ public: } private: - std::string name; /**< user-defined name for use in scripts or empty string if not scriptable */ - std::auto_ptr path; - std::auto_ptr walker; + std::unique_ptr path; + std::unique_ptr walker; + Vector speed; + bool automatic; /**< true if Platform will automatically pick a destination based on collisions and current Player position */ + bool player_contact; /**< true if a Player touched the Platform during the last round of collision detections */ + bool last_player_contact; /**< true if a Player touched the Platform during the round before the last round of collision detections */ + }; #endif + +/* EOF */