hedgewars/uCollisions.pas
changeset 5750 6bbf7aee2cdf
parent 5572 47cc28299baa
child 5830 ea4d1fe665d7
equal deleted inserted replaced
5749:134d57761f3d 5750:6bbf7aee2cdf
    45 function  TestCollisionYKick(Gear: PGear; Dir: LongInt): boolean;
    45 function  TestCollisionYKick(Gear: PGear; Dir: LongInt): boolean;
    46 
    46 
    47 function  TestCollisionX(Gear: PGear; Dir: LongInt): boolean;
    47 function  TestCollisionX(Gear: PGear; Dir: LongInt): boolean;
    48 function  TestCollisionY(Gear: PGear; Dir: LongInt): boolean;
    48 function  TestCollisionY(Gear: PGear; Dir: LongInt): boolean;
    49 
    49 
    50 function  TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt): boolean;
    50 function  TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt; withGear: boolean = true): boolean;
    51 function  TestCollisionYwithXYShift(Gear: PGear; ShiftX, ShiftY: LongInt; Dir: LongInt): boolean;
    51 function  TestCollisionYwithXYShift(Gear: PGear; ShiftX, ShiftY: LongInt; Dir: LongInt; withGear: boolean = true): boolean;
    52 
    52 
    53 function  calcSlopeTangent(Gear: PGear; collisionX, collisionY: LongInt; var outDeltaX, outDeltaY: LongInt; TestWord: LongWord): Boolean;
    53 function  calcSlopeTangent(Gear: PGear; collisionX, collisionY: LongInt; var outDeltaX, outDeltaY: LongInt; TestWord: LongWord): Boolean;
    54 
    54 
    55 implementation
    55 implementation
    56 uses uConsts, uLandGraphics, uVariables, uDebug, uGears;
    56 uses uConsts, uLandGraphics, uVariables, uDebug, uGears;
   289              exit(false)
   289              exit(false)
   290              end
   290              end
   291    end
   291    end
   292 end;
   292 end;
   293 
   293 
   294 function TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt): boolean;
   294 function TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt; withGear: boolean = true): boolean;
   295 begin
   295 begin
   296 Gear^.X:= Gear^.X + ShiftX;
   296 Gear^.X:= Gear^.X + ShiftX;
   297 Gear^.Y:= Gear^.Y + int2hwFloat(ShiftY);
   297 Gear^.Y:= Gear^.Y + int2hwFloat(ShiftY);
   298 TestCollisionXwithXYShift:= TestCollisionXwithGear(Gear, Dir);
   298 if withGear then 
       
   299     TestCollisionXwithXYShift:= TestCollisionXwithGear(Gear, Dir)
       
   300 else TestCollisionXwithXYShift:= TestCollisionX(Gear, Dir);
   299 Gear^.X:= Gear^.X - ShiftX;
   301 Gear^.X:= Gear^.X - ShiftX;
   300 Gear^.Y:= Gear^.Y - int2hwFloat(ShiftY)
   302 Gear^.Y:= Gear^.Y - int2hwFloat(ShiftY)
   301 end;
   303 end;
   302 function TestCollisionX(Gear: PGear; Dir: LongInt): boolean;
   304 function TestCollisionX(Gear: PGear; Dir: LongInt): boolean;
   303 var x, y, i: LongInt;
   305 var x, y, i: LongInt;
   335    until (x > i);
   337    until (x > i);
   336    end;
   338    end;
   337 TestCollisionY:= false
   339 TestCollisionY:= false
   338 end;
   340 end;
   339 
   341 
   340 function TestCollisionYwithXYShift(Gear: PGear; ShiftX, ShiftY: LongInt; Dir: LongInt): boolean;
   342 function TestCollisionYwithXYShift(Gear: PGear; ShiftX, ShiftY: LongInt; Dir: LongInt; withGear: boolean = true): boolean;
   341 begin
   343 begin
   342 Gear^.X:= Gear^.X + int2hwFloat(ShiftX);
   344 Gear^.X:= Gear^.X + int2hwFloat(ShiftX);
   343 Gear^.Y:= Gear^.Y + int2hwFloat(ShiftY);
   345 Gear^.Y:= Gear^.Y + int2hwFloat(ShiftY);
   344 TestCollisionYwithXYShift:= TestCollisionYwithGear(Gear, Dir);
   346 if withGear then TestCollisionYwithXYShift:= TestCollisionYwithGear(Gear, Dir)
       
   347 else TestCollisionYwithXYShift:= TestCollisionY(Gear, Dir);
   345 Gear^.X:= Gear^.X - int2hwFloat(ShiftX);
   348 Gear^.X:= Gear^.X - int2hwFloat(ShiftX);
   346 Gear^.Y:= Gear^.Y - int2hwFloat(ShiftY)
   349 Gear^.Y:= Gear^.Y - int2hwFloat(ShiftY)
   347 end;
   350 end;
   348 
   351 
   349 
   352