hedgewars/HHHandlers.inc
changeset 540 b06c5aace2fa
parent 538 74219eadab5e
child 542 ec26095f1bed
equal deleted inserted replaced
539:6a9bf1852bbc 540:b06c5aace2fa
   262    begin
   262    begin
   263    if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, -1) then Gear^.dY:= _0;
   263    if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, -1) then Gear^.dY:= _0;
   264    Gear^.State:= Gear^.State or gstFalling or gstMoving;
   264    Gear^.State:= Gear^.State or gstFalling or gstMoving;
   265    Gear^.dY:= Gear^.dY + cGravity
   265    Gear^.dY:= Gear^.dY + cGravity
   266    end else
   266    end else
   267    if (not Gear^.dY.isNegative) then
   267    begin
   268    begin
       
   269    CheckHHDamage(Gear);
       
   270    if ((hwAbs(Gear^.dX) + hwAbs(Gear^.dY)) < _0_55)
   268    if ((hwAbs(Gear^.dX) + hwAbs(Gear^.dY)) < _0_55)
   271       and ((Gear^.State and gstHHJumping) <> 0) then SetLittle(Gear^.dX);
   269       and ((Gear^.State and gstHHJumping) <> 0) then SetLittle(Gear^.dX);
   272 
   270 
   273    Gear^.State:= Gear^.State and not (gstFalling or gstHHJumping or gstHHHJump);
   271    if not Gear^.dY.isNegative then
   274 
   272       begin
   275    if Gear^.dY > _0 then Gear^.dY:= _0;
   273       CheckHHDamage(Gear);
       
   274       Gear^.State:= Gear^.State and not (gstFalling or gstHHJumping or gstHHHJump);
       
   275       Gear^.dY:= _0;
       
   276       end else Gear^.dY:= Gear^.dY + cGravity;
       
   277 
   276    if ((Gear^.State and gstMoving) <> 0) then Gear^.dX:= Gear^.dX * Gear^.Friction
   278    if ((Gear^.State and gstMoving) <> 0) then Gear^.dX:= Gear^.dX * Gear^.Friction
   277    end;
   279    end;
   278 
   280 
   279 if (Gear^.State <> 0) then DeleteCI(Gear);
   281 if (Gear^.State <> 0) then DeleteCI(Gear);
   280                 
   282                 
   372          Gear^.dY:= -_0_25;
   374          Gear^.dY:= -_0_25;
   373          Gear^.dX:= SignAs(_0_02, Gear^.dX)
   375          Gear^.dX:= SignAs(_0_02, Gear^.dX)
   374          end;
   376          end;
   375    Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump);
   377    Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump);
   376 
   378 
   377 
       
   378    if ((Gear^.State and gstHHJumping) <> 0) and
   379    if ((Gear^.State and gstHHJumping) <> 0) and
   379       TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then SetLittle(Gear^.dX);
   380       TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then SetLittle(Gear^.dX);
   380 
   381 
   381    doStepHedgehogMoving(Gear);
   382    doStepHedgehogMoving(Gear);
   382    
   383