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 |