deactivated = false;
backflipping = false;
backflip_direction = 0;
+ sprite->set_angle(0.0f);
visible = true;
swimming = false;
on_ice = false;
if (climbing) stop_climbing(*climbing);
backflipping = false;
backflip_direction = 0;
+ sprite->set_angle(0.0f);
GameSession::current()->start_sequence(sequence_name);
}
}
// on downward slopes, adjust vertical velocity so tux walks smoothly down
- if (on_ground()) {
+ if (on_ground() && !dying) {
if(floor_normal.y != 0) {
if ((floor_normal.x * physic.get_velocity_x()) >= 0) {
physic.set_velocity_y(250);
}
// handle backflipping
- if (backflipping) {
+ if (backflipping && !dying) {
//prevent player from changing direction when backflipping
dir = (backflip_direction == 1) ? LEFT : RIGHT;
if (backflip_timer.started()) physic.set_velocity_x(100 * backflip_direction);
+ //rotate sprite during flip
+ sprite->set_angle(sprite->get_angle() + (dir==LEFT?1:-1) * elapsed_time * (360.0f / 0.5f));
}
// set fall mode...
if (backflipping && (backflip_timer.get_timegone() > 0.15f)) {
backflipping = false;
backflip_direction = 0;
+ sprite->set_angle(0.0f);
// if controls are currently deactivated, we take care of standing up ourselves
if (deactivated)
if( backflipping && ( !controller->hold(Controller::JUMP) && !backflip_timer.started()) ){
backflipping = false;
backflip_direction = 0;
+ sprite->set_angle(0.0f);
}
}
else if ((wants_buttjump || does_buttjump) && is_big()) {
sprite->set_action(sa_prefix+"-buttjump"+sa_postfix);
}
- else if (!on_ground()) {
- sprite->set_action(sa_prefix+"-jump"+sa_postfix);
+ else if (!on_ground() || fall_mode != ON_GROUND) {
+ if(physic.get_velocity_x() != 0 || fall_mode != ON_GROUND) {
+ sprite->set_action(sa_prefix+"-jump"+sa_postfix);
+ }
}
else {
if (fabsf(physic.get_velocity_x()) < 1.0f) {
adjust_height(SMALL_TUX_HEIGHT);
duck = false;
backflipping = false;
+ sprite->set_angle(0.0f);
set_bonus(NO_BONUS, true);
} else if(player_status->bonus == NO_BONUS) {
safe_timer.start(TUX_SAFE_TIME);
set_size(TUX_WIDTH, SMALL_TUX_HEIGHT);
duck = false;
backflipping = false;
+ sprite->set_angle(0.0f);
last_ground_y = vector.y;
if (climbing) stop_climbing(*climbing);
if (backflipping) {
backflipping = false;
backflip_direction = 0;
+ sprite->set_angle(0.0f);
}
}