- fixed some enums
[supertux.git] / src / special.cpp
index a784744..a4da6d3 100644 (file)
@@ -107,7 +107,6 @@ Bullet::action(double frame_ratio)
 
   if (base.x < scroll_x ||
       base.x > scroll_x + screen->w ||
-      base.y < 0 ||
       base.y > screen->h ||
       issolid(base.x + 4, base.y + 2) ||
       issolid(base.x, base.y + 2) ||
@@ -124,7 +123,7 @@ Bullet::draw()
   if (base.x >= scroll_x - base.width &&
       base.x <= scroll_x + screen->w)
     {
-      img_bullet->draw(base.x - scroll_x, base.y);
+      img_bullet->draw(base.x, base.y);
     }
 }
 
@@ -193,8 +192,12 @@ Upgrade::action(double frame_ratio)
     }
   }
 
-  /* Off screen? Kill it! */
-  if((base.x < scroll_x - OFFSCREEN_DISTANCE) || base.y > screen->h) {
+  /* Away from the screen? Kill it! */
+  if(base.x < scroll_x - OFFSCREEN_DISTANCE) {
+      remove_me();
+      return;
+  }
+  if(base.y > screen->h) {
     remove_me();
     return;
   }
@@ -245,11 +248,12 @@ void
 Upgrade::draw()
 {
   SDL_Rect dest;
+
   if (base.height < 32)
     {
       /* Rising up... */
 
-      dest.x = (int)(base.x - scroll_x);
+      dest.x = (int)(base.x);
       dest.y = (int)(base.y + 32 - base.height);
       dest.w = 32;
       dest.h = (int)base.height;
@@ -268,21 +272,21 @@ Upgrade::draw()
       if (kind == UPGRADE_GROWUP)
         {
           img_growup->draw(
-                       base.x - scroll_x, base.y);
+                       base.x, base.y);
         }
       else if (kind == UPGRADE_ICEFLOWER)
         {
           img_iceflower->draw(
-                       base.x - scroll_x, base.y);
+                       base.x, base.y);
         }
       else if (kind == UPGRADE_HERRING)
         {
           img_star->draw(
-                       base.x - scroll_x, base.y);
+                       base.x, base.y);
         }
       else if (kind == UPGRADE_1UP)
         {
-          img_1up->draw( base.x - scroll_x, base.y);
+          img_1up->draw( base.x, base.y);
         }
     }
 }
@@ -327,32 +331,13 @@ Upgrade::collision(void* p_c_object, int c_object, CollisionType type)
       if (kind == UPGRADE_GROWUP)
         {
           play_sound(sounds[SND_EXCELLENT], SOUND_CENTER_SPEAKER);
-          pplayer->size = BIG;
-          pplayer->base.height = 64;
-         pplayer->base.y -= 32;
-         if(collision_object_map(pplayer->base))
-            {
-              pplayer->base.height = 32;
-              pplayer->base.y += 32;
-              pplayer->duck = true;
-            }
+          pplayer->grow();
         }
       else if (kind == UPGRADE_ICEFLOWER)
         {
           play_sound(sounds[SND_COFFEE], SOUND_CENTER_SPEAKER);
+          pplayer->grow();
           pplayer->got_coffee = true;
-          if (pplayer->size == SMALL)
-            {
-              pplayer->size = BIG;
-              pplayer->base.height = 64;
-              pplayer->base.y -= 32;
-            }
-         if(collision_object_map(pplayer->base))
-            {
-              pplayer->base.height = 32;
-              pplayer->base.y += 32;
-              pplayer->duck = true;
-            }
         }
       else if (kind == UPGRADE_HERRING)
         {