moved savelevel() code to level.h/c where it belongs to. :)
[supertux.git] / src / badguy.c
index 5085695..71dcda6 100644 (file)
@@ -4,7 +4,7 @@
 // Description:
 //
 //
-// Author: Tobias Glaesser <tobi.web@gmx.de>, (C) 2004
+// Author: Tobias Glaesser <tobi.web@gmx.de> & Bill Kendrick, (C) 2004
 //
 // Copyright: See COPYING file that comes with this distribution
 //
@@ -21,20 +21,26 @@ void badguy_create_bitmasks()
   /*bm_bsod = img_bsod_left[0];*/
 }
 
-void badguy_init(bad_guy_type* pbad)
+void badguy_init(bad_guy_type* pbad, float x, float y, int kind)
 {
-  pbad->base.updated = SDL_GetTicks();
-  pbad->base.alive = NO;
   pbad->base.width = 32;
   pbad->base.height = 32;
-
+  pbad->base.alive = YES;
+  pbad->mode = NORMAL;
+  pbad->dying = NO;
+  pbad->kind = kind;
+  pbad->base.x = x;
+  pbad->base.y = y;
+  pbad->base.xm = 1.3;
+  pbad->base.ym = 4.8;
+  pbad->dir = LEFT;
+  pbad->seen = NO;
+  timer_init(&pbad->timer);
 }
 
 void badguy_action(bad_guy_type* pbad)
 {
 
-  double frame_ratio = get_frame_ratio(&pbad->base);
-
   if (pbad->base.alive)
     {
       if (pbad->seen)
@@ -113,11 +119,11 @@ void badguy_action(bad_guy_type* pbad)
                 }
               else if (pbad->mode == KICK)
                 {
-               /* Obsolete
-                  if (pbad->dir == RIGHT)
-                    pbad->base.x = pbad->base.x + 16;
-                  else if (pbad->dir == LEFT)
-                    pbad->base.x = pbad->base.x - 16;*/
+                  /* Obsolete
+                                  if (pbad->dir == RIGHT)
+                                    pbad->base.x = pbad->base.x + 16;
+                                  else if (pbad->dir == LEFT)
+                                    pbad->base.x = pbad->base.x - 16;*/
                 }
               else if (pbad->mode == HELD)
                 { /* FIXME: The pbad object shouldn't know about pplayer objects. */
@@ -205,7 +211,7 @@ void badguy_action(bad_guy_type* pbad)
 
               /* Move vertically: */
 
-              pbad->base.y = pbad->base.y + pbad->base.ym *frame_ratio;
+              pbad->base.y = pbad->base.y + pbad->base.ym * frame_ratio;
 
 
               /* Fall if we get off the ground: */
@@ -216,7 +222,7 @@ void badguy_action(bad_guy_type* pbad)
                     {
                       if (pbad->base.ym < MAX_YM)
                         {
-                          pbad->base.ym = pbad->base.ym + GRAVITY;
+                          pbad->base.ym = pbad->base.ym + GRAVITY * frame_ratio;
                         }
                     }
                   else
@@ -231,7 +237,7 @@ void badguy_action(bad_guy_type* pbad)
                     }
                 }
               else
-                pbad->base.ym = pbad->base.ym + GRAVITY;
+                pbad->base.ym = pbad->base.ym + GRAVITY * frame_ratio;
 
               if (pbad->base.y > screen->h)
                 pbad->base.alive = NO;
@@ -486,7 +492,7 @@ void badguy_collision(bad_guy_type* pbad, void *p_c_object, int c_object)
       break;
     case CO_BADGUY:
       pbad_c = p_c_object;
-      if (pbad->mode != KICK)
+      if (pbad->mode != FLAT)
         pbad->dir = !pbad->dir;
       else
         {
@@ -516,13 +522,13 @@ void badguy_collision(bad_guy_type* pbad, void *p_c_object, int c_object)
         }
       else if (pbad->kind == BAD_LAPTOP)
         {
-          if (pbad->mode != FLAT)
+          if (pbad->mode != KICK)
             {
               /* Flatten! */
 
               play_sound(sounds[SND_STOMP], SOUND_CENTER_SPEAKER);
               pbad->mode = FLAT;
-             pbad->base.xm = 4;
+              pbad->base.xm = 4;
 
               timer_start(&pbad->timer,10000);