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; |