From: Wolfgang Becker Date: Sun, 10 Feb 2008 21:56:41 +0000 (+0000) Subject: smartball: a snowball, smart enough to stay on his platform. X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=6c048de80b00a88e9c43290b1e5ccd1dd35e74a4;p=supertux.git smartball: a snowball, smart enough to stay on his platform. SVN-Revision: 5321 --- diff --git a/data/images/creatures/snowball/smart-snowball.sprite b/data/images/creatures/snowball/smart-snowball.sprite new file mode 100644 index 000000000..d10de90c9 --- /dev/null +++ b/data/images/creatures/snowball/smart-snowball.sprite @@ -0,0 +1,24 @@ +(supertux-sprite + (action + (name "left") + (hitbox 2 4 31.8 31.8) + (images "left-0.png" + "left-1.png" + "left-2.png") + ) + (action + (name "right") + (hitbox 2 4 31.8 31.8) + (mirror-action "left") + ) + (action + (name "squished-left") + (hitbox 1 -19 31.8 31.8) + (images "squished-left.png") + ) + (action + (name "squished-right") + (hitbox 1 -19 31.8 31.8) + (mirror-action "squished-left") + ) +) diff --git a/data/images/creatures/snowball/snowball.sprite b/data/images/creatures/snowball/snowball.sprite index d10de90c9..ed9f5dfa7 100644 --- a/data/images/creatures/snowball/snowball.sprite +++ b/data/images/creatures/snowball/snowball.sprite @@ -1,10 +1,9 @@ (supertux-sprite (action (name "left") - (hitbox 2 4 31.8 31.8) - (images "left-0.png" - "left-1.png" - "left-2.png") + (images "sport-left-0.png" + "sport-left-1.png" + "sport-left-2.png") ) (action (name "right") diff --git a/data/images/creatures/snowball/sport-left-0.png b/data/images/creatures/snowball/sport-left-0.png new file mode 100644 index 000000000..82454b90e Binary files /dev/null and b/data/images/creatures/snowball/sport-left-0.png differ diff --git a/data/images/creatures/snowball/sport-left-1.png b/data/images/creatures/snowball/sport-left-1.png new file mode 100644 index 000000000..1abb5db5b Binary files /dev/null and b/data/images/creatures/snowball/sport-left-1.png differ diff --git a/data/images/creatures/snowball/sport-left-2.png b/data/images/creatures/snowball/sport-left-2.png new file mode 100644 index 000000000..e853efeb9 Binary files /dev/null and b/data/images/creatures/snowball/sport-left-2.png differ diff --git a/src/badguy/smartball.cpp b/src/badguy/smartball.cpp new file mode 100644 index 000000000..aaf433bb4 --- /dev/null +++ b/src/badguy/smartball.cpp @@ -0,0 +1,46 @@ +// $Id$ +// +// SuperTux - Smart Snowball +// Copyright (C) 2008 Wolfgang Becker +// +// 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 "smartball.hpp" + +SmartBall::SmartBall(const lisp::Lisp& reader) + : WalkingBadguy(reader, "images/creatures/snowball/smart-snowball.sprite", "left", "right") +{ + walk_speed = 80; + max_drop_height = 16; +} + +SmartBall::SmartBall(const Vector& pos, Direction d) + : WalkingBadguy(pos, d, "images/creatures/snowball/smart-snowball.sprite", "left", "right") +{ + walk_speed = 80; + max_drop_height = 16; +} + +bool +SmartBall::collision_squished(GameObject& object) +{ + sprite->set_action(dir == LEFT ? "squished-left" : "squished-right"); + kill_squished(object); + return true; +} + +IMPLEMENT_FACTORY(SmartBall, "smartball") diff --git a/src/badguy/smartball.hpp b/src/badguy/smartball.hpp new file mode 100644 index 000000000..3631f39bf --- /dev/null +++ b/src/badguy/smartball.hpp @@ -0,0 +1,41 @@ +// $Id$ +// +// SuperTux - Smart Snowball +// Copyright (C) 2008 Wolfgang Becker +// +// 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 __SMARTBALL_H__ +#define __SMARTBALL_H__ + +#include "walking_badguy.hpp" + +/* + * Easy to kill badguy that does not jump down from it's ledge. + */ +class SmartBall : public WalkingBadguy +{ +public: + SmartBall(const lisp::Lisp& reader); + SmartBall(const Vector& pos, Direction d); + + virtual SmartBall* clone() const { return new SmartBall(*this); } + +protected: + bool collision_squished(GameObject& object); + +}; + +#endif diff --git a/src/control/joystickkeyboardcontroller.cpp b/src/control/joystickkeyboardcontroller.cpp index 4bf168eac..f9e140865 100644 --- a/src/control/joystickkeyboardcontroller.cpp +++ b/src/control/joystickkeyboardcontroller.cpp @@ -198,8 +198,6 @@ JoystickKeyboardController::read(const lisp::Lisp& lisp) continue; } keymap[(SDLKey) key] = (Control)i; - } else { - log_info << "Invalid lisp element '" << iter.item() << "' in keymap" << std::endl; } } }