From: Christoph Sommer Date: Mon, 9 Apr 2007 00:00:06 +0000 (+0000) Subject: Added "Invisible Wall" area by tjcarter (GPL2+/CC-by-sa) X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=8bf399f2ee6bbb0833d1eb4f48e363ce9284331b;p=supertux.git Added "Invisible Wall" area by tjcarter (GPL2+/CC-by-sa) SVN-Revision: 4970 --- diff --git a/data/images/engine/editor/invisible_wall.png b/data/images/engine/editor/invisible_wall.png new file mode 100644 index 000000000..c24690380 Binary files /dev/null and b/data/images/engine/editor/invisible_wall.png differ diff --git a/src/object/invisible_wall.cpp b/src/object/invisible_wall.cpp new file mode 100644 index 000000000..4416b23aa --- /dev/null +++ b/src/object/invisible_wall.cpp @@ -0,0 +1,41 @@ +// $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 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. + +#include + +#include "invisible_wall.hpp" +#include "lisp/lisp.hpp" +#include "object_factory.hpp" +#include "sprite/sprite.hpp" + +InvisibleWall::InvisibleWall(const lisp::Lisp& lisp) + : MovingSprite(lisp, "images/objects/invisible/invisible.sprite", LAYER_TILES, COLGROUP_STATIC), width(32), height(32) +{ + lisp.get("width", width); + lisp.get("height", height); + bbox.set_size(width, height); +} + +HitResponse +InvisibleWall::collision(GameObject& , const CollisionHit& ) +{ + return FORCE_MOVE; +} + +IMPLEMENT_FACTORY(InvisibleWall, "invisible_wall"); diff --git a/src/object/invisible_wall.hpp b/src/object/invisible_wall.hpp new file mode 100644 index 000000000..0daa737d2 --- /dev/null +++ b/src/object/invisible_wall.hpp @@ -0,0 +1,43 @@ +// $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 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 __INVISIBLE_WALL_H__ +#define __INVISIBLE_WALL_H__ + +#include "object/moving_sprite.hpp" +#include "lisp/lisp.hpp" +#include "physic.hpp" +#include "timer.hpp" + +class Player; + +/** A tile that starts falling down if tux stands to long on it */ +class InvisibleWall : public MovingSprite, private UsesPhysic +{ +public: + InvisibleWall(const lisp::Lisp& lisp); + virtual InvisibleWall* clone() const { return new InvisibleWall(*this); } + + HitResponse collision(GameObject& other, const CollisionHit& hit); + +private: + float width, height; +}; + +#endif