X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fobject%2Fportable.hpp;h=93f8dbc5306bb545f3c5cf9f176624b0e2b017f5;hb=7532d474f5a450576181138b577cb9328d8d802c;hp=5b74e1de8125db115e43ca44f75a81c866c30cef;hpb=5b7f9214cb929399f1a855ef5807018a9447d510;p=supertux.git diff --git a/src/object/portable.hpp b/src/object/portable.hpp index 5b74e1de8..93f8dbc53 100644 --- a/src/object/portable.hpp +++ b/src/object/portable.hpp @@ -1,26 +1,25 @@ -// $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 -// 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 // 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. -#ifndef __PORTABLE_H__ -#define __PORTABLE_H__ +// along with this program. If not, see . + +#ifndef HEADER_SUPERTUX_OBJECT_PORTABLE_HPP +#define HEADER_SUPERTUX_OBJECT_PORTABLE_HPP -#include "moving_object.hpp" +#include "supertux/direction.hpp" +#include "supertux/moving_object.hpp" +#include "util/refcounter.hpp" /** * An object that inherits from this object is considered "portable" and can @@ -33,17 +32,30 @@ class Portable public: virtual ~Portable() { } - + /** * called each frame when the object has been grabbed. */ - virtual void grab(MovingObject& object, const Vector& pos) = 0; + virtual void grab(MovingObject& object, const Vector& pos, Direction dir) = 0; + + virtual void ungrab(MovingObject& , Direction ) + {} + + virtual bool is_portable() const + { + return true; + } - /** called when object isn't grabbed anymore */ - virtual void ungrab(MovingObject& object) + /** + * Is the object so heavy/bulky/fragile that Tux can't run while + * carrying it? + */ + virtual bool is_hampering() { - (void) object; + return false; } }; #endif + +/* EOF */