hedgewars/uCollisions.pas
changeset 8751 4609823efc94
parent 8744 6c87486fd89b
child 9041 aefe46d64dd9
equal deleted inserted replaced
8749:1b9f026e9fc6 8751:4609823efc94
   137 
   137 
   138 function TestCollisionXwithGear(Gear: PGear; Dir: LongInt): boolean;
   138 function TestCollisionXwithGear(Gear: PGear; Dir: LongInt): boolean;
   139 var x, y, i: LongInt;
   139 var x, y, i: LongInt;
   140 begin
   140 begin
   141 // Special case to emulate the old intersect gear clearing, but with a bit of slop for pixel overlap
   141 // Special case to emulate the old intersect gear clearing, but with a bit of slop for pixel overlap
   142 if (Gear^.CollisionMask = lfCurrentMask) and (Gear^.Kind <> gtHedgehog) and (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Gear <> nil) and
   142 if (Gear^.CollisionMask = lfNotCurrentMask) and (Gear^.Kind <> gtHedgehog) and (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Gear <> nil) and
   143     ((hwRound(Gear^.Hedgehog^.Gear^.X) + Gear^.Hedgehog^.Gear^.Radius + 16 < hwRound(Gear^.X) - Gear^.Radius) or
   143     ((hwRound(Gear^.Hedgehog^.Gear^.X) + Gear^.Hedgehog^.Gear^.Radius + 16 < hwRound(Gear^.X) - Gear^.Radius) or
   144      (hwRound(Gear^.Hedgehog^.Gear^.X) - Gear^.Hedgehog^.Gear^.Radius - 16 > hwRound(Gear^.X) + Gear^.Radius)) then
   144      (hwRound(Gear^.Hedgehog^.Gear^.X) - Gear^.Hedgehog^.Gear^.Radius - 16 > hwRound(Gear^.X) + Gear^.Radius)) then
   145     Gear^.CollisionMask:= $FFFF;
   145     Gear^.CollisionMask:= $FFFF;
   146 
   146 
   147 x:= hwRound(Gear^.X);
   147 x:= hwRound(Gear^.X);
   167 
   167 
   168 function TestCollisionYwithGear(Gear: PGear; Dir: LongInt): Word;
   168 function TestCollisionYwithGear(Gear: PGear; Dir: LongInt): Word;
   169 var x, y, i: LongInt;
   169 var x, y, i: LongInt;
   170 begin
   170 begin
   171 // Special case to emulate the old intersect gear clearing, but with a bit of slop for pixel overlap
   171 // Special case to emulate the old intersect gear clearing, but with a bit of slop for pixel overlap
   172 if (Gear^.CollisionMask = lfCurrentMask) and (Gear^.Kind <> gtHedgehog) and (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Gear <> nil) and
   172 if (Gear^.CollisionMask = lfNotCurrentMask) and (Gear^.Kind <> gtHedgehog) and (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.Gear <> nil) and
   173     ((hwRound(Gear^.Hedgehog^.Gear^.Y) + Gear^.Hedgehog^.Gear^.Radius + 16 < hwRound(Gear^.Y) - Gear^.Radius) or
   173     ((hwRound(Gear^.Hedgehog^.Gear^.Y) + Gear^.Hedgehog^.Gear^.Radius + 16 < hwRound(Gear^.Y) - Gear^.Radius) or
   174      (hwRound(Gear^.Hedgehog^.Gear^.Y) - Gear^.Hedgehog^.Gear^.Radius - 16 > hwRound(Gear^.Y) + Gear^.Radius)) then
   174      (hwRound(Gear^.Hedgehog^.Gear^.Y) - Gear^.Hedgehog^.Gear^.Radius - 16 > hwRound(Gear^.Y) + Gear^.Radius)) then
   175     Gear^.CollisionMask:= $FFFF;
   175     Gear^.CollisionMask:= $FFFF;
   176 
   176 
   177 y:= hwRound(Gear^.Y);
   177 y:= hwRound(Gear^.Y);