diff -r ce02ddfe8aa1 -r 537bbd5c1a62 hedgewars/uCollisions.pas --- a/hedgewars/uCollisions.pas Sun Oct 02 03:45:09 2011 +0200 +++ b/hedgewars/uCollisions.pas Sun Oct 02 10:36:43 2011 -0400 @@ -39,7 +39,7 @@ function CheckGearsCollision(Gear: PGear): PGearArray; function TestCollisionXwithGear(Gear: PGear; Dir: LongInt): boolean; -function TestCollisionYwithGear(Gear: PGear; Dir: LongInt): boolean; +function TestCollisionYwithGear(Gear: PGear; Dir: LongInt): Word; function TestCollisionXKick(Gear: PGear; Dir: LongInt): boolean; function TestCollisionYKick(Gear: PGear; Dir: LongInt): boolean; @@ -157,7 +157,7 @@ TestCollisionXwithGear:= false end; -function TestCollisionYwithGear(Gear: PGear; Dir: LongInt): boolean; +function TestCollisionYwithGear(Gear: PGear; Dir: LongInt): Word; var x, y, i: LongInt; TestWord: LongWord; begin @@ -181,11 +181,11 @@ i:= x + Gear^.Radius * 2 - 2; repeat if (x and LAND_WIDTH_MASK) = 0 then - if Land[y, x] > TestWord then exit(true); + if Land[y, x] > TestWord then exit(Land[y, x]); inc(x) until (x > i); end; -TestCollisionYwithGear:= false +TestCollisionYwithGear:= 0 end; function TestCollisionXKick(Gear: PGear; Dir: LongInt): boolean; @@ -344,7 +344,7 @@ begin Gear^.X:= Gear^.X + int2hwFloat(ShiftX); Gear^.Y:= Gear^.Y + int2hwFloat(ShiftY); -if withGear then TestCollisionYwithXYShift:= TestCollisionYwithGear(Gear, Dir) +if withGear then TestCollisionYwithXYShift:= TestCollisionYwithGear(Gear, Dir) <> 0 else TestCollisionYwithXYShift:= TestCollisionY(Gear, Dir); Gear^.X:= Gear^.X - int2hwFloat(ShiftX); Gear^.Y:= Gear^.Y - int2hwFloat(ShiftY)