Fixed creating level-subset again.
[supertux.git] / src / badguy.cpp
index b879dcb..5e33158 100644 (file)
@@ -203,7 +203,7 @@ BadGuy::BadGuy(float x, float y, BadGuyKind kind_, bool stay_on_platform_)
 }
 
 void
-BadGuy::action_mriceblock(float frame_ratio)
+BadGuy::action_mriceblock(double frame_ratio)
 {
   Player& tux = *World::current()->get_tux();
 
@@ -350,12 +350,12 @@ BadGuy::fall()
                   if (dir == LEFT)
                   {
                     dir = RIGHT;
-                    physic.set_velocity_x(fabs(physic.get_velocity_x()));
+                    physic.set_velocity_x(fabsf(physic.get_velocity_x()));
                   } 
                   else
                   {
                     dir = LEFT;
-                    physic.set_velocity_x(-fabs(physic.get_velocity_x()));
+                    physic.set_velocity_x(-fabsf(physic.get_velocity_x()));
                   }
                 }
             }
@@ -374,14 +374,17 @@ BadGuy::remove_me()
 }
 
 void
-BadGuy::action_jumpy(float frame_ratio)
+BadGuy::action_jumpy(double frame_ratio)
 {
-  if (fabsf(physic.get_velocity_y()) < 2.5f)
+  const float vy = physic.get_velocity_y();
+
+  // XXX: These tests *should* use location from ground, not velocity
+  if (fabsf(vy) > 5.6f)
+    set_sprite(img_jumpy_left_down, img_jumpy_left_down);
+  else if (fabsf(vy) > 5.3f)
     set_sprite(img_jumpy_left_middle, img_jumpy_left_middle);
-  else if (physic.get_velocity_y() < 0)
+  else
     set_sprite(img_jumpy_left_up, img_jumpy_left_up);
-  else 
-    set_sprite(img_jumpy_left_down, img_jumpy_left_down);
 
   Player& tux = *World::current()->get_tux();
 
@@ -414,7 +417,7 @@ BadGuy::action_jumpy(float frame_ratio)
 }
 
 void
-BadGuy::action_mrbomb(float frame_ratio)
+BadGuy::action_mrbomb(double frame_ratio)
 {
   if (dying == DYING_NOT)
     check_horizontal_bump(true);
@@ -427,7 +430,7 @@ BadGuy::action_mrbomb(float frame_ratio)
 }
 
 void
-BadGuy::action_bomb(float frame_ratio)
+BadGuy::action_bomb(double frame_ratio)
 {
   static const int TICKINGTIME = 1000;
   static const int EXPLODETIME = 1000;
@@ -464,7 +467,7 @@ BadGuy::action_bomb(float frame_ratio)
 }
 
 void
-BadGuy::action_stalactite(float frame_ratio)
+BadGuy::action_stalactite(double frame_ratio)
 {
   Player& tux = *World::current()->get_tux();
 
@@ -506,7 +509,7 @@ BadGuy::action_stalactite(float frame_ratio)
 }
 
 void
-BadGuy::action_flame(float frame_ratio)
+BadGuy::action_flame(double frame_ratio)
 {
     static const float radius = 100;
     static const float speed = 0.02;
@@ -517,7 +520,7 @@ BadGuy::action_flame(float frame_ratio)
 }
 
 void
-BadGuy::action_fish(float frame_ratio)
+BadGuy::action_fish(double frame_ratio)
 {
   static const float JUMPV = 6;
   static const int WAITTIME = 1000;
@@ -550,7 +553,7 @@ BadGuy::action_fish(float frame_ratio)
 }
 
 void
-BadGuy::action_bouncingsnowball(float frame_ratio)
+BadGuy::action_bouncingsnowball(double frame_ratio)
 {
   static const float JUMPV = 4.5;
     
@@ -584,7 +587,7 @@ BadGuy::action_bouncingsnowball(float frame_ratio)
 }
 
 void
-BadGuy::action_flyingsnowball(float frame_ratio)
+BadGuy::action_flyingsnowball(double frame_ratio)
 {
   static const float FLYINGSPEED = 1;
   static const int DIRCHANGETIME = 1000;
@@ -624,7 +627,7 @@ BadGuy::action_flyingsnowball(float frame_ratio)
 }
 
 void
-BadGuy::action_spiky(float frame_ratio)
+BadGuy::action_spiky(double frame_ratio)
 {
   if (dying == DYING_NOT)
     check_horizontal_bump();
@@ -645,7 +648,7 @@ BadGuy::action_spiky(float frame_ratio)
 }
 
 void
-BadGuy::action_snowball(float frame_ratio)
+BadGuy::action_snowball(double frame_ratio)
 {
   if (dying == DYING_NOT)
     check_horizontal_bump();
@@ -658,7 +661,7 @@ BadGuy::action_snowball(float frame_ratio)
 }
 
 void
-BadGuy::action(float frame_ratio)
+BadGuy::action(double frame_ratio)
 {
   // Remove if it's far off the screen:
   if (base.x < scroll_x - OFFSCREEN_DISTANCE)
@@ -725,6 +728,8 @@ BadGuy::action(float frame_ratio)
     case BAD_SNOWBALL:
       action_snowball(frame_ratio);
       break;
+    default:
+      break;
     }
 }
 
@@ -1000,12 +1005,12 @@ BadGuy::collision(void *p_c_object, int c_object, CollisionType type)
           if (pbad_c->dir == LEFT)
           {
             dir = RIGHT;
-            physic.set_velocity(fabs(physic.get_velocity_x()), 2);
+            physic.set_velocity(fabsf(physic.get_velocity_x()), 2);
           }
           else if (pbad_c->dir == RIGHT)
           {
             dir = LEFT;
-            physic.set_velocity(-fabs(physic.get_velocity_x()), 2);
+            physic.set_velocity(-fabsf(physic.get_velocity_x()), 2);
           }
 
 
@@ -1020,12 +1025,12 @@ BadGuy::collision(void *p_c_object, int c_object, CollisionType type)
             if (dir == LEFT)
             {
               dir = RIGHT;
-              physic.set_velocity_x(fabs(physic.get_velocity_x()));
+              physic.set_velocity_x(fabsf(physic.get_velocity_x()));
             }
             else if (dir == RIGHT)
             {
               dir = LEFT;
-              physic.set_velocity_x(-fabs(physic.get_velocity_x()));
+              physic.set_velocity_x(-fabsf(physic.get_velocity_x()));
             }
 
           }