reverted totally pointless commit of rmcruz. size does NOT contain the current power...
[supertux.git] / src / world.cpp
index 7ca3e96..2eca737 100644 (file)
@@ -344,7 +344,7 @@ void World::scrolling(double frame_ratio)
 
   float tux_pos_y = tux.base.y + (tux.base.height/2);
 
-  if(level->height > VISIBLE_TILES_Y-1)
+  if(level->height > VISIBLE_TILES_Y-1 && !tux.dying)
     {
     if (scroll_y < tux_pos_y - (screen->h - Y_SPACE))
       scroll_y = tux_pos_y - (screen->h - Y_SPACE);
@@ -499,6 +499,25 @@ World::collision_handler()
           upgrades[i].collision(&tux, CO_PLAYER, COLLISION_NORMAL);
         }
     }
+
+  // CO_TRAMPOLINE & (CO_PLAYER or CO_BADGUY)
+  for (Trampolines::iterator i = trampolines.begin(); i != trampolines.end(); ++i)
+  {
+    if (rectcollision((*i)->base, tux.base))
+    {
+      if (tux.previous_base.y < tux.base.y &&
+          tux.previous_base.y + tux.previous_base.height 
+          < (*i)->base.y + (*i)->base.height/2)
+      {
+        (*i)->collision(&tux, CO_PLAYER, COLLISION_SQUISH);
+      }
+      else if (tux.previous_base.y <= tux.base.y)
+      {
+        tux.collision(*i, CO_TRAMPOLINE);
+        (*i)->collision(&tux, CO_PLAYER, COLLISION_NORMAL);
+      }
+    }
+  }
 }
 
 void
@@ -624,7 +643,7 @@ World::get_music_type()
 }
 
 /* Break a brick: */
-void
+bool
 World::trybreakbrick(float x, float y, bool small)
 {
   Level* plevel = get_level();
@@ -658,6 +677,7 @@ World::trybreakbrick(float x, float y, bool small)
           play_sound(sounds[SND_DISTRO], SOUND_CENTER_SPEAKER);
           player_status.score = player_status.score + SCORE_DISTRO;
           player_status.distros++;
+          return true;
         }
       else if (!small)
         {
@@ -672,8 +692,12 @@ World::trybreakbrick(float x, float y, bool small)
           /* Get some score: */
           play_sound(sounds[SND_BRICK], SOUND_CENTER_SPEAKER);
           player_status.score = player_status.score + SCORE_BRICK;
+          
+          return true;
         }
     }
+
+  return false;
 }
 
 /* Empty a box: */