#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;
}
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);
}