Possible fix for issue 369: Wrong kill animation after being hit by enemy on a sloped...
[supertux.git] / src / object / coin.cpp
index 86e4dd8..d3cc163 100644 (file)
@@ -26,7 +26,7 @@
 #include "supertux/sector.hpp"
 
 Coin::Coin(const Vector& pos)
-  : MovingSprite(pos, "images/objects/coin/coin.sprite", LAYER_TILES, COLGROUP_TOUCHABLE),
+  : MovingSprite(pos, "images/objects/coin/coin.sprite", LAYER_OBJECTS - 1, COLGROUP_TOUCHABLE),
     path(),
     walker(),
     offset(),
@@ -37,7 +37,7 @@ Coin::Coin(const Vector& pos)
 }
 
 Coin::Coin(const Vector& pos, TileMap* tilemap)
-  : MovingSprite(pos, "images/objects/coin/coin.sprite", LAYER_TILES, COLGROUP_TOUCHABLE),
+  : MovingSprite(pos, "images/objects/coin/coin.sprite", LAYER_OBJECTS - 1, COLGROUP_TOUCHABLE),
     path(boost::shared_ptr<Path>(tilemap->get_path())),
     walker(boost::shared_ptr<PathWalker>(tilemap->get_walker())),
     offset(),
@@ -53,7 +53,7 @@ Coin::Coin(const Vector& pos, TileMap* tilemap)
 }
 
 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(),
@@ -178,7 +178,7 @@ HeavyCoin::HeavyCoin(const Vector& pos, const Vector& init_velocity)
   physic()
 {
   physic.enable_gravity(true);
-  sound_manager->preload("sounds/coin.wav");
+  sound_manager->preload("sounds/coin2.ogg");
   set_group(COLGROUP_MOVING);
   physic.set_velocity(init_velocity);
 }
@@ -188,7 +188,7 @@ HeavyCoin::HeavyCoin(const Reader& reader)
   physic()
 {
   physic.enable_gravity(true);
-  sound_manager->preload("sounds/coin.wav");
+  sound_manager->preload("sounds/coin2.ogg");
   set_group(COLGROUP_MOVING);
 }
 
@@ -207,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);
+      sound_manager->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");
+      sound_manager->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);
+      sound_manager->play("sounds/coin2.ogg");
+    physic.set_velocity_y(-physic.get_velocity_y());
   }
 }