hedgewars/uGearsHandlersMess.pas
changeset 13404 8ce83caec236
parent 13403 9c9d29be9e00
child 13405 4c813650fe17
equal deleted inserted replaced
13403:9c9d29be9e00 13404:8ce83caec236
  6154         ndX:= SignAs(AngleSin(HHGear^.Angle), HHGear^.dX) * _4;
  6154         ndX:= SignAs(AngleSin(HHGear^.Angle), HHGear^.dX) * _4;
  6155         ndY:= -AngleCos(HHGear^.Angle) * _4;
  6155         ndY:= -AngleCos(HHGear^.Angle) * _4;
  6156         if (ndX <> dX) or (ndY <> dY) or
  6156         if (ndX <> dX) or (ndY <> dY) or
  6157            (((Target.X <> NoPointX) and (Target.X and LAND_WIDTH_MASK = 0) and
  6157            (((Target.X <> NoPointX) and (Target.X and LAND_WIDTH_MASK = 0) and
  6158              (Target.Y and LAND_HEIGHT_MASK = 0) and ((Land[Target.Y, Target.X] = 0)) and
  6158              (Target.Y and LAND_HEIGHT_MASK = 0) and ((Land[Target.Y, Target.X] = 0)) and
  6159              (not CheckCoordInWater(Target.X, Target.Y))) and (CheckGearNear(gtAirMine, int2hwFloat(Target.X),int2hwFloat(Target.Y), Gear^.Radius*2, Gear^.Radius*2) = nil)) then
  6159              (not CheckCoordInWater(Target.X, Target.Y))) and (CheckGearNear(gtAirMine, int2hwFloat(Target.X),int2hwFloat(Target.Y), Gear^.Radius*3, Gear^.Radius*3) = nil)) then
  6160             begin
  6160             begin
  6161             updateTarget(Gear, ndX, ndY);
  6161             updateTarget(Gear, ndX, ndY);
  6162             Timer := iceWaitCollision;
  6162             Timer := iceWaitCollision;
  6163             end
  6163             end
  6164         else
  6164         else
  6170             if Target.X = NoPointX then t:= hwRound(hwSqr(X-HHGear^.X)+hwSqr(Y-HHGear^.Y));
  6170             if Target.X = NoPointX then t:= hwRound(hwSqr(X-HHGear^.X)+hwSqr(Y-HHGear^.Y));
  6171 
  6171 
  6172             if Target.X <> NoPointX then
  6172             if Target.X <> NoPointX then
  6173                 begin
  6173                 begin
  6174                 CheckCollision(Gear);
  6174                 CheckCollision(Gear);
  6175                 if ((State and gstCollision) <> 0) or (CheckGearNear(gtAirMine, int2hwFloat(Target.X),int2hwFloat(Target.Y), Gear^.Radius*3, Gear^.Radius*3) <> nil) then
  6175                 if ((State and gstCollision) <> 0) or (CheckGearNear(gtAirMine, int2hwFloat(Target.X),int2hwFloat(Target.Y), Gear^.Radius*4, Gear^.Radius*4) <> nil) then
  6176                     begin
  6176                     begin
  6177                     if Timer = iceWaitCollision then
  6177                     if Timer = iceWaitCollision then
  6178                         begin
  6178                         begin
  6179                         Timer := iceCollideWithGround;
  6179                         Timer := iceCollideWithGround;
  6180                         Power := GameTicks;
  6180                         Power := GameTicks;