Verse Library verse

10 Fragment

Races parallel async blocks to handle different completion scenarios before executing unified teardown code.

verse-library/verse-concurrency-async-race-state-machines/10-fragment.verse

# Wait for the cinematic to finish naturally OR for any player to skip it,
# whichever happens first. The loser Await is cancelled.
race:
    block:
        CinematicSequence.StoppedEvent.Await()   # finished on its own
        Logger.Print("Cinematic completed naturally")
    block:
        CinematicCompleted.Await()               # a player skipped it
        Logger.Print("Cinematic was skipped by player")
# Either way, we land here and tear the cinematic down for everyone.

Comments

    Sign in to vote, comment, or suggest an edit. Sign in