fix tux jumping always full height
authorMatthias Braun <matze@braunis.de>
Mon, 22 Nov 2004 21:35:04 +0000 (21:35 +0000)
committerMatthias Braun <matze@braunis.de>
Mon, 22 Nov 2004 21:35:04 +0000 (21:35 +0000)
SVN-Revision: 2138

TODO
src/gameobjs.cpp
src/gameobjs.h
src/object/fireworks.cpp
src/player.cpp
src/player.h
src/sector.cpp
src/sector.h
src/tilemap.cpp

diff --git a/TODO b/TODO
index e1b401e..5228317 100644 (file)
--- a/TODO
+++ b/TODO
@@ -84,7 +84,7 @@ L: low priority
  * check if unducking is actually possible or if something is in the way
  * fix flapping
  ** having a star doesn't kill enemies - ok
- * tux always jumps to full height at the moment
+ * tux always jumps to full height at the moment - ok
  * invisble blocks are visible and make the game crash when bumped
  * reimplement spikes as objects
  * what to do when stuck under tiles (after using duck-sliding)
index 6e7b552..3201eb2 100644 (file)
@@ -452,7 +452,9 @@ SmokeCloud::draw(DrawingContext& context)
   img_smoke_cloud->draw(context, position, LAYER_OBJECTS+1);
 }
 
-Particles::Particles(const Vector& epicenter, int min_angle, int max_angle, const Vector& initial_velocity, const Vector& acceleration, int number, Color color_, int size_, int life_time, int drawing_layer_)
+Particles::Particles(const Vector& epicenter, int min_angle, int max_angle,
+        const Vector& initial_velocity, const Vector& acceleration, int number,
+        Color color_, int size_, float life_time, int drawing_layer_)
   : accel(acceleration), color(color_), size(size_), drawing_layer(drawing_layer_)
 {
   if(life_time == 0) {
index bb4168f..5ebbe07 100644 (file)
@@ -130,7 +130,7 @@ class Particles : public GameObject
 public:
   Particles(const Vector& epicenter, int min_angle, int max_angle,
             const Vector& initial_velocity, const Vector& acceleration,
-            int number, Color color, int size, int life_time, int drawing_layer);
+            int number, Color color, int size, float life_time, int drawing_layer);
   ~Particles();
   
   virtual void action(float elapsed_time);
index e6369e1..a6ff565 100644 (file)
@@ -4,6 +4,7 @@
 #include "resources.h"
 #include "sector.h"
 #include "camera.h"
+#include "gameobjs.h"
 #include "app/globals.h"
 #include "video/drawing_context.h"
 #include "audio/sound_manager.h"
@@ -30,9 +31,9 @@ Fireworks::action(float )
 
         int red = rand() % 255;
         int green = rand() % red;
-        sector->add_particles(pos, 0, 360, Vector(140, 140),
-                Vector(0, 0), 45, Color(red, green, 0), 3, 1300,
-                LAYER_FOREGROUND1+1);
+        sector->add_object(new Particles(pos, 0, 360, Vector(140, 140),
+                Vector(0, 0), 45, Color(red, green, 0), 3, 1.3,
+                LAYER_FOREGROUND1+1));
         SoundManager::get()->play_sound(IDToSound(SND_FIREWORKS));
         timer.start(((float) rand() / RAND_MAX) + .5);
     }
index fa9d84a..edbdce8 100644 (file)
@@ -175,13 +175,8 @@ Player::init()
 
   on_ground_flag = false;
 
-  frame_main = 0;
-  frame_ = 0;
-
   player_input_init(&input);
 
-  frame_timer.start(.025, true);
-
   physic.reset();
 }
 
@@ -363,12 +358,13 @@ Player::handle_horizontal_input()
           skidding_timer.start(SKID_TIME);
           SoundManager::get()->play_sound(IDToSound(SND_SKID));
           // dust some partcles
-          Sector::current()->add_particles(
-              Vector(bbox.p1.x + (dir == RIGHT ? bbox.get_width() : 0),
+          Sector::current()->add_object(
+              new Particles(
+                Vector(bbox.p1.x + (dir == RIGHT ? bbox.get_width() : 0),
                 bbox.p2.y),
               dir == RIGHT ? 270+20 : 90-40, dir == RIGHT ? 270+40 : 90-20,
-              Vector(280,-260), Vector(0,0.030), 3, Color(100,100,100), 3, 800,
-              LAYER_OBJECTS+1);
+              Vector(280,-260), Vector(0,0.030), 3, Color(100,100,100), 3, .8,
+              LAYER_OBJECTS+1));
 
           ax *= 2.5;
         }
@@ -423,6 +419,17 @@ Player::handle_vertical_input()
       fall_mode = JUMPING;
   }
 
+  if(on_ground()) { /* Make sure jumping is off. */
+    jumping = false;
+    flapping = false;
+    falling_from_flap = false;
+    if (flapping_timer.started()) {
+      flapping_timer.start(0);
+    }
+
+    physic.set_acceleration_y(0); //for flapping
+  }
+
   // Press jump key
   if(input.jump == DOWN && can_jump && on_ground())
     {
@@ -456,7 +463,6 @@ Player::handle_vertical_input()
          }
       if (jumping && physic.get_velocity_y() > 0)
          {
-            printf("jumpend.\n");
             jumping = false;
             physic.set_velocity_y(0);
          }
@@ -638,18 +644,6 @@ Player::handle_vertical_input()
     }
 #endif
 
-  if(on_ground())   /* Make sure jumping is off. */
-    {
-      jumping = false;
-      flapping = false;
-      falling_from_flap = false;
-      if (flapping_timer.started()) {
-        flapping_timer.start(0);
-      }
-
-      physic.set_acceleration_y(0); //for flapping
-    }
-
   input.old_jump = input.jump;
 }
 
@@ -673,28 +667,6 @@ Player::handle_input()
     input.old_fire = DOWN;
   }
 
-#if 0
-  /* tux animations: */
-  if(frame_timer.check()) {
-    if (input.right == UP && input.left == UP)
-    {
-      frame_main = 1;
-      frame_ = 1;
-    }
-    else
-    {
-      if ((input.fire == DOWN && (global_frame_counter % 2) == 0) ||
-          (global_frame_counter % 4) == 0)
-        frame_main = (frame_main + 1) % 4;
-
-      frame_ = frame_main;
-
-      if (frame_ == 3)
-        frame_ = 1;
-    }
-  }
-#endif
-
   /* Duck! */
   if (input.down == DOWN && size == BIG && !duck 
       && physic.get_velocity_y() == 0 && on_ground())
@@ -930,122 +902,6 @@ Player::collision(GameObject& other, const CollisionHit& hit)
   return FORCE_MOVE;
 }
 
-#if 0
-void
-Player::collision(void* p_c_object, int c_object)
-{
-  //BadGuy* pbad_c = NULL;
-  //Trampoline* ptramp_c = NULL;
-  //FlyingPlatform* pplatform_c = NULL;
-
-  switch (c_object)
-    {
-    case CO_BADGUY:
-      pbad_c = (BadGuy*) p_c_object;
-
-     /* Hurt player if he touches a badguy */
-      if (!pbad_c->dying && !dying &&
-          !safe_timer.started() &&
-          pbad_c->mode != BadGuy::HELD)
-        {
-          if (pbad_c->mode == BadGuy::FLAT && input.fire == DOWN
-               && !holding_something)
-            {
-              holding_something = true;
-              pbad_c->mode = BadGuy::HELD;
-              pbad_c->base.y-=8;
-            }
-          else if (pbad_c->mode == BadGuy::FLAT)
-            {
-              // Don't get hurt if we're kicking a flat badguy!
-            }
-          else if (pbad_c->mode == BadGuy::KICK)
-            {
-              /* Hurt if you get hit by kicked laptop: */
-              if (!invincible_timer.started())
-                {
-                  kill(SHRINK);
-                }
-              else
-                pbad_c->kill_me(20);
-            }
-          else if (!pbad_c->frozen_timer.check() && (pbad_c->kind == BAD_MRBOMB
-              || pbad_c->kind == BAD_JUMPY || pbad_c->kind == BAD_FISH
-              || pbad_c->kind == BAD_SPIKY))
-                pbad_c->kill_me(20);
-          else
-            {
-              if (!invincible_timer.started())
-                {
-                  kill(SHRINK);
-                }
-              else
-                {
-                  pbad_c->kill_me(25);
-                }
-            }
-          player_status.score_multiplier++;
-        }
-      break;
-
-    case CO_TRAMPOLINE:
-      ptramp_c = (Trampoline*) p_c_object;
-      
-      // Pick up trampoline
-      if (ptramp_c->mode != Trampoline::M_HELD && input.fire == DOWN && !holding_something && on_ground())
-      {
-        holding_something = true;
-        ptramp_c->mode = Trampoline::M_HELD;
-        ptramp_c->base.y -= 8;
-      }
-      // Set down trampoline
-      else if (ptramp_c->mode == Trampoline::M_HELD && input.fire != DOWN)
-      {
-        holding_something = false;
-        ptramp_c->mode = Trampoline::M_NORMAL;
-        ptramp_c->base.y += 8;
-        ptramp_c->physic.set_velocity(physic.get_velocity_x(), physic.get_velocity_y());
-
-        //if (dir == RIGHT)
-        //  ptramp_c->base.x = base.x + base.width+1;
-        //else /* LEFT */
-        //  ptramp_c->base.x = base.x - base.width-1;
-      }
-/*
-      // Don't let tux walk through trampoline
-      else if (ptramp_c->mode != Trampoline::M_HELD && on_ground())
-      {
-        if (physic.get_velocity_x() > 0) // RIGHT
-        {
-          physic.set_velocity_x(0);
-          base.x = ptramp_c->base.x - base.width;
-        }
-        else if (physic.get_velocity_x() < 0) // LEFT
-        {
-          physic.set_velocity_x(0);
-          base.x = ptramp_c->base.x + ptramp_c->base.width;
-        }
-      }
-*/
-      break;
-    case CO_FLYING_PLATFORM:
-      pplatform_c = (FlyingPlatform*) p_c_object;
-      
-      base.y = pplatform_c->base.y - base.height;
-      physic.set_velocity_x(pplatform_c->get_vel_x());
-      
-      physic.enable_gravity(false);
-      can_jump = true;
-      fall_mode = ON_GROUND;
-      break;
-
-    default:
-      break;
-    }
-
-}
-#endif
-
 void
 Player::make_invincible()
 {
index 45a82bd..bc47b13 100644 (file)
@@ -156,8 +156,6 @@ public:
   bool falling_from_flap;
   bool enable_hover;
   bool butt_jump;
-  int frame_;
-  int frame_main;
   
   float flapping_velocity;
 
@@ -171,7 +169,6 @@ public:
   Timer2 invincible_timer;
   Timer2 skidding_timer;
   Timer2 safe_timer;
-  Timer2 frame_timer;
   Timer2 kick_timer;
   Timer2 shooting_timer;   // used to show the arm when Tux is shooting
   Timer2 dying_timer;
index e097420..0e03e76 100644 (file)
@@ -791,13 +791,6 @@ Sector::add_smoke_cloud(const Vector& pos)
   return true;
 }
 
-bool
-Sector::add_particles(const Vector& epicenter, int min_angle, int max_angle, const Vector& initial_velocity, const Vector& acceleration, int number, Color color, int size, int life_time, int drawing_layer)
-{
-  add_object(new Particles(epicenter, min_angle, max_angle, initial_velocity, acceleration, number, color, size, life_time, drawing_layer));
-  return true;
-}
-
 void
 Sector::add_floating_text(const Vector& pos, const std::string& text)
 {
index 8927035..05bdf41 100644 (file)
@@ -106,9 +106,6 @@ public:
  
   bool add_bullet(const Vector& pos, float xm, Direction dir);
   bool add_smoke_cloud(const Vector& pos);
-  bool add_particles(const Vector& epicenter, int min_angle, int max_angle,
-      const Vector& initial_velocity, const Vector& acceleration, int number,
-      Color color, int size, int life_time, int drawing_layer);
   void add_floating_text(const Vector& pos, const std::string& text);
                                                                                 
   /** Flip the all the sector vertically. The purpose of this is to let
index b7f3c5a..47cdeea 100644 (file)
@@ -231,7 +231,7 @@ TileMap::get_tile(int x, int y) const
 {
   if(x < 0 || x >= width || y < 0 || y >= height) {
 #ifdef DEBUG
-    std::cout << "Warning: tile outside tilemap requested!\n";
+    //std::cout << "Warning: tile outside tilemap requested!\n";
 #endif
     return tilemanager->get(0);
   }