hedgewars/HHHandlers.inc
changeset 790 a6f442173822
parent 783 4f59db6f147d
child 799 71ba310da909
equal deleted inserted replaced
789:3d976d2579eb 790:a6f442173822
   321       and ((Gear^.State and gstHHJumping) <> 0) then SetLittle(Gear^.dX);
   321       and ((Gear^.State and gstHHJumping) <> 0) then SetLittle(Gear^.dX);
   322 
   322 
   323    if not Gear^.dY.isNegative then
   323    if not Gear^.dY.isNegative then
   324       begin
   324       begin
   325       CheckHHDamage(Gear);
   325       CheckHHDamage(Gear);
       
   326 
       
   327       if ((Gear^.State and gstHHHJump) <> 0) and
       
   328          (Gear^.dX.QWordValue < _0_02.QWordValue) then Gear^.dX.isNegative:= not Gear^.dX.isNegative; // landing after high jump
       
   329 
   326       Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump);
   330       Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump);
   327       Gear^.dY:= _0;
   331       Gear^.dY:= _0;
   328       end else Gear^.dY:= Gear^.dY + cGravity;
   332       end else Gear^.dY:= Gear^.dY + cGravity;
   329 
   333 
   330    if ((Gear^.State and gstMoving) <> 0) then Gear^.dX:= Gear^.dX * Gear^.Friction
   334    if ((Gear^.State and gstMoving) <> 0) then Gear^.dX:= Gear^.dX * Gear^.Friction
   425       ((Gear^.State and gstHHHJump) = 0) then
   429       ((Gear^.State and gstHHHJump) = 0) then
   426       if (not (hwAbs(Gear^.dX) > cLittle)) and (Gear^.dY < -_0_02) then
   430       if (not (hwAbs(Gear^.dX) > cLittle)) and (Gear^.dY < -_0_02) then
   427          begin
   431          begin
   428          Gear^.State:= Gear^.State or gstHHHJump or gstMoving;
   432          Gear^.State:= Gear^.State or gstHHHJump or gstMoving;
   429          Gear^.dY:= -_0_25;
   433          Gear^.dY:= -_0_25;
   430          Gear^.dX:= SignAs(_0_02, Gear^.dX)
   434          Gear^.dX:= -SignAs(_0_02, Gear^.dX)
   431          end;
   435          end;
   432    Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump);
   436    Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump);
   433 
   437 
   434    if ((Gear^.State and gstHHJumping) <> 0) and
   438    if ((Gear^.State and gstHHJumping) <> 0) and
   435       TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then SetLittle(Gear^.dX);
   439       TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then SetLittle(Gear^.dX);