merged new collision detection branch back into mainline
[supertux.git] / src / badguy / poisonivy.cpp
index ae11827..34d4ed8 100644 (file)
@@ -73,24 +73,22 @@ PoisonIvy::collision_squished(Player& player)
   return true;
 }
 
-HitResponse
-PoisonIvy::collision_solid(GameObject& , const CollisionHit& hit)
+void
+PoisonIvy::collision_solid(const CollisionHit& hit)
 {
-  if(fabsf(hit.normal.y) > .5) { // hit floor or roof?
+  if(hit.top || hit.bottom) {
     physic.set_velocity_y(0);
-  } else { // hit right or left
+  } else if(hit.left || hit.right) {
     dir = dir == LEFT ? RIGHT : LEFT;
     sprite->set_action(dir == LEFT ? "left" : "right");
     physic.set_velocity_x(-physic.get_velocity_x());
   }
-
-  return CONTINUE;
 }
 
 HitResponse
 PoisonIvy::collision_badguy(BadGuy& , const CollisionHit& hit)
 {
-  if(fabsf(hit.normal.x) > .8) { // left or right hit
+  if(hit.left || hit.right) {
     dir = dir == LEFT ? RIGHT : LEFT;
     sprite->set_action(dir == LEFT ? "left" : "right");
     physic.set_velocity_x(-physic.get_velocity_x());