equal
deleted
inserted
replaced
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 |