1423 ty:= TargetPoint.Y; |
1423 ty:= TargetPoint.Y; |
1424 x:= hwRound(HHGear^.X); |
1424 x:= hwRound(HHGear^.X); |
1425 y:= hwRound(HHGear^.Y); |
1425 y:= hwRound(HHGear^.Y); |
1426 |
1426 |
1427 // use a circle instead? |
1427 // use a circle instead? |
1428 if (abs(tx-x) > 256) or |
1428 if (abs(tx-x) > 256) or |
1429 (abs(ty-y) > 256) or |
1429 (abs(ty-y) > 256) or |
1430 not TryPlaceOnLand(tx - SpritesData[sprAmGirder].Width div 2, |
1430 not TryPlaceOnLand(tx - SpritesData[sprAmGirder].Width div 2, |
1431 ty - SpritesData[sprAmGirder].Height div 2, |
1431 ty - SpritesData[sprAmGirder].Height div 2, |
1432 sprAmGirder, Gear^.State, true) then |
1432 sprAmGirder, Gear^.State, true) then |
1433 begin |
1433 begin |
|
1434 PlaySound(sndDenied, false, nil); |
|
1435 HHGear^.Message:= HHGear^.Message and not gm_Attack; |
|
1436 HHGear^.State:= HHGear^.State and not gstAttacking; |
1434 HHGear^.State:= HHGear^.State or gstHHChooseTarget; |
1437 HHGear^.State:= HHGear^.State or gstHHChooseTarget; |
1435 DeleteGear(Gear); |
1438 isCursorVisible:= true; |
1436 isCursorVisible:= true |
1439 DeleteGear(Gear) |
1437 end |
1440 end |
1438 else begin |
1441 else begin |
|
1442 PlaySound(sndPlaced, false, nil); |
1439 DeleteGear(Gear); |
1443 DeleteGear(Gear); |
1440 OnUsedAmmo(PHedgehog(HHGear^.Hedgehog)^); |
1444 OnUsedAmmo(PHedgehog(HHGear^.Hedgehog)^); |
1441 ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^); |
1445 ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^) |
1442 isCursorVisible:= false |
1446 end; |
1443 end; |
1447 |
1444 HHGear^.State:= HHGear^.State and not (gstAttacking or gstAttacked); |
1448 HHGear^.State:= HHGear^.State and not (gstAttacking or gstAttacked); |
1445 HHGear^.Message:= HHGear^.Message and not gm_Attack; |
1449 HHGear^.Message:= HHGear^.Message and not gm_Attack; |
1446 TargetPoint.X:= NoPointX |
1450 TargetPoint.X:= NoPointX |
1447 end; |
1451 end; |
1448 |
1452 |