equal
deleted
inserted
replaced
38 procedure ResurrectHedgehog(var gear: PGear); |
38 procedure ResurrectHedgehog(var gear: PGear); |
39 |
39 |
40 procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt); inline; |
40 procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt); inline; |
41 procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt; skipProximity: boolean); |
41 procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt; skipProximity: boolean); |
42 |
42 |
|
43 function CheckGearNear(Kind: TGearType; X, Y: hwFloat; rX, rY: LongInt): PGear; |
43 function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear; |
44 function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear; |
44 function CheckGearDrowning(var Gear: PGear): boolean; |
45 function CheckGearDrowning(var Gear: PGear): boolean; |
45 procedure CheckCollision(Gear: PGear); inline; |
46 procedure CheckCollision(Gear: PGear); inline; |
46 procedure CheckCollisionWithLand(Gear: PGear); inline; |
47 procedure CheckCollisionWithLand(Gear: PGear); inline; |
47 |
48 |
1023 Gear:= nil |
1024 Gear:= nil |
1024 end |
1025 end |
1025 end |
1026 end |
1026 end; |
1027 end; |
1027 |
1028 |
1028 function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear; |
1029 function CheckGearNear(Kind: TGearType; X, Y: hwFloat; rX, rY: LongInt): PGear; |
1029 var t: PGear; |
1030 var t: PGear; |
|
1031 width: hwFloat; |
1030 begin |
1032 begin |
1031 t:= GearsList; |
1033 t:= GearsList; |
1032 rX:= sqr(rX); |
1034 rX:= sqr(rX); |
1033 rY:= sqr(rY); |
1035 rY:= sqr(rY); |
|
1036 width:= int2hwFloat(RightX-LeftX); |
|
1037 |
|
1038 while t <> nil do |
|
1039 begin |
|
1040 if (t^.Kind = Kind) then |
|
1041 if (not ((hwSqr(X - t^.X) / rX + hwSqr(Y - t^.Y) / rY) > _1)) or |
|
1042 ((WorldEdge = weWrap) and ( |
|
1043 (not ((hwSqr(X - width - t^.X) / rX + hwSqr(Y - t^.Y) / rY) > _1)) or |
|
1044 (not ((hwSqr(X + width - t^.X) / rX + hwSqr(Y - t^.Y) / rY) > _1)))) then |
|
1045 begin |
|
1046 CheckGearNear:= t; |
|
1047 exit; |
|
1048 end; |
|
1049 t:= t^.NextGear |
|
1050 end; |
|
1051 |
|
1052 CheckGearNear:= nil |
|
1053 end; |
|
1054 |
|
1055 function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear; |
|
1056 var t: PGear; |
|
1057 width: hwFloat; |
|
1058 begin |
|
1059 t:= GearsList; |
|
1060 rX:= sqr(rX); |
|
1061 rY:= sqr(rY); |
|
1062 width:= int2hwFloat(RightX-LeftX); |
1034 |
1063 |
1035 while t <> nil do |
1064 while t <> nil do |
1036 begin |
1065 begin |
1037 if (t <> Gear) and (t^.Kind = Kind) then |
1066 if (t <> Gear) and (t^.Kind = Kind) then |
1038 if (not ((hwSqr(Gear^.X - t^.X) / rX + hwSqr(Gear^.Y - t^.Y) / rY) > _1)) or |
1067 if (not ((hwSqr(Gear^.X - t^.X) / rX + hwSqr(Gear^.Y - t^.Y) / rY) > _1)) or |
1039 ((WorldEdge = weWrap) and ( |
1068 ((WorldEdge = weWrap) and ( |
1040 (not ((hwSqr(Gear^.X - int2hwFloat(RightX-LeftX) - t^.X) / rX + hwSqr(Gear^.Y - t^.Y) / rY) > _1)) or |
1069 (not ((hwSqr(Gear^.X - width - t^.X) / rX + hwSqr(Gear^.Y - t^.Y) / rY) > _1)) or |
1041 (not ((hwSqr(Gear^.X + int2hwFloat(RightX-LeftX) - t^.X) / rX + hwSqr(Gear^.Y - t^.Y) / rY) > _1)))) then |
1070 (not ((hwSqr(Gear^.X + width - t^.X) / rX + hwSqr(Gear^.Y - t^.Y) / rY) > _1)))) then |
1042 begin |
1071 begin |
1043 CheckGearNear:= t; |
1072 CheckGearNear:= t; |
1044 exit; |
1073 exit; |
1045 end; |
1074 end; |
1046 t:= t^.NextGear |
1075 t:= t^.NextGear |
1288 |
1317 |
1289 |
1318 |
1290 case Gear^.Kind of |
1319 case Gear^.Kind of |
1291 gtHedgehog, |
1320 gtHedgehog, |
1292 gtMine, |
1321 gtMine, |
|
1322 gtAirMine, |
1293 gtSMine, |
1323 gtSMine, |
1294 gtKnife, |
1324 gtKnife, |
1295 gtTarget, |
1325 gtTarget, |
1296 gtCase, |
1326 gtCase, |
1297 gtExplosives: //, |
1327 gtExplosives: //, |
1479 |
1509 |
1480 GearsNear.size:= s; |
1510 GearsNear.size:= s; |
1481 GearsNear.ar:= @GearsNearArray |
1511 GearsNear.ar:= @GearsNearArray |
1482 end; |
1512 end; |
1483 |
1513 |
1484 |
|
1485 procedure SpawnBoxOfSmth; |
1514 procedure SpawnBoxOfSmth; |
1486 var t, aTot, uTot, a, h: LongInt; |
1515 var t, aTot, uTot, a, h: LongInt; |
1487 i: TAmmoType; |
1516 i: TAmmoType; |
1488 begin |
1517 begin |
1489 if (PlacingHogs) or |
1518 if (PlacingHogs) or |