# HG changeset patch # User unc0rr # Date 1139165514 0 # Node ID c3eda0c68cd65f2b241957bb255de5796b48d692 # Parent 505691a09dee2b8d1e51312e39e618170466073b No more hedgehogs hung in air diff -r 505691a09dee -r c3eda0c68cd6 hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Sun Feb 05 12:48:35 2006 +0000 +++ b/hedgewars/HHHandlers.inc Sun Feb 05 18:51:54 2006 +0000 @@ -270,6 +270,7 @@ or HHTestCollisionYwithGear(Gear, -1)) then Gear.Y:= Gear.Y - 1; end; if not TestCollisionXwithGear(Gear, Sign(Gear.dX)) then Gear.X:= Gear.X + Gear.dX; + SetAllHHToActive; if not HHTestCollisionYwithGear(Gear, 1) then begin @@ -301,14 +302,14 @@ end end end - end; - SetAllHHToActive + end end end; //////////////////////////////////////////////////////////////////////////////// procedure doStepHedgehogFree(Gear: PGear); begin +//DeleteCI(Gear); if not HHTestCollisionYwithGear(Gear, 1) then begin if (Gear.dY < 0) and HHTestCollisionYwithGear(Gear, -1) then Gear.dY:= 0; @@ -329,11 +330,11 @@ if TestCollisionXwithGear(Gear, Sign(Gear.dX)) then if ((Gear.State and gstFalling) = 0) then if abs(Gear.dX) > 0.01 then - if not TestCollisionXwithXYShift(Gear, 0, -1, Sign(Gear.dX)) then begin Gear.dX:= Gear.dX * 0.9; Gear.Y:= Gear.Y - 1 end else - if not TestCollisionXwithXYShift(Gear, 0, -2, Sign(Gear.dX)) then begin Gear.dX:= Gear.dX * 0.9; Gear.Y:= Gear.Y - 2 end else - if not TestCollisionXwithXYShift(Gear, 0, -3, Sign(Gear.dX)) then begin Gear.dX:= Gear.dX * 0.9; Gear.Y:= Gear.Y - 3 end else - if not TestCollisionXwithXYShift(Gear, 0, -4, Sign(Gear.dX)) then begin Gear.dX:= Gear.dX * 0.9; Gear.Y:= Gear.Y - 4 end else - if not TestCollisionXwithXYShift(Gear, 0, -5, Sign(Gear.dX)) then begin Gear.dX:= Gear.dX * 0.3; Gear.Y:= Gear.Y - 5 end else + if not TestCollisionXwithXYShift(Gear, 0, -1, Sign(Gear.dX)) then begin Gear.dX:= Gear.dX * 0.90; Gear.Y:= Gear.Y - 1 end else + if not TestCollisionXwithXYShift(Gear, 0, -2, Sign(Gear.dX)) then begin Gear.dX:= Gear.dX * 0.88; Gear.Y:= Gear.Y - 2 end else + if not TestCollisionXwithXYShift(Gear, 0, -3, Sign(Gear.dX)) then begin Gear.dX:= Gear.dX * 0.84; Gear.Y:= Gear.Y - 3 end else + if not TestCollisionXwithXYShift(Gear, 0, -4, Sign(Gear.dX)) then begin Gear.dX:= Gear.dX * 0.81; Gear.Y:= Gear.Y - 4 end else + if not TestCollisionXwithXYShift(Gear, 0, -5, Sign(Gear.dX)) then begin Gear.dX:= Gear.dX * 0.78; Gear.Y:= Gear.Y - 5 end else if abs(Gear.dX) > 0.02 then Gear.dX:= -0.5 * Gear.dX else begin Gear.State:= Gear.State and not gstMoving; diff -r 505691a09dee -r c3eda0c68cd6 hedgewars/uCollisions.pas --- a/hedgewars/uCollisions.pas Sun Feb 05 12:48:35 2006 +0000 +++ b/hedgewars/uCollisions.pas Sun Feb 05 18:51:54 2006 +0000 @@ -77,7 +77,7 @@ X:= round(Gear.X); Y:= round(Gear.Y); Radius:= Gear.Radius; - FillRoundInLand(X, Y, Radius, $FF); + FillRoundInLand(X, Y, Radius-1, $FF); cGear:= Gear end; Gear.CollIndex:= Count; @@ -88,7 +88,7 @@ begin if Gear.CollIndex < Count then begin - with cinfos[Gear.CollIndex] do FillRoundInLand(X, Y, Radius, 0); + with cinfos[Gear.CollIndex] do FillRoundInLand(X, Y, Radius-1, 0); cinfos[Gear.CollIndex]:= cinfos[Pred(Count)]; cinfos[Gear.CollIndex].cGear.CollIndex:= Gear.CollIndex; Gear.CollIndex:= High(Longword);