# HG changeset patch # User alfadur # Date 1594422722 -10800 # Node ID e0cdb6ae88ab2e449389f3db1fce2516b89649d6 # Parent 7a4b719ac611a53b24bafbeba9cb12a45bf63ba5 add sentry deployment step diff -r 7a4b719ac611 -r e0cdb6ae88ab hedgewars/uGears.pas --- a/hedgewars/uGears.pas Sat Jul 11 01:09:56 2020 +0300 +++ b/hedgewars/uGears.pas Sat Jul 11 02:12:02 2020 +0300 @@ -814,7 +814,7 @@ end; for i := 0 to min(count, positionsCount) - 1 do - AddGear(positions[i].X, positions[i].Y - cHHRadius, gtSentry, 0, _0, _0, 5000); + AddGear(positions[i].X, positions[i].Y - cHHRadius, gtSentry, 0, _0, _0, 0); end; procedure AddMiscGears; @@ -1520,7 +1520,7 @@ @doStepCreeper, @doStepMinigun, @doStepMinigunBullet, - @doStepSentry); + @doStepSentryDeploy); begin doStepHandlers:= handlers; diff -r 7a4b719ac611 -r e0cdb6ae88ab hedgewars/uGearsHandlersMess.pas --- a/hedgewars/uGearsHandlersMess.pas Sat Jul 11 01:09:56 2020 +0300 +++ b/hedgewars/uGearsHandlersMess.pas Sat Jul 11 02:12:02 2020 +0300 @@ -141,7 +141,7 @@ procedure doStepMinigunWork(Gear: PGear); procedure doStepMinigun(Gear: PGear); procedure doStepMinigunBullet(Gear: PGear); -procedure doStepSentry(Gear: PGear); +procedure doStepSentryDeploy(Gear: PGear); var upd: Longword; @@ -7286,7 +7286,7 @@ end; end; -procedure doStepSentry(Gear: PGear); +procedure doStepSentryLand(Gear: PGear); var HHGear, bullet: PGear; distX, distY, invDistance: HwFloat; const sentry_Idle = 0; @@ -7471,4 +7471,20 @@ end end; +procedure doStepSentryDeploy(Gear: PGear); +begin + Gear^.Tag := -1; + if Gear^.dY.isNegative or (TestCollisionYwithGear(Gear, 1) = 0) then + doStepFallingGear(Gear) + else + begin + if Gear^.Timer > 0 then dec(Gear^.Timer); + if Gear^.Timer = 0 then + begin + Gear^.Tag := 0; + Gear^.doStep := @doStepSentryLand; + end; + end; +end; + end. diff -r 7a4b719ac611 -r e0cdb6ae88ab hedgewars/uGearsList.pas --- a/hedgewars/uGearsList.pas Sat Jul 11 01:09:56 2020 +0300 +++ b/hedgewars/uGearsList.pas Sat Jul 11 02:12:02 2020 +0300 @@ -842,7 +842,7 @@ gear^.Friction:= _0_93; gear^.Elasticity:= _0_05; gear^.Tag:= 0; - gear^.Timer:= 500; + gear^.Timer:= 1000; gear^.WDTimer:= 0; end; gtGenericFaller:begin diff -r 7a4b719ac611 -r e0cdb6ae88ab hedgewars/uGearsRender.pas --- a/hedgewars/uGearsRender.pas Sat Jul 11 01:09:56 2020 +0300 +++ b/hedgewars/uGearsRender.pas Sat Jul 11 02:12:02 2020 +0300 @@ -1745,7 +1745,8 @@ else DrawSpriteRotatedF(sprCreeper, x, y, 1, hwRound(SignAs(_1,Gear^.dX)), 0); gtSentry: begin DrawSpriteRotated(sprSentry, x, y, hwSign(Gear^.dX), 0); - DrawCircle(x, y, Gear^.Radius, 1, 255, 0, 0, 255); + if Gear^.Tag >= 0 then + DrawCircle(x, y, Gear^.Radius, 1, 255, 0, 0, 255); end; gtGenericFaller: begin // DEBUG: draw gtGenericFaller