895 |
895 |
896 if (Gear^.State and gstMoving) <> 0 then |
896 if (Gear^.State and gstMoving) <> 0 then |
897 if TestCollisionXKick(Gear, hwSign(Gear^.dX)) then |
897 if TestCollisionXKick(Gear, hwSign(Gear^.dX)) then |
898 if not isFalling then |
898 if not isFalling then |
899 if hwAbs(Gear^.dX) > _0_01 then |
899 if hwAbs(Gear^.dX) > _0_01 then |
900 if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -1, hwSign(Gear^.dX)) then |
900 if not (TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -1, hwSign(Gear^.dX)) or |
|
901 (TestCollisionYwithXYShift(Gear, hwSign(Gear^.dX) - hwRound(Gear^.dX), -1, -1))) then |
901 begin |
902 begin |
902 Gear^.X:= Gear^.X + Gear^.dX; |
903 Gear^.X:= Gear^.X + Gear^.dX; |
903 Gear^.dX:= Gear^.dX * _0_96; |
904 Gear^.dX:= Gear^.dX * _0_96; |
904 Gear^.Y:= Gear^.Y - _1 |
905 Gear^.Y:= Gear^.Y - _1 |
905 end |
906 end |
906 else |
907 else |
907 if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -2, hwSign(Gear^.dX)) then |
908 if not (TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -2, hwSign(Gear^.dX)) or |
|
909 (TestCollisionYwithXYShift(Gear, hwSign(Gear^.dX) - hwRound(Gear^.dX), -1, -1))) then |
908 begin |
910 begin |
909 Gear^.X:= Gear^.X + Gear^.dX; |
911 Gear^.X:= Gear^.X + Gear^.dX; |
910 Gear^.dX:= Gear^.dX * _0_93; |
912 Gear^.dX:= Gear^.dX * _0_93; |
911 Gear^.Y:= Gear^.Y - _2 |
913 Gear^.Y:= Gear^.Y - _2 |
912 end |
914 end |
913 else |
915 else |
914 if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -3, hwSign(Gear^.dX)) then |
916 if not (TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -3, hwSign(Gear^.dX)) or |
|
917 (TestCollisionYwithXYShift(Gear, hwSign(Gear^.dX) - hwRound(Gear^.dX), -1, -1))) then |
915 begin |
918 begin |
916 Gear^.X:= Gear^.X + Gear^.dX; |
919 Gear^.X:= Gear^.X + Gear^.dX; |
917 Gear^.dX:= Gear^.dX * _0_9 ; |
920 Gear^.dX:= Gear^.dX * _0_9 ; |
918 Gear^.Y:= Gear^.Y - _3 |
921 Gear^.Y:= Gear^.Y - _3 |
919 end |
922 end |
920 else |
923 else |
921 if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -4, hwSign(Gear^.dX)) then |
924 if not (TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -4, hwSign(Gear^.dX)) or |
|
925 (TestCollisionYwithXYShift(Gear, hwSign(Gear^.dX) - hwRound(Gear^.dX), -1, -1))) then |
922 begin |
926 begin |
923 Gear^.X:= Gear^.X + Gear^.dX; |
927 Gear^.X:= Gear^.X + Gear^.dX; |
924 Gear^.dX:= Gear^.dX * _0_87; |
928 Gear^.dX:= Gear^.dX * _0_87; |
925 Gear^.Y:= Gear^.Y - _4 |
929 Gear^.Y:= Gear^.Y - _4 |
926 end |
930 end |
927 else |
931 else |
928 if not TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -5, hwSign(Gear^.dX)) then |
932 if not (TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -5, hwSign(Gear^.dX)) or |
|
933 (TestCollisionYwithXYShift(Gear, hwSign(Gear^.dX) - hwRound(Gear^.dX), -1, -1))) then |
929 begin |
934 begin |
930 Gear^.X:= Gear^.X + Gear^.dX; |
935 Gear^.X:= Gear^.X + Gear^.dX; |
931 Gear^.dX:= Gear^.dX * _0_84; |
936 Gear^.dX:= Gear^.dX * _0_84; |
932 Gear^.Y:= Gear^.Y - _5 |
937 Gear^.Y:= Gear^.Y - _5 |
933 end |
938 end |