diff -r a9a5ce1d9f23 -r c6dff591f564 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Tue Feb 23 03:57:27 2010 +0000 +++ b/hedgewars/uGears.pas Tue Feb 23 15:41:37 2010 +0000 @@ -847,8 +847,10 @@ hx, hy, cx, cy, tx, ty, sx, sy, m: LongInt; // hedgehog, crosshair, temp, sprite, direction lx, ly, dx, dy, ax, ay, aAngle, dAngle, hAngle: real; // laser, change defaultPos, HatVisible: boolean; - VertexBuffer: array [0..1] of TVertex2f; + VertexBuffer: array [0..1] of TVertex2f; + stepSounds: boolean; begin + if PHedgehog(Gear^.Hedgehog)^.Unplaced then exit; m:= 1; if ((Gear^.State and gstHHHJump) <> 0) and not cArtillery then m:= -1; @@ -860,6 +862,7 @@ defaultPos:= true; HatVisible:= false; +stepSounds:= false; sx:= hwRound(Gear^.X) + 1 + WorldDx; sy:= hwRound(Gear^.Y) - 3 + WorldDy; @@ -1025,6 +1028,7 @@ 3, PHedgehog(Gear^.Hedgehog)^.visStepPos div 2, 0); + stepSounds:= true; defaultPos:= false end; gtShover: DrawRotated(sprHandBaseball, hx, hy, hwSign(Gear^.dX), aangle + 180); @@ -1121,6 +1125,7 @@ 0, PHedgehog(Gear^.Hedgehog)^.visStepPos div 2, 0); + stepSounds:= true; defaultPos:= false; HatVisible:= true end @@ -1363,6 +1368,14 @@ DrawSprite(sprVampiric, sx - 24, sy - 24, 0); glColor4f(1, 1, 1, 1); end; + + if stepSounds and (Gear^.SoundChannel < 0) then + Gear^.SoundChannel:= LoopSound(sndSteps) + else if not stepSounds and (Gear^.SoundChannel > -1) then + begin + StopSound(Gear^.SoundChannel); + Gear^.SoundChannel:= -1; + end; end; procedure DrawRopeLinesRQ(Gear: PGear);