hedgewars/uGearsHandlersMess.pas
changeset 10827 2b717f687c72
parent 10822 def423815f24
child 10831 19d056c10bbd
equal deleted inserted replaced
10826:bc5215b2f9fb 10827:2b717f687c72
  1760 
  1760 
  1761 procedure doStepAirMine(Gear: PGear);
  1761 procedure doStepAirMine(Gear: PGear);
  1762 var i,t,targDist,tmpDist: LongWord;
  1762 var i,t,targDist,tmpDist: LongWord;
  1763     targ, tmpG: PGear;
  1763     targ, tmpG: PGear;
  1764     trackSpeed, airFriction, tX, tY: hwFloat;
  1764     trackSpeed, airFriction, tX, tY: hwFloat;
  1765 begin
  1765     isUnderwater: Boolean;
       
  1766 begin
       
  1767     isUnderwater:= CheckCoordInWater(hwRound(Gear^.X), hwRound(Gear^.Y) + Gear^.Radius);
  1766     if Gear^.Pos > 0 then
  1768     if Gear^.Pos > 0 then
  1767         begin
  1769         begin
  1768         airFriction:= _1;
  1770         airFriction:= _1;
  1769         dec(airFriction.QWordValue,Gear^.Pos);
  1771         if isUnderwater then
       
  1772             dec(airFriction.QWordValue,Gear^.Pos*2)
       
  1773         else
       
  1774             dec(airFriction.QWordValue,Gear^.Pos);
  1770         Gear^.dX:= Gear^.dX*airFriction;
  1775         Gear^.dX:= Gear^.dX*airFriction;
  1771         Gear^.dY:= Gear^.dY*airFriction
  1776         Gear^.dY:= Gear^.dY*airFriction
  1772         end;
  1777         end;
  1773     doStepFallingGear(Gear);
  1778     doStepFallingGear(Gear);
  1774     if (TurnTimeLeft = 0) and ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) > _0_02.QWordValue) then
  1779     if (TurnTimeLeft = 0) and ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) > _0_02.QWordValue) then
  1835         if targ <> nil then Gear^.FlightTime:= GameTicks + 5000
  1840         if targ <> nil then Gear^.FlightTime:= GameTicks + 5000
  1836         end;
  1841         end;
  1837     if targ <> nil then
  1842     if targ <> nil then
  1838         begin
  1843         begin
  1839         trackSpeed:= _0;
  1844         trackSpeed:= _0;
  1840         trackSpeed.QWordValue:= Gear^.Power;
  1845         if isUnderwater then
       
  1846             trackSpeed.QWordValue:= Gear^.Power div 2
       
  1847         else
       
  1848             trackSpeed.QWordValue:= Gear^.Power;
  1841         if (Gear^.X < targ^.X) and (Gear^.dX < _0_1)  then
  1849         if (Gear^.X < targ^.X) and (Gear^.dX < _0_1)  then
  1842              Gear^.dX:= Gear^.dX+trackSpeed // please leave as an add.  I like the effect
  1850              Gear^.dX:= Gear^.dX+trackSpeed // please leave as an add.  I like the effect
  1843         else if (Gear^.X > targ^.X) and (Gear^.dX > -_0_1) then
  1851         else if (Gear^.X > targ^.X) and (Gear^.dX > -_0_1) then
  1844             Gear^.dX:= Gear^.dX-trackSpeed;
  1852             Gear^.dX:= Gear^.dX-trackSpeed;
  1845         if (Gear^.Y < targ^.Y) and (Gear^.dY < _0_1)  then
  1853         if (Gear^.Y < targ^.Y) and (Gear^.dY < _0_1)  then