Invisible block solidity now applies to all objects, not only Tux
authorChristoph Sommer <mail@christoph-sommer.de>
Mon, 16 Apr 2007 20:01:25 +0000 (20:01 +0000)
committerChristoph Sommer <mail@christoph-sommer.de>
Mon, 16 Apr 2007 20:01:25 +0000 (20:01 +0000)
SVN-Revision: 4992

src/object/invisible_block.cpp

index 045e319..19922bd 100644 (file)
@@ -46,17 +46,17 @@ InvisibleBlock::draw(DrawingContext& context)
 HitResponse
 InvisibleBlock::collision(GameObject& other, const CollisionHit& hit)
 {
-  if(!visible) {
-    Player* player = dynamic_cast<Player*> (&other);
-    if(player) {
-      if(player->get_movement().y > 0 ||
-          player->get_bbox().get_top() <= get_bbox().get_bottom() - 7.0) {
-        return PASSTHROUGH;
-      }
-    }
+  if (visible) return Block::collision(other, hit);
+
+  // if we're not visible, only register a collision if this will make us visible
+  Player* player = dynamic_cast<Player*> (&other);
+  if ((player) 
+          && (player->get_movement().y <= 0)
+          && (player->get_bbox().get_top() > get_bbox().get_bottom() - 7.0)) {
+    return Block::collision(other, hit);
   }
 
-  return Block::collision(other, hit);
+  return PASSTHROUGH;
 }
 
 void