]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/player.cpp
comments
[dragonfireclient.git] / src / player.cpp
index 37fcda9911692d0bebfe600b7cab8a19a9027731..8aabb030c24f84f46fd7822b813beff0bc1376f4 100644 (file)
@@ -46,6 +46,20 @@ Player::~Player()
 // Y direction is ignored
 void Player::accelerate(v3f target_speed, f32 max_increase)
 {
+       v3f d_wanted = target_speed - m_speed;
+       d_wanted.Y = 0;
+       f32 dl_wanted = d_wanted.getLength();
+       f32 dl = dl_wanted;
+       if(dl > max_increase)
+               dl = max_increase;
+       
+       v3f d = d_wanted.normalize() * dl;
+
+       m_speed.X += d.X;
+       m_speed.Z += d.Z;
+       //m_speed += d;
+
+#if 0 // old code
        if(m_speed.X < target_speed.X - max_increase)
                m_speed.X += max_increase;
        else if(m_speed.X > target_speed.X + max_increase)
@@ -63,6 +77,7 @@ void Player::accelerate(v3f target_speed, f32 max_increase)
                m_speed.Z = target_speed.Z;
        else if(m_speed.Z > target_speed.Z)
                m_speed.Z = target_speed.Z;
+#endif
 }
 
 /*
@@ -208,8 +223,10 @@ void LocalPlayer::move(f32 dtime, Map &map)
 
        position += m_speed * dtime;
 
+       bool haxmode = g_settings.getBool("haxmode");
+       
        // Skip collision detection if player is non-local
-       if(isLocal() == false)
+       if(isLocal() == false || haxmode)
        {
                setPosition(position);
                return;
@@ -374,14 +391,36 @@ void LocalPlayer::applyControl(float dtime)
        
        v3f speed = v3f(0,0,0);
 
+       bool haxmode = g_settings.getBool("haxmode");
+       
+       if(haxmode)
+       {
+               v3f speed = getSpeed();
+               speed.Y = 0;
+               setSpeed(speed);
+       }
+
        // Superspeed mode
        bool superspeed = false;
        if(control.superspeed)
        {
-               speed += move_direction;
-               superspeed = true;
+               if(haxmode)
+               {
+                       v3f speed = getSpeed();
+                       speed.Y = -20*BS;
+                       setSpeed(speed);
+               }
+               else
+               {
+                       // "Turbo button"
+                       /*speed += move_direction;
+                       superspeed = true;*/
+               }
        }
 
+       if(haxmode)
+               superspeed = true;
+
        if(control.up)
        {
                speed += move_direction;
@@ -400,7 +439,16 @@ void LocalPlayer::applyControl(float dtime)
        }
        if(control.jump)
        {
-               if(touching_ground)
+               if(haxmode)
+               {
+                       v3f speed = getSpeed();
+                       /*speed.Y += 20.*BS * dtime * 2;
+                       if(speed.Y < 0)
+                               speed.Y = 0;*/
+                       speed.Y = 20*BS;
+                       setSpeed(speed);
+               }
+               else if(touching_ground)
                {
                        v3f speed = getSpeed();
                        speed.Y = 6.5*BS;
@@ -421,7 +469,10 @@ void LocalPlayer::applyControl(float dtime)
                speed = speed.normalize() * walkspeed_max;
        
        f32 inc = walk_acceleration * BS * dtime;
-       
+
+       if(haxmode)
+               inc = walk_acceleration * BS * dtime * 10;
+
        // Accelerate to target speed with maximum increment
        accelerate(speed, inc);
 }