void
BadGuy::action_walkingtree(double elapsed_time)
{
+ Player& tux = *World::current()->get_tux();
+ Direction v_dir = physic.get_velocity_x() < 0 ? LEFT : RIGHT;
+
if (dying == DYING_NOT)
check_horizontal_bump();
fall();
+ if (mode == BGM_BIG)
+ {
+ if ((tux.base.x + tux.base.width/2 > base.x + base.width/2) && v_dir == LEFT)
+ {
+ dir = RIGHT;
+ physic.set_velocity_x(-physic.get_velocity_x());
+ }
+ else if ((tux.base.x + tux.base.width/2 < base.x + base.width/2) && v_dir == RIGHT)
+ {
+ dir = LEFT;
+ physic.set_velocity_x(-physic.get_velocity_x());
+ }
+ }
+
+
physic.apply(elapsed_time, base.x, base.y);
if (dying != DYING_FALLING)
collision_swept_object_map(&old_base,&base);
}
Sprite* sprite = (dir == LEFT) ? sprite_left : sprite_right;
- sprite->draw(viewport.world2screen(Vector(base.x, base.y)));
+ if(dying == DYING_FALLING)
+ sprite->draw(viewport.world2screen(Vector(base.x, base.y)), SD_VERTICAL_FLIP);
+ else
+ sprite->draw(viewport.world2screen(Vector(base.x, base.y)));
if (debug_mode)
fillrect(base.x - scroll_x, base.y - scroll_y, base.width, base.height, 75,0,75, 150);