From: Florian Forster Date: Tue, 9 Mar 2010 12:35:06 +0000 (+0000) Subject: Move "badguy/bombfish.[ch]pp" to "badguy/skydive.[ch]pp". X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=e5e796f3c0c888b9d2b0248148e54c26e091cf99;p=supertux.git Move "badguy/bombfish.[ch]pp" to "badguy/skydive.[ch]pp". SVN-Revision: 6582 --- diff --git a/src/badguy/bombfish.cpp b/src/badguy/bombfish.cpp deleted file mode 100644 index 6c5b52fa8..000000000 --- a/src/badguy/bombfish.cpp +++ /dev/null @@ -1,133 +0,0 @@ -// SuperTux -// Copyright (C) 2010 Florian Forster -// -// 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, see . - -#include "badguy/bombfish.hpp" - -#include "supertux/constants.hpp" -#include "supertux/sector.hpp" -#include "object/anchor_point.hpp" -#include "object/player.hpp" -#include "object/explosion.hpp" - -BombFish::BombFish(const Reader& reader) : - BadGuy(reader, "images/creatures/bombfish/bombfish.sprite"), - is_grabbed(false) -{ -} - -BombFish::BombFish(const Vector& pos, Direction d) : - BadGuy(pos, d, "images/creatures/bombfish/bombfish.sprite"), - is_grabbed(false) -{ -} - -void -BombFish::collision_solid(const CollisionHit& hit) -{ - if (hit.bottom) { - explode (); - return; - } - - if (hit.left || hit.right) - physic.set_velocity_x (0.0); -} /* void collision_solid */ - -HitResponse -BombFish::collision_badguy(BadGuy&, const CollisionHit& hit) -{ - if (hit.bottom) { - explode (); - return (ABORT_MOVE); - } - - return (FORCE_MOVE); -} /* HitResponse collision_badguy */ - -void -BombFish::grab (MovingObject&, const Vector& pos, Direction dir) -{ - movement = pos - get_pos(); - this->dir = dir; - - is_grabbed = true; - - physic.set_velocity_x (movement.x * LOGICAL_FPS); - physic.set_velocity_y (0.0); - physic.set_acceleration_y (0.0); - physic.enable_gravity (false); - set_colgroup_active (COLGROUP_DISABLED); -} - -void -BombFish::ungrab (MovingObject& , Direction) -{ - is_grabbed = false; - - physic.set_velocity_y (0); - physic.set_acceleration_y (0); - physic.enable_gravity (true); - set_colgroup_active (COLGROUP_MOVING); -} - -HitResponse -BombFish::collision_player(Player&, const CollisionHit& hit) -{ - if (hit.bottom) { - explode (); - return (ABORT_MOVE); - } - - return FORCE_MOVE; -} /* HitResponse collision_player */ - -bool -BombFish::collision_squished (GameObject& obj) -{ - Player *player = dynamic_cast (&obj); - if (player) { - player->bounce (*this); - return (false); - } - - explode (); - return (false); -} /* bool collision_squished */ - -void -BombFish::active_update (float elapsed_time) -{ - if (!is_grabbed) - movement = physic.get_movement(elapsed_time); -} /* void active_update */ - -void -BombFish::explode (void) -{ - if (!is_valid ()) - return; - - Explosion *explosion = new Explosion (get_anchor_pos (bbox, ANCHOR_BOTTOM)); - - explosion->hurts (true); - explosion->pushes (false); - Sector::current()->add_object (explosion); - - remove_me (); -} /* void explode */ - -/* vim: set sw=2 sts=2 et fdm=marker : */ -/* EOF */ diff --git a/src/badguy/bombfish.hpp b/src/badguy/bombfish.hpp deleted file mode 100644 index b9a988b19..000000000 --- a/src/badguy/bombfish.hpp +++ /dev/null @@ -1,51 +0,0 @@ -// SuperTux -// Copyright (C) 2010 Florian Forster -// -// 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, see . - -#ifndef HEADER_SUPERTUX_BADGUY_BOMBFISH_HPP -#define HEADER_SUPERTUX_BADGUY_BOMBFISH_HPP - -#include "badguy/badguy.hpp" -#include "object/portable.hpp" - -class BombFish : public BadGuy, public Portable -{ - private: - bool is_grabbed; - - public: - BombFish(const Reader& reader); - BombFish(const Vector& pos, Direction d); - - void collision_solid(const CollisionHit& hit); - HitResponse collision_badguy(BadGuy& badguy, const CollisionHit& hit); - - /* Inherited from Portable */ - void grab(MovingObject& object, const Vector& pos, Direction dir); - void ungrab(MovingObject& object, Direction dir); - - protected: - HitResponse collision_player(Player& player, const CollisionHit& hit); - bool collision_squished (GameObject& obj); - - void active_update (float elapsed_time); - - void explode (void); -}; - -#endif /* HEADER_SUPERTUX_BADGUY_BOMBFISH_HPP */ - -/* vim: set sw=2 sts=2 et fdm=marker : */ -/* EOF */ diff --git a/src/badguy/skydive.cpp b/src/badguy/skydive.cpp new file mode 100644 index 000000000..8c38d6eb1 --- /dev/null +++ b/src/badguy/skydive.cpp @@ -0,0 +1,133 @@ +// SuperTux +// Copyright (C) 2010 Florian Forster +// +// 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, see . + +#include "badguy/skydive.hpp" + +#include "supertux/constants.hpp" +#include "supertux/sector.hpp" +#include "object/anchor_point.hpp" +#include "object/player.hpp" +#include "object/explosion.hpp" + +BombFish::BombFish(const Reader& reader) : + BadGuy(reader, "images/creatures/bombfish/bombfish.sprite"), + is_grabbed(false) +{ +} + +BombFish::BombFish(const Vector& pos, Direction d) : + BadGuy(pos, d, "images/creatures/bombfish/bombfish.sprite"), + is_grabbed(false) +{ +} + +void +BombFish::collision_solid(const CollisionHit& hit) +{ + if (hit.bottom) { + explode (); + return; + } + + if (hit.left || hit.right) + physic.set_velocity_x (0.0); +} /* void collision_solid */ + +HitResponse +BombFish::collision_badguy(BadGuy&, const CollisionHit& hit) +{ + if (hit.bottom) { + explode (); + return (ABORT_MOVE); + } + + return (FORCE_MOVE); +} /* HitResponse collision_badguy */ + +void +BombFish::grab (MovingObject&, const Vector& pos, Direction dir) +{ + movement = pos - get_pos(); + this->dir = dir; + + is_grabbed = true; + + physic.set_velocity_x (movement.x * LOGICAL_FPS); + physic.set_velocity_y (0.0); + physic.set_acceleration_y (0.0); + physic.enable_gravity (false); + set_colgroup_active (COLGROUP_DISABLED); +} + +void +BombFish::ungrab (MovingObject& , Direction) +{ + is_grabbed = false; + + physic.set_velocity_y (0); + physic.set_acceleration_y (0); + physic.enable_gravity (true); + set_colgroup_active (COLGROUP_MOVING); +} + +HitResponse +BombFish::collision_player(Player&, const CollisionHit& hit) +{ + if (hit.bottom) { + explode (); + return (ABORT_MOVE); + } + + return FORCE_MOVE; +} /* HitResponse collision_player */ + +bool +BombFish::collision_squished (GameObject& obj) +{ + Player *player = dynamic_cast (&obj); + if (player) { + player->bounce (*this); + return (false); + } + + explode (); + return (false); +} /* bool collision_squished */ + +void +BombFish::active_update (float elapsed_time) +{ + if (!is_grabbed) + movement = physic.get_movement(elapsed_time); +} /* void active_update */ + +void +BombFish::explode (void) +{ + if (!is_valid ()) + return; + + Explosion *explosion = new Explosion (get_anchor_pos (bbox, ANCHOR_BOTTOM)); + + explosion->hurts (true); + explosion->pushes (false); + Sector::current()->add_object (explosion); + + remove_me (); +} /* void explode */ + +/* vim: set sw=2 sts=2 et fdm=marker : */ +/* EOF */ diff --git a/src/badguy/skydive.hpp b/src/badguy/skydive.hpp new file mode 100644 index 000000000..b9a988b19 --- /dev/null +++ b/src/badguy/skydive.hpp @@ -0,0 +1,51 @@ +// SuperTux +// Copyright (C) 2010 Florian Forster +// +// 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, see . + +#ifndef HEADER_SUPERTUX_BADGUY_BOMBFISH_HPP +#define HEADER_SUPERTUX_BADGUY_BOMBFISH_HPP + +#include "badguy/badguy.hpp" +#include "object/portable.hpp" + +class BombFish : public BadGuy, public Portable +{ + private: + bool is_grabbed; + + public: + BombFish(const Reader& reader); + BombFish(const Vector& pos, Direction d); + + void collision_solid(const CollisionHit& hit); + HitResponse collision_badguy(BadGuy& badguy, const CollisionHit& hit); + + /* Inherited from Portable */ + void grab(MovingObject& object, const Vector& pos, Direction dir); + void ungrab(MovingObject& object, Direction dir); + + protected: + HitResponse collision_player(Player& player, const CollisionHit& hit); + bool collision_squished (GameObject& obj); + + void active_update (float elapsed_time); + + void explode (void); +}; + +#endif /* HEADER_SUPERTUX_BADGUY_BOMBFISH_HPP */ + +/* vim: set sw=2 sts=2 et fdm=marker : */ +/* EOF */ diff --git a/src/supertux/object_factory.cpp b/src/supertux/object_factory.cpp index ebc98697c..098f95264 100644 --- a/src/supertux/object_factory.cpp +++ b/src/supertux/object_factory.cpp @@ -26,7 +26,7 @@ #include "badguy/angrystone.hpp" #include "badguy/badguy.hpp" #include "badguy/bomb.hpp" -#include "badguy/bombfish.hpp" +#include "badguy/skydive.hpp" #include "badguy/bouncing_snowball.hpp" #include "badguy/captainsnowball.hpp" #include "badguy/crystallo.hpp"