fixed trampoline animation and made behaviour a bit more mario like
authorMatthias Braun <matze@braunis.de>
Sat, 15 Jul 2006 07:53:39 +0000 (07:53 +0000)
committerMatthias Braun <matze@braunis.de>
Sat, 15 Jul 2006 07:53:39 +0000 (07:53 +0000)
SVN-Revision: 4017

data/images/objects/trampoline/trampoline.sprite
data/images/objects/trampoline/trampoline_red.sprite
src/object/trampoline.cpp

index ede16f9..b71546e 100644 (file)
@@ -1,11 +1,14 @@
 (supertux-sprite
- (action
-  (name "normal")
-  (hitbox 0 0 0 0)
-  (images "trampoline1-0.png"
-   "trampoline1-1.png"
-   "trampoline1-2.png"
-   "trampoline1-3.png"
-   )
- )
+  (action
+    (name "normal")
+    (hitbox 0 0 0 0)
+    (images "trampoline1-0.png")
+  )
+  (action
+    (name "swinging")
+    (images "trampoline1-0.png"
+            "trampoline1-1.png"
+            "trampoline1-2.png"
+            "trampoline1-3.png")
+  )
 )
index 948c47d..69c9ac9 100644 (file)
@@ -1,11 +1,15 @@
 (supertux-sprite
- (action
-  (name "normal")
-  (hitbox 0 0 0 0)
-  (images "trampoline2-0.png"
-   "trampoline2-1.png"
-   "trampoline2-2.png"
-   "trampoline2-3.png"
-   )
- )
+  (action
+    (name "normal")
+    (hitbox 0 0 0 0)
+    (images "trampoline2-0.png")
+  )
+  (action
+    (name "swinging")
+    (images "trampoline2-0.png"
+            "trampoline2-1.png"
+            "trampoline2-2.png"
+            "trampoline2-3.png"
+    )
+  )
 )
index 03ac4fc..8f742ee 100644 (file)
@@ -42,7 +42,6 @@ Trampoline::Trampoline(const lisp::Lisp& lisp)
   physic.set_velocity_y(0);
   physic.enable_gravity(true);
   on_ground = false;
-  sprite->set_animation_loops( 0 );
 
   //Check if we need another sprite
   if( !lisp.get( "sprite", sprite_name ) ){
@@ -54,7 +53,7 @@ Trampoline::Trampoline(const lisp::Lisp& lisp)
   }
   //Replace sprite 
   sprite = sprite_manager->create( sprite_name );
-  sprite->set_animation_loops( 0 );
+  sprite->set_action("normal");
 }
 
 void
@@ -62,6 +61,9 @@ Trampoline::update( float elapsed_time ){
     if( !on_ground ){
         movement = physic.get_movement(elapsed_time);
     }
+    if(sprite->animation_done()) {
+      sprite->set_action("normal");
+    }
 }
 
 HitResponse
@@ -71,19 +73,19 @@ Trampoline::collision(GameObject& other, const CollisionHit& hit )
   if ( player ) {
     float vy = player->physic.get_velocity_y();
     //player is falling down on trampolin holding "jump"
-    if( hit.top  && vy > 0 && player->get_controller()->hold( Controller::JUMP )){ 
-      vy *= VY_FACTOR;
-      if( vy < VY_MIN ){
-          vy = VY_MIN;
-      }
-      if( vy > VY_INITIAL ){
-          vy = VY_INITIAL;
+    if(hit.top && vy > 0) {
+      if(player->get_controller()->hold(Controller::JUMP)) { 
+        vy = VY_MIN;
+      } else {
+        vy = VY_INITIAL;
       }
+
       player->physic.set_velocity_y( vy );
       //printf("nachher velocity y = %f\n", player->physic.get_velocity_y());
       sound_manager->play( TRAMPOLINE_SOUND );
-      sprite->set_animation_loops( -1 ); //TODO: 2 is not working
-      return  SOLID;
+      sprite->set_action("swinging", 1);
+      //sprite->set_animation_loops(2); //TODO: 2 is not working
+      return SOLID;
     }
   }