hedgewars/HHHandlers.inc
changeset 3907 5b516f0d9957
parent 3894 9abce5468583
child 3909 4ba25a3d15af
equal deleted inserted replaced
3906:c5da430cb3fd 3907:5b516f0d9957
   602 end;
   602 end;
   603 
   603 
   604 procedure doStepHedgehog(Gear: PGear); forward;
   604 procedure doStepHedgehog(Gear: PGear); forward;
   605 ////////////////////////////////////////////////////////////////////////////////
   605 ////////////////////////////////////////////////////////////////////////////////
   606 procedure doStepHedgehogMoving(Gear: PGear);
   606 procedure doStepHedgehogMoving(Gear: PGear);
   607 var isFalling: boolean;
   607 var isFalling, isUnderwater: boolean;
   608 begin
   608 begin
       
   609 isUnderwater:= cWaterLine < hwRound(Gear^.Y) + Gear^.Radius;
   609 if Gear^.dX > _0_995 then Gear^.dX:= _0_995;
   610 if Gear^.dX > _0_995 then Gear^.dX:= _0_995;
   610 if Gear^.dY > _0_995 then Gear^.dY:= _0_995;
   611 if Gear^.dY > _0_995 then Gear^.dY:= _0_995;
   611 if PHedgehog(Gear^.Hedgehog)^.Unplaced then
   612 if PHedgehog(Gear^.Hedgehog)^.Unplaced then
   612    begin
   613    begin
   613    Gear^.dY:= _0;
   614    Gear^.dY:= _0;
   639 
   640 
   640    if ((Gear^.State and gstMoving) <> 0) then Gear^.dX:= Gear^.dX * Gear^.Friction
   641    if ((Gear^.State and gstMoving) <> 0) then Gear^.dX:= Gear^.dX * Gear^.Friction
   641    end;
   642    end;
   642 
   643 
   643 if (Gear^.State <> 0) then DeleteCI(Gear);
   644 if (Gear^.State <> 0) then DeleteCI(Gear);
       
   645 
       
   646 if isUnderwater then
       
   647    begin
       
   648    Gear^.dY:= Gear^.dY * _0_999;
       
   649    Gear^.dX:= Gear^.dX * _0_999;
       
   650    end;
   644 
   651 
   645 if (Gear^.State and gstMoving) <> 0 then
   652 if (Gear^.State and gstMoving) <> 0 then
   646    if TestCollisionXKick(Gear, hwSign(Gear^.dX)) then
   653    if TestCollisionXKick(Gear, hwSign(Gear^.dX)) then
   647       if not isFalling then
   654       if not isFalling then
   648          if hwAbs(Gear^.dX) > _0_01 then
   655          if hwAbs(Gear^.dX) > _0_01 then