--- a/hedgewars/uAIMisc.pas Thu Aug 16 19:41:54 2018 +0300
+++ b/hedgewars/uAIMisc.pas Fri Aug 17 20:13:33 2018 -0400
@@ -76,6 +76,7 @@
procedure AwareOfExplosion(x, y, r: LongInt); inline;
function RatePlace(Gear: PGear): LongInt;
+function CheckWrap(x: real): real; inline;
function TestColl(x, y, r: LongInt): boolean; inline;
function TestCollExcludingObjects(x, y, r: LongInt): boolean; inline;
function TestCollExcludingMe(Me: PGear; x, y, r: LongInt): boolean; inline;
@@ -330,6 +331,16 @@
RatePlace:= rate;
end;
+function CheckWrap(x: real): real; inline;
+begin
+ if WorldEdge = weWrap then
+ if (x < leftX) then
+ x:= x + (rightX - leftX)
+ else if x > rightX then
+ x:= x - (rightX - leftX);
+ CheckWrap:= x;
+end;
+
function CheckBounds(x, y, r: Longint): boolean; inline;
begin
CheckBounds := (((x-r) and LAND_WIDTH_MASK) = 0) and
@@ -412,6 +423,7 @@
rCorner:= r * 0.75;
while true do
begin
+ x:= CheckWrap(x);
x:= x + dX;
y:= y + dY;
dY:= dY + cGravityf;
@@ -458,6 +470,7 @@
//v:= random($FFFFFFFF);
while true do
begin
+ x:= CheckWrap(x);
x:= x + dX;
y:= y + dY;
dY:= dY + cGravityf;
@@ -519,6 +532,7 @@
pX, pY, dX, dY: real;
hadSkips: boolean;
begin
+x:= round(CheckWrap(real(x)));
fallDmg:= 0;
rate:= 0;
// add our virtual position