hedgewars/uGearsHandlersMess.pas
changeset 10508 1a91c1fcba0d
parent 10494 0eb97cf4c78e
child 10510 9329dab04490
equal deleted inserted replaced
10507:ed5df9cd251f 10508:1a91c1fcba0d
   308     isFalling: boolean;
   308     isFalling: boolean;
   309     //tmp: QWord;
   309     //tmp: QWord;
   310     tX, tdX, tdY: hwFloat;
   310     tX, tdX, tdY: hwFloat;
   311     collV, collH, gX, gY: LongInt;
   311     collV, collH, gX, gY: LongInt;
   312     land, xland: word;
   312     land, xland: word;
   313     boing: PVisualGear;
       
   314 begin
   313 begin
   315     tX:= Gear^.X;
   314     tX:= Gear^.X;
   316     gX:= hwRound(Gear^.X);
   315     gX:= hwRound(Gear^.X);
   317     gY:= hwRound(Gear^.Y);
   316     gY:= hwRound(Gear^.Y);
   318     if (Gear^.Kind <> gtGenericFaller) and WorldWrap(Gear) and (WorldEdge = weWrap) and (Gear^.AdvBounce <> 0) and
   317     if (Gear^.Kind <> gtGenericFaller) and WorldWrap(Gear) and (WorldEdge = weWrap) and (Gear^.AdvBounce <> 0) and
   465         Gear^.State := Gear^.State or gstCollision;
   464         Gear^.State := Gear^.State or gstCollision;
   466 
   465 
   467     if ((xland or land) and lfBouncy <> 0) and (Gear^.Radius >= 3) and
   466     if ((xland or land) and lfBouncy <> 0) and (Gear^.Radius >= 3) and
   468        ((Gear^.dX.QWordValue > _0_15.QWordValue) or (Gear^.dY.QWordValue > _0_15.QWordValue)) then
   467        ((Gear^.dX.QWordValue > _0_15.QWordValue) or (Gear^.dY.QWordValue > _0_15.QWordValue)) then
   469         begin
   468         begin
   470         boing:= AddVisualGear(gX, gY, vgtStraightShot, 0, false, 1);
   469         AddBounceEffectForGear(Gear);
   471         if boing <> nil then
       
   472             with boing^ do
       
   473                 begin
       
   474                 Angle:= random(360);
       
   475                 dx:= 0;
       
   476                 dy:= 0;
       
   477                 FrameTicks:= 200;
       
   478                 tX:= _0;
       
   479                 tX.QWordValue:= Gear^.dY.QWordValue + Gear^.dX.QWordValue;
       
   480                 Scale:= hwFloat2Float(Gear^.Density * tX) / 1.5;
       
   481                 State:= ord(sprBoing)
       
   482                 end;
       
   483         PlaySound(sndMelonImpact, true)
       
   484         end
   470         end
   485     else if (Gear^.nImpactSounds > 0) and
   471     else if (Gear^.nImpactSounds > 0) and
   486         (Gear^.State and gstCollision <> 0) and
   472         (Gear^.State and gstCollision <> 0) and
   487         (((Gear^.Kind <> gtMine) and (Gear^.Damage <> 0)) or (Gear^.State and gstMoving <> 0)) and
   473         (((Gear^.Kind <> gtMine) and (Gear^.Damage <> 0)) or (Gear^.State and gstMoving <> 0)) and
   488         (((Gear^.Radius < 3) and (Gear^.dY < -_0_1)) or
   474         (((Gear^.Radius < 3) and (Gear^.dY < -_0_1)) or