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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160[<RequireQualifiedAccess>]
module Duets.Cli.Text.Rehearsal
open Duets.Common
let manageDescription =
"Opens the band management menu which allows you to hire new members or fire current ones"
let composePrompt = "What do you want to compose?"
let composeSong = "Compose new song"
let composeSongTitlePrompt =
$"""Creating a new song, how are you going to {Styles.highlight "name"} it?"""
let composeSongLengthPrompt =
$"""How {Styles.highlight "long"} is it going to be? (format {Styles.information "minutes:seconds"})"""
let composeSongGenrePrompt =
$"""What {Styles.highlight "genre"} will the song have? Keep in mind that selecting a different genre that the main one of your band might reduce quality"""
let composeSongVocalStylePrompt =
$"""What {Styles.highlight "vocal style"} should it have?"""
let composeSongConfirmation title =
Styles.success
$"""Your band has started working on the song "{title}". You can finish or improve it through the compose section in the rehearsal room"""
let composeSongErrorNameTooShort =
Styles.error "The name of the song is too short"
let composeSongErrorNameTooLong =
Styles.error "The name of the song is too long"
let composeSongErrorLengthTooShort =
Styles.error "Songs can't be less than 20 seconds long"
let composeSongErrorLengthTooLong =
Styles.error "Songs can't be more than 30 minutes long"
let composeSongProgressBrainstorming = Styles.progress "Brainstorming..."
let composeSongProgressConfiguringReverb =
Styles.progress "Configuring reverb..."
let composeSongProgressTryingChords =
Styles.progress "Trying out some chords..."
let improveSong = "Improve an unfinished song"
let improveSongSelection = "Which song do you want to improve?"
let improveSongCanBeFurtherImproved (previousQuality, currentQuality) =
Styles.success
$"You've improved the song. It improved from {previousQuality} to {currentQuality}"
let improveSongReachedMaxQuality =
Styles.success
$"""Your band has decided that the song does not need any further improvements. You can add it to the band's repertoire by using {Styles.information "finish song"}"""
let improveSongProgressAddingSomeMelodies =
Styles.progress "Adding some melodies..."
let improveSongProgressPlayingFoosball = Styles.progress "Playing foosball..."
let improveSongProgressModifyingChordsFromAnotherSong =
Styles.progress
$"""{Styles.crossed "Copying"} Modifying chords from another song"""
let finishSong = "Finish an unfinished song"
let finishSongSelection =
$"""Which song do you want to finish? {Styles.danger "You won't be able to improve the song after this"}"""
let finishSongFinished (name, quality) =
Styles.success
$"""Your band finished the song "{name}". The result quality is {quality}"""
let discardSong = "Discard an unfinished song"
let discardSongSelection = Styles.danger "Which song do you want to discard?"
let discardSongDiscarded name =
Styles.error $"Your band decided to stop working on {name}"
let practiceSong = "Practice a finished song"
let practiceSongSelection = "Which song do you want to practice?"
let practiceSongItemDescription name practiceLevel =
$"""{Styles.song name} (Practice level: {Styles.Level.from practiceLevel}%%)"""
let practiceSongImproved name practiceLevel =
$"Your band improved its practice of {name} to {Styles.Level.from practiceLevel}%%"
let practiceSongAlreadyImprovedToMax name =
$"Your band already knows {Styles.song name} perfectly"
let practiceSongProgressLosingTime = Styles.progress "Losing time..."
let practiceSongProgressTryingSoloOnceMore =
Styles.progress "Trying that solo once more..."
let practiceSongProgressGivingUp = Styles.progress "Giving up..."
let hireMemberRolePrompt = "What role are you looking to hire?"
let hireMemberCharacterDescription name gender =
$"{Styles.highlight name} is interested in joining your band. {Generic.subjectPronounForGender gender} {Generic.verbConjugationForGender Generic.Have gender |> String.lowercase} the following skills:"
let hireMemberConfirmation gender =
$"Do you want to hire {Generic.objectPronounForGender gender}?"
let hireMemberHired = Styles.success "You just hired a new member!"
let hireMemberContinueConfirmation =
"Do you want to continue looking for members?"
let fireMemberListItem (name, role) =
$"{name} ({Generic.instrumentName role})"
let fireMemberNoMembersToFire =
Styles.error "You are the only member of the band, you can't fire yourself!"
let fireMemberPrompt = $"""Who do you want to {Styles.danger "fire"}?"""
let fireMemberConfirmation name =
Styles.danger $"Are you sure you want to fire {name}?"
let fireMemberConfirmed name = Styles.danger $"You fired {name}"
let memberListCurrentTitle = Styles.title "Current members"
let memberListNameHeader = Styles.header "Name"
let memberListRoleHeader = Styles.header "Role"
let memberListSinceHeader = Styles.header "Since"
let memberListUntilHeader = Styles.header "Until"
let memberListPastTitle = Styles.title "Past members"
let memberListName = Styles.person
let memberListRole = Generic.roleName
let memberListSince = Date.simple
let memberListUntil = Date.simple
let managementTitle = "Management"
let managementPrompt = "What do you want to to?"
let managementHireMember = "Hire a new member"
let managementFireMember = "Fire a member"
let managementMemberList = "List members"