Shrunk cherry bomb a little, fixed bounding boxes. /
[supertux.git] / src / badguy / skullyhop.cpp
index 6dc1074..fb12d75 100644 (file)
 #include "random_generator.hpp"
 
 namespace {
-  const float VERTICAL_SPEED = 450;   /**< y-speed when jumping */
+  const float VERTICAL_SPEED = -450;   /**< y-speed when jumping */
   const float HORIZONTAL_SPEED = 220; /**< x-speed when jumping */
   const float MIN_RECOVER_TIME = 0.1; /**< minimum time to stand still before starting a (new) jump */
   const float MAX_RECOVER_TIME = 1.0; /**< maximum time to stand still before starting a (new) jump */
 }
 
 SkullyHop::SkullyHop(const lisp::Lisp& reader)
+       : BadGuy(reader, "images/creatures/skullyhop/skullyhop.sprite")
 {
-  reader.get("x", start_position.x);
-  reader.get("y", start_position.y);
-  sprite = sprite_manager->create("images/creatures/skullyhop/skullyhop.sprite");
-  bbox.set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height());
   has_initial_direction = false;
 }
 
-SkullyHop::SkullyHop(float pos_x, float pos_y, Direction d)
+SkullyHop::SkullyHop(const Vector& pos, Direction d)
+       : BadGuy(pos, "images/creatures/skullyhop/skullyhop.sprite")
 {
-  start_position.x = pos_x;
-  start_position.y = pos_y;
-  sprite = sprite_manager->create("images/creatures/skullyhop/skullyhop.sprite");
-  bbox.set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height());
   has_initial_direction = true;
   initial_direction = d;
 }
@@ -105,12 +99,12 @@ SkullyHop::collision_solid(GameObject& , const CollisionHit& hit)
   if(state != JUMPING) return CONTINUE;
 
   // check if we hit the floor while falling
-  if ((hit.normal.y < 0) && (physic.get_velocity_y() < 0)) {
+  if ((hit.normal.y < 0) && (physic.get_velocity_y() > 0)) {
     set_state(STANDING);
   }
 
   // check if we hit the roof while climbing
-  if ((hit.normal.y > 0) && (physic.get_velocity_y() > 0)) { 
+  if ((hit.normal.y > 0) && (physic.get_velocity_y() < 0)) { 
     physic.set_velocity_y(0);
   }