X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fobject%2Finvisible_block.cpp;h=755435192cf38ae19f769aff028dbcba95e0c3e0;hb=2b45f156e1b9efe8739dddefb5371374cc315f20;hp=19922bda5634405c16dbdfd7edca3fbb84584c0c;hpb=3863194a207a467b281a5fe6d9c394df3fad75aa;p=supertux.git diff --git a/src/object/invisible_block.cpp b/src/object/invisible_block.cpp index 19922bda5..755435192 100644 --- a/src/object/invisible_block.cpp +++ b/src/object/invisible_block.cpp @@ -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,26 +12,21 @@ // 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 +// along with this program. If not, see . -#include "invisible_block.hpp" -#include "resources.hpp" -#include "sprite/sprite.hpp" -#include "sprite/sprite_manager.hpp" -#include "video/drawing_context.hpp" #include "audio/sound_manager.hpp" -#include "object_factory.hpp" +#include "object/invisible_block.hpp" #include "object/player.hpp" +#include "sprite/sprite.hpp" +#include "sprite/sprite_manager.hpp" +#include "supertux/constants.hpp" -InvisibleBlock::InvisibleBlock(const Vector& pos) - : Block(sprite_manager->create("images/objects/bonus_block/invisibleblock.sprite")), visible(false) +InvisibleBlock::InvisibleBlock(const Vector& pos) : + Block(sprite_manager->create("images/objects/bonus_block/invisibleblock.sprite")), + visible(false) { bbox.set_pos(pos); sound_manager->preload("sounds/brick.wav"); - sound_manager->preload("sounds/brick.wav"); } void @@ -43,24 +36,31 @@ InvisibleBlock::draw(DrawingContext& context) sprite->draw(context, get_pos(), LAYER_OBJECTS); } -HitResponse -InvisibleBlock::collision(GameObject& other, const CollisionHit& hit) +bool +InvisibleBlock::collides(GameObject& other, const CollisionHit& ) { - if (visible) return Block::collision(other, hit); + if(visible) + return true; // if we're not visible, only register a collision if this will make us visible Player* player = dynamic_cast (&other); if ((player) - && (player->get_movement().y <= 0) - && (player->get_bbox().get_top() > get_bbox().get_bottom() - 7.0)) { - return Block::collision(other, hit); + && (player->get_movement().y <= 0) + && (player->get_bbox().get_top() > get_bbox().get_bottom() - SHIFT_DELTA)) { + return true; } - return PASSTHROUGH; + return false; +} + +HitResponse +InvisibleBlock::collision(GameObject& other, const CollisionHit& hit) +{ + return Block::collision(other, hit); } void -InvisibleBlock::hit(Player& ) +InvisibleBlock::hit(Player& player) { sound_manager->play("sounds/brick.wav"); @@ -68,9 +68,11 @@ InvisibleBlock::hit(Player& ) return; sprite->set_action("empty"); - start_bounce(); + start_bounce(&player); set_group(COLGROUP_STATIC); visible = true; } //IMPLEMENT_FACTORY(InvisibleBlock, "invisible_block"); + +/* EOF */