hedgewars/uGearsUtils.pas
changeset 7613 ce6ead3327b2
parent 7603 e9c3c67b5dfd
child 7614 3ae60c8a15f2
--- a/hedgewars/uGearsUtils.pas	Thu Aug 23 19:47:38 2012 +0200
+++ b/hedgewars/uGearsUtils.pas	Mon Aug 27 17:40:16 2012 +0200
@@ -38,6 +38,8 @@
 
 function  CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear;
 function  CheckGearDrowning(Gear: PGear): boolean;
+procedure CheckCollision(Gear: PGear); inline;
+procedure CheckCollisionWithLand(Gear: PGear); inline;
 
 var doStepHandlers: array[TGearType] of TGearStepProcedure;
 
@@ -603,7 +605,7 @@
                     inc(cnt)
                     end;
 
-                inc(y, 45)
+                inc(y, 10)
                 end;
 
             if cnt > 0 then
@@ -663,4 +665,22 @@
 CheckGearNear:= nil
 end;
 
+procedure CheckCollision(Gear: PGear); inline;
+begin
+    if TestCollisionXwithGear(Gear, hwSign(Gear^.dX))
+    or (TestCollisionYwithGear(Gear, hwSign(Gear^.dY)) <> 0) then
+        Gear^.State := Gear^.State or gstCollision
+    else
+        Gear^.State := Gear^.State and (not gstCollision)
+end;
+
+procedure CheckCollisionWithLand(Gear: PGear); inline;
+begin
+    if TestCollisionX(Gear, hwSign(Gear^.dX))
+    or TestCollisionY(Gear, hwSign(Gear^.dY)) then
+        Gear^.State := Gear^.State or gstCollision
+    else 
+        Gear^.State := Gear^.State and (not gstCollision)
+end;
+
 end.