Haywire not moving when jumping on it after freezing
[supertux.git] / src / badguy / kamikazesnowball.cpp
index 5cec886..838969f 100644 (file)
@@ -25,7 +25,7 @@
  * On impact he is destroyed, trying to kill what he hit or hit him. 
  */
 namespace{
-  static const float SPEED = 200;
+  static const float KAMIKAZE_SPEED = 200;
   const std::string SPLAT_SOUND = "sounds/splat.wav";
 }
 
@@ -33,18 +33,20 @@ KamikazeSnowball::KamikazeSnowball(const Reader& reader) :
   BadGuy(reader, "images/creatures/snowball/kamikaze-snowball.sprite")
 {
   sound_manager->preload(SPLAT_SOUND);
+  set_action (dir == LEFT ? "left" : "right", /* loops = */ -1);
 }
 
 KamikazeSnowball::KamikazeSnowball(const Vector& pos, Direction d)
   : BadGuy(pos, d, "images/creatures/snowball/kamikaze-snowball.sprite")
 {
   sound_manager->preload(SPLAT_SOUND);
+  set_action (dir == LEFT ? "left" : "right", /* loops = */ -1);
 }
 
 void
 KamikazeSnowball::initialize()
 {
-  physic.set_velocity_x(dir == LEFT ? -SPEED : SPEED);
+  physic.set_velocity_x(dir == LEFT ? -KAMIKAZE_SPEED : KAMIKAZE_SPEED);
   physic.enable_gravity(false);
   sprite->set_action(dir == LEFT ? "left" : "right");
 }
@@ -62,7 +64,8 @@ KamikazeSnowball::collision_solid(const CollisionHit& hit)
 {
   if(hit.top || hit.bottom) {
     physic.set_velocity_y(0);
-  } else if(hit.left || hit.right) {
+  }
+  if(hit.left || hit.right) {
     kill_collision();
   }
 }
@@ -92,6 +95,4 @@ KamikazeSnowball::collision_player(Player& player, const CollisionHit& hit)
   return ABORT_MOVE;
 }
 
-IMPLEMENT_FACTORY(KamikazeSnowball, "kamikazesnowball");
-
 /* EOF */