hedgewars/uGearsHedgehog.pas
changeset 8753 1dfc456b7d50
parent 8744 6c87486fd89b
child 8774 39754516eee6
equal deleted inserted replaced
8751:4609823efc94 8753:1dfc456b7d50
   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