๐Ÿ“ฆ sleepyfran / duets

๐Ÿ“„ WaitForLanding.Command.fs ยท 41 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41namespace Duets.Cli.Components.Commands

open Duets.Agents
open Duets.Cli
open Duets.Cli.Components
open Duets.Cli.SceneIndex
open Duets.Cli.Text
open Duets.Cli.Text.Prompts
open Duets.Simulation.Flights.Airport

[<RequireQualifiedAccess>]
module WaitForLandingCommand =
    /// Command that allows the user to wait until the flight finishes.
    let create flight =
        { Name = "wait"
          Description = Command.waitForLandingDescription
          Handler =
            fun _ ->
                let state = State.get ()

                Flight.createInFlightExperiencePrompt state flight
                |> LanguageModel.streamMessage
                |> streamStyled Styles.event

                lineBreak ()
                lineBreak ()
                wait 2000<millisecond>

                Flight.createAirportExperiencePrompt state flight
                |> LanguageModel.streamMessage
                |> streamStyled Styles.event

                lineBreak ()
                wait 1500<millisecond>

                lineBreak ()

                leavePlane (State.get ()) flight |> Effect.applyMultiple

                Scene.WorldAfterMovement }