freezy / VisualPinball.Engine

:video_game: Visual Pinball Engine for Unity
https://docs.visualpinball.org
GNU General Public License v3.0
396 stars 62 forks source link

Add FlipperNudge to flippers #437

Open Cupiii opened 2 years ago

Cupiii commented 2 years ago

If a ball is on a flipper and the other flipper is pressed, the ball gets a little nudge. This is for example used to slow down the ball, when coming from the inlane.

This is the current code, that is used by @rothbauerw and VPW folks for this

Sub FlipperNudge(Flipper1, Endangle1, EOSNudge1, Flipper2, EndAngle2)
    Dim b, BOT
    BOT = GetBalls

    If Flipper1.currentangle = Endangle1 and EOSNudge1 <> 1 Then
        EOSNudge1 = 1
        'debug.print Flipper1.currentangle &" = "& Endangle1 &"--"& Flipper2.currentangle &" = "& EndAngle2
        If Flipper2.currentangle = EndAngle2 Then 
            For b = 0 to Ubound(BOT)
                If FlipperTrigger(BOT(b).x, BOT(b).y, Flipper1) Then
                    'Debug.Print "ball in flip1. exit"
                    exit Sub
                end If
            Next
            For b = 0 to Ubound(BOT)
                If FlipperTrigger(BOT(b).x, BOT(b).y, Flipper2) Then
                    BOT(b).velx = BOT(b).velx / 1.3
                    BOT(b).vely = BOT(b).vely - 0.5
                end If
            Next
        End If
    Else 
        If Abs(Flipper1.currentangle) > Abs(EndAngle1) + 30 then 
                EOSNudge1 = 0
        end if
    End If
End Sub