X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fobject%2Fcoin.cpp;h=a298454ee071c2a9892fb9fc259a3a35eaa5b014;hb=d097f456b8ab4f42058545bdd4f8f676d151e974;hp=37becc0468fc295708347e65174cbd3d6f03855c;hpb=2ace662b7f39c76d310f0c521f3bed585a289cd3;p=supertux.git diff --git a/src/object/coin.cpp b/src/object/coin.cpp index 37becc046..a298454ee 100644 --- a/src/object/coin.cpp +++ b/src/object/coin.cpp @@ -26,20 +26,20 @@ #include "supertux/sector.hpp" Coin::Coin(const Vector& pos) - : MovingSprite(pos, "images/objects/coin/coin.sprite", LAYER_TILES, COLGROUP_MOVING), + : MovingSprite(pos, "images/objects/coin/coin.sprite", LAYER_OBJECTS - 1, COLGROUP_TOUCHABLE), path(), walker(), offset(), from_tilemap(false), physic() { - sound_manager->preload("sounds/coin.wav"); + SoundManager::current()->preload("sounds/coin.wav"); } Coin::Coin(const Vector& pos, TileMap* tilemap) - : MovingSprite(pos, "images/objects/coin/coin.sprite", LAYER_TILES, COLGROUP_TOUCHABLE), - path(boost::shared_ptr(tilemap->get_path())), - walker(boost::shared_ptr(tilemap->get_walker())), + : MovingSprite(pos, "images/objects/coin/coin.sprite", LAYER_OBJECTS - 1, COLGROUP_TOUCHABLE), + path(std::shared_ptr(tilemap->get_path())), + walker(std::shared_ptr(tilemap->get_walker())), offset(), from_tilemap(true), physic() @@ -49,11 +49,11 @@ Coin::Coin(const Vector& pos, TileMap* tilemap) offset = pos - v; } - sound_manager->preload("sounds/coin.wav"); + SoundManager::current()->preload("sounds/coin.wav"); } Coin::Coin(const Reader& reader) - : MovingSprite(reader, "images/objects/coin/coin.sprite", LAYER_TILES, COLGROUP_TOUCHABLE), + : MovingSprite(reader, "images/objects/coin/coin.sprite", LAYER_OBJECTS - 1, COLGROUP_TOUCHABLE), path(), walker(), offset(), @@ -69,7 +69,7 @@ Coin::Coin(const Reader& reader) set_pos(v); } - sound_manager->preload("sounds/coin.wav"); + SoundManager::current()->preload("sounds/coin.wav"); } void @@ -149,14 +149,14 @@ Coin::collect() } sound_timer.start(1); - SoundSource* soundSource = sound_manager->create_sound_source("sounds/coin.wav"); + SoundSource* soundSource = SoundManager::current()->create_sound_source("sounds/coin.wav"); soundSource->set_position(get_pos()); soundSource->set_pitch(pitch); soundSource->play(); - sound_manager->manage_source(soundSource); + SoundManager::current()->manage_source(soundSource); */ Sector::current()->player->get_status()->add_coins(1); - Sector::current()->add_object(new BouncyCoin(get_pos())); + Sector::current()->add_object(std::make_shared(get_pos())); Sector::current()->get_level()->stats.coins++; remove_me(); } @@ -178,10 +178,20 @@ HeavyCoin::HeavyCoin(const Vector& pos, const Vector& init_velocity) physic() { physic.enable_gravity(true); - sound_manager->preload("sounds/coin.wav"); + SoundManager::current()->preload("sounds/coin2.ogg"); + set_group(COLGROUP_MOVING); physic.set_velocity(init_velocity); } +HeavyCoin::HeavyCoin(const Reader& reader) + : Coin(reader), + physic() +{ + physic.enable_gravity(true); + SoundManager::current()->preload("sounds/coin2.ogg"); + set_group(COLGROUP_MOVING); +} + void HeavyCoin::update(float elapsed_time) { @@ -197,19 +207,23 @@ HeavyCoin::collision_solid(const CollisionHit& hit) if(hit.bottom) { if(physic.get_velocity_y() > clink_threshold) - sound_manager->play("sounds/coin.wav"); - physic.set_velocity_y(0); - physic.set_velocity_x(0); + SoundManager::current()->play("sounds/coin2.ogg"); + if(physic.get_velocity_y() > 200) {// lets some coins bounce + physic.set_velocity_y(-99); + }else{ + physic.set_velocity_y(0); + physic.set_velocity_x(0); + } } if(hit.right || hit.left) { if(physic.get_velocity_x() > clink_threshold || physic.get_velocity_x() < clink_threshold) - sound_manager->play("sounds/coin.wav"); + SoundManager::current()->play("sounds/coin2.ogg"); physic.set_velocity_x(-physic.get_velocity_x()); } if(hit.top) { if(physic.get_velocity_y() < clink_threshold) - sound_manager->play("sounds/coin.wav"); - physic.set_velocity_y(0); + SoundManager::current()->play("sounds/coin2.ogg"); + physic.set_velocity_y(-physic.get_velocity_y()); } }