X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fbadguy%2Ftotem.cpp;h=b20991496f14c11736b5f5ee9df60bbaae5f944d;hb=d84d73b701cc7fa2bd74f3490b9be1bf8b6f705a;hp=2ee60f16a4024db412cfd115987dc20f089d9194;hpb=2892ebda09d24c977547159e34abf0244884b89e;p=supertux.git diff --git a/src/badguy/totem.cpp b/src/badguy/totem.cpp index 2ee60f16a..b20991496 100644 --- a/src/badguy/totem.cpp +++ b/src/badguy/totem.cpp @@ -26,17 +26,20 @@ static const float WALKSPEED = 100; static const float JUMP_ON_SPEED_Y = -400; static const float JUMP_OFF_SPEED_Y = -500; +static const std::string LAND_ON_TOTEM_SOUND = "sounds/totem.ogg"; Totem::Totem(const lisp::Lisp& reader) : BadGuy(reader, "images/creatures/totem/totem.sprite") { carrying = 0; carried_by = 0; + sound_manager->preload( LAND_ON_TOTEM_SOUND ); } Totem::Totem(const Totem& other) : BadGuy(other), carrying(other.carrying), carried_by(other.carried_by) { + sound_manager->preload( LAND_ON_TOTEM_SOUND ); } Totem::~Totem() @@ -90,7 +93,7 @@ Totem::active_update(float elapsed_time) BadGuy::active_update(elapsed_time); if (!carried_by) { - if (might_fall()) + if (on_ground() && might_fall()) { dir = (dir == LEFT ? RIGHT : LEFT); activate(); @@ -154,6 +157,8 @@ Totem::collision_squished(Player& player) void Totem::collision_solid(const CollisionHit& hit) { + update_on_ground_flag(hit); + // if we are being carried around, pass event to bottom of stack and ignore it if (carried_by) { carried_by->collision_solid(hit); @@ -231,6 +236,9 @@ Totem::jump_on(Totem* target) this->carried_by = target; this->activate(); bbox.set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height()); + + sound_manager->play( LAND_ON_TOTEM_SOUND , get_pos()); + this->synchronize_with(target); }