hedgewars/GSHandlers.inc
changeset 1909 30fa1608b54f
parent 1892 fddc1201df25
child 1914 aab686a4e0c5
equal deleted inserted replaced
1908:5be17e24751a 1909:30fa1608b54f
  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 begin
  1417     x, y, tx, ty: LongInt;
  1418 AllInactive:= false;
  1418 begin
  1419 
  1419 AllInactive:= false;
  1420 HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
  1420 
  1421 if not TryPlaceOnLand(TargetPoint.X - SpritesData[sprAmGirder].Width div 2,
  1421 HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
  1422                       TargetPoint.Y - SpritesData[sprAmGirder].Height div 2,
  1422 tx:= TargetPoint.X;
       
  1423 ty:= TargetPoint.Y;
       
  1424 x:= hwRound(HHGear^.X);
       
  1425 y:= hwRound(HHGear^.Y);
       
  1426 
       
  1427 // use a circle instead?
       
  1428 if (abs(tx-x) > 256) or 
       
  1429    (abs(ty-y) > 256) or
       
  1430    not TryPlaceOnLand(tx - SpritesData[sprAmGirder].Width div 2,
       
  1431                       ty - SpritesData[sprAmGirder].Height div 2,
  1423                       sprAmGirder, Gear^.State, true) then
  1432                       sprAmGirder, Gear^.State, true) then
  1424 	begin
  1433 	begin
  1425 	HHGear^.Message:= HHGear^.Message and not gm_Attack;
       
  1426 	HHGear^.State:= HHGear^.State and not gstAttacking;
       
  1427 	HHGear^.State:= HHGear^.State or gstHHChooseTarget;
  1434 	HHGear^.State:= HHGear^.State or gstHHChooseTarget;
  1428 	DeleteGear(Gear);
  1435 	DeleteGear(Gear);
  1429 	isCursorVisible:= true
  1436     isCursorVisible:= true
  1430 	end
  1437 	end
  1431 else begin
  1438 else begin
  1432 	DeleteGear(Gear);
  1439 	DeleteGear(Gear);
  1433 	AfterAttack
  1440     OnUsedAmmo(PHedgehog(HHGear^.Hedgehog)^);
  1434 	end;
  1441     ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^);
       
  1442     isCursorVisible:= false
       
  1443  	end;
       
  1444 HHGear^.State:= HHGear^.State and not (gstAttacking or gstAttacked);
       
  1445 HHGear^.Message:= HHGear^.Message and not gm_Attack;
  1435 TargetPoint.X:= NoPointX
  1446 TargetPoint.X:= NoPointX
  1436 end;
  1447 end;
  1437 
  1448 
  1438 ////////////////////////////////////////////////////////////////////////////////
  1449 ////////////////////////////////////////////////////////////////////////////////
  1439 procedure doStepTeleportAfter(Gear: PGear);
  1450 procedure doStepTeleportAfter(Gear: PGear);