hedgewars/GSHandlers.inc
changeset 1915 c357f5b55320
parent 1914 aab686a4e0c5
child 1918 975d5061712f
equal deleted inserted replaced
1914:aab686a4e0c5 1915:c357f5b55320
  1412 
  1412 
  1413 ////////////////////////////////////////////////////////////////////////////////
  1413 ////////////////////////////////////////////////////////////////////////////////
  1414 
  1414 
  1415 procedure doStepGirder(Gear: PGear);
  1415 procedure doStepGirder(Gear: PGear);
  1416 var HHGear: PGear;
  1416 var HHGear: PGear;
  1417     x, y, tx, ty: LongInt;
  1417     x, y, tx, ty: hwFloat;
  1418 begin
  1418 begin
  1419 AllInactive:= false;
  1419 AllInactive:= false;
  1420 
  1420 
  1421 HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
  1421 HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
  1422 tx:= TargetPoint.X;
  1422 tx:= int2hwFloat(TargetPoint.X);
  1423 ty:= TargetPoint.Y;
  1423 ty:= int2hwFloat(TargetPoint.Y);
  1424 x:= hwRound(HHGear^.X);
  1424 x:= HHGear^.X;
  1425 y:= hwRound(HHGear^.Y);
  1425 y:= HHGear^.Y;
  1426 
  1426 
  1427 // use a circle instead?
  1427 if (Distance(tx - x, ty - y) > _256) or
  1428 if (abs(tx-x) > 256) or
  1428    not TryPlaceOnLand(TargetPoint.X - SpritesData[sprAmGirder].Width div 2,
  1429    (abs(ty-y) > 256) or
  1429                       TargetPoint.Y - SpritesData[sprAmGirder].Height div 2,
  1430    not TryPlaceOnLand(tx - SpritesData[sprAmGirder].Width div 2,
       
  1431                       ty - SpritesData[sprAmGirder].Height div 2,
       
  1432                       sprAmGirder, Gear^.State, true) then
  1430                       sprAmGirder, Gear^.State, true) then
  1433 	begin
  1431 	begin
  1434     PlaySound(sndDenied, false, nil);
  1432     PlaySound(sndDenied, false, nil);
  1435 	HHGear^.Message:= HHGear^.Message and not gm_Attack;
  1433 	HHGear^.Message:= HHGear^.Message and not gm_Attack;
  1436 	HHGear^.State:= HHGear^.State and not gstAttacking;
  1434 	HHGear^.State:= HHGear^.State and not gstAttacking;