# HG changeset patch # User unc0rr # Date 1273207966 0 # Node ID 69898c6ede14620627199ce94134ccc0653c7ddc # Parent f31225f99a067280ab1cd0498e06ec2414c0bf9d Fix list Z-order bug (not tested) diff -r f31225f99a06 -r 69898c6ede14 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Fri May 07 02:33:42 2010 +0000 +++ b/hedgewars/uGears.pas Fri May 07 04:52:46 2010 +0000 @@ -187,9 +187,6 @@ procedure InsertGearToList(Gear: PGear); var tmp, ptmp: PGear; begin -// this thing is broken, and the bug explains why you sometimes see grenade stuck in hog not behind hedgehog sprite -// when there's only one gear in list, the next one is inserted right after it disregarding its Z value -// TODO: fix the bug tmp:= GearsList; ptmp:= GearsList; while (tmp <> nil) and (tmp^.Z <= Gear^.Z) do @@ -198,15 +195,19 @@ tmp:= tmp^.NextGear end; - if ptmp <> nil then + if ptmp <> tmp then begin Gear^.NextGear:= ptmp^.NextGear; Gear^.PrevGear:= ptmp; if ptmp^.NextGear <> nil then ptmp^.NextGear^.PrevGear:= Gear; ptmp^.NextGear:= Gear end - else - GearsList:= Gear + else + begin + Gear^.NextGear:= GearsList; + if Gear^.NextGear <> nil then Gear^.NextGear^.PrevGear:= Gear; + GearsList:= Gear; + end; end; procedure RemoveGearFromList(Gear: PGear);