Grotto Story further implemented

dev
Nadine Ganz 2024-12-04 17:23:07 +01:00
parent 286ee2a59c
commit 01b3c4bf6b
3 changed files with 504888 additions and 192161 deletions

View File

@ -1,25 +1,167 @@
Tree("Root") {
Composite(Sequence) {
BTC.InitializeSpeechManager()
//BTC.SetSpeechRecognitionLanguage("it-IT")
RunTree("32_Grotto_Story_B_Grotto_Intro")
//RunTree("32_Grotto_Kueche_Intro")
RunTree("32_Grotto_Kueche_Zwiebeln_schneiden")
//RunTree("32_Grotto_Kueche_alles_gefunden")
//RunTree("32_Grotto_Kueche_Kochen_Anzahl")
//RunTree("32_Grotto_Kueche_Zusammen_Kochen")
//RunTree("32_Grotto_Story_B_Grotto")
}
}
Tree("32_Grotto_Story_B_Grotto") {
// --- Story B Grotto - Antwort Reise ---
Tree("32_Grotto_Story_B_Grotto_Intro") {
Composite(Sequence) {
BTC.SynthesizeText("Ich möchte nirgends sonst auf der Welt leben. Möchtest du denn mit Francesca in der Küche etwas aushelfen oder wartest du im Garten auf sie?")
BTC.SynthesizeText("So, da wären wir. Willkommen in Nonnas Grotto! Ich mag die Busfahrt hier hoch. Und ich mag auch diese Aussicht. Hast du schon ein paar Fotos gemacht?")
BTC.SpeechOutputEnded()
BTC.Wait(5)
BTC.SynthesizeText("Hast du gewusst, dass auch im Kanton Graubünden italienisch gesprochen wird?")
BTC.SpeechOutputEnded()
//BTC.SetSpeechRecognitionLanguage("it-IT")
//BTC.AddPossbileSpeechIntent("Story_B_Grotto.Nachfrage_Nonna_Grotto.2", "Laiuto in cucina.")
//BTC.AddPossbileSpeechIntent("Story_B_Grotto.Nachfrage_Nonna_Grotto.4", "Preferisco aspettarla nella sala del grotto. Non so cucinare.")
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Intro.3")
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Intro.4")
BTC.StartSpeechIntentRecognition()
Composite(Race) {
// -- Race 1: User sagt etwas
Composite(Selector) {
Composite(Sequence) {
BTC.UserStartedSpeechInput()
BTC.SpeechIntentRecognized()
BTC.ClearPossbileSpeechIntents()
}
// Intent nicht erkannt
Composite(Sequence) {
BTC.ClearPossbileSpeechIntents()
}
}
// -- Race 2: User sagt nichts
Composite(Sequence) {
BTC.Wait(5)
BTC.CompareUserSpeechInputStarted(false)
BTC.StopSpeechIntentRecognition()
BTC.ClearPossbileSpeechIntents()
}
}
BTC.SynthesizeText("Sogar in 4 Tälern: hier im Val Mesolcina, im Val Calanca, im Val Bregaglio und im Valposchiavo. Oh, die Nonna ruft an!")
BTC.SpeechOutputEnded()
// --- Story B Grotto - Telefonat ---
BTC.SynthesizeText("Hallo Nonna.")
BTC.SpeechOutputEnded()
BTC.SynthesizeText("Hallo Francesca. Bist du schon angekommen?")
BTC.SpeechOutputEnded()
BTC.SynthesizeText("Ja, wir sind soeben angekommen. Ich bin nicht alleine heute, ich habe noch jemanden mitgebracht.")
BTC.SpeechOutputEnded()
BTC.SynthesizeText("Oh, wie schön, wer ist es denn?")
BTC.SpeechOutputEnded()
BTC.SynthesizeText("Stell dich doch gleich selbst vor.")
BTC.SpeechOutputEnded()
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Telefonat.6")
BTC.StartSpeechIntentRecognition()
Composite(Race) {
// -- Race 1: User sagt etwas
Composite(Selector) {
Composite(Sequence) {
BTC.UserStartedSpeechInput()
BTC.SpeechIntentRecognized()
BTC.ClearPossbileSpeechIntents()
}
// Intent nicht erkannt
Composite(Sequence) {
BTC.ClearPossbileSpeechIntents()
}
}
// -- Race 2: User sagt nichts
Composite(Sequence) {
BTC.Wait(5)
BTC.CompareUserSpeechInputStarted(false)
BTC.StopSpeechIntentRecognition()
BTC.ClearPossbileSpeechIntents()
}
}
// --- Story B Grotto - Begruessung ---
BTC.SynthesizeText("Hallo, willkommen im Grotto. Wie war denn die Reise?")
BTC.SpeechOutputEnded()
// --- Story B Grotto - Antwort_Reise ---
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Reise.1")
BTC.StartSpeechIntentRecognition()
Composite(Race) {
// -- Race 1: User sagt etwas
Composite(Selector) {
Composite(Sequence) {
BTC.UserStartedSpeechInput()
BTC.SpeechIntentRecognized()
BTC.ClearPossbileSpeechIntents()
}
// Intent nicht erkannt
Composite(Sequence) {
BTC.ClearPossbileSpeechIntents()
}
}
// -- Race 2: User sagt nichts
Composite(Sequence) {
BTC.Wait(5)
BTC.CompareUserSpeechInputStarted(false)
BTC.StopSpeechIntentRecognition()
BTC.ClearPossbileSpeechIntents()
}
}
BTC.SynthesizeText("Wie gefällt dir denn das Misox?")
BTC.SpeechOutputEnded()
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Reise.5")
BTC.StartSpeechIntentRecognition()
Composite(Race) {
// -- Race 1: User sagt etwas
Composite(Selector) {
Composite(Sequence) {
BTC.UserStartedSpeechInput()
BTC.SpeechIntentRecognized()
BTC.ClearPossbileSpeechIntents()
}
// Intent nicht erkannt
Composite(Sequence) {
BTC.ClearPossbileSpeechIntents()
}
}
// -- Race 2: User sagt nichts
Composite(Sequence) {
BTC.Wait(5)
BTC.CompareUserSpeechInputStarted(false)
BTC.StopSpeechIntentRecognition()
BTC.ClearPossbileSpeechIntents()
}
}
BTC.SynthesizeText("Ich möchte nirgends sonst auf der Welt leben. Möchtest du denn mit Francesca in der Küche etwas aushelfen oder wartest du im Garten auf sie?")
BTC.SpeechOutputEnded()
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Nachfrage_Nonna_Grotto.2")
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Nachfrage_Nonna_Grotto.4")
@ -58,7 +200,8 @@ Tree("32_Grotto_Story_B_Grotto") {
BTC.SpeechOutputEnded()
BTC.StartSpeechIntentRecognition()
// Fallback fehlt, wenn nichts gesagt wird
Composite(Race) {
Composite(Sequence) {
BTC.UserStartedSpeechInput()
BTC.SpeechIntentRecognized()
@ -76,8 +219,46 @@ Tree("32_Grotto_Story_B_Grotto") {
}
}
// Fallback 2mal nicht verstanden: Button klick
Composite(Sequence) {
BTC.Wait(5)
BTC.CompareUserSpeechInputStarted(false)
BTC.AbortSpeechEventListener()
BTC.StopSpeechIntentRecognition()
BTC.ClearPossbileSpeechIntents()
BTC.CompareUserSpeechInputStarted(true)
}
}
}
// Selector 3: Fallback Button
Composite(Sequence) {
Composite(Marathon) {
BTC.Set("TextMeshPro.HANDMENU.Option1Button", "text", "Küche")
BTC.Show("GO.HANDMENU.Option1Button")
BTC.Set("TextMeshPro.HANDMENU.Option2Button", "text", "Garten")
BTC.Show("GO.HANDMENU.Option2Button")
}
Composite(Race) {
Composite(Sequence) {
// Kueche
BTC.Run("NamedEventTrigger.HANDMENU.Option1Button")
BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option2Button")
BTC.Hide("GO.HANDMENU.Option1Button")
BTC.Hide("GO.HANDMENU.Option2Button")
RunTree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Kueche")
}
Composite(Sequence) {
// Garten
BTC.Run("NamedEventTrigger.HANDMENU.Option2Button")
BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option1Button")
BTC.Hide("GO.HANDMENU.Option1Button")
BTC.Hide("GO.HANDMENU.Option2Button")
RunTree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Grotto")
}
}
}
}
}
@ -102,7 +283,6 @@ Tree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Kueche") {
BTC.SynthesizeText("Oh, das ist wunderbar, vielen Dank! Anschliessend seid ihr selbstverständlich zum Essen eingeladen.")
BTC.SpeechOutputEnded()
//BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Kueche.2", "Tante grazie, è molto gentile da parte Sua (o altra risposta).")
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Kueche.2")
BTC.StartSpeechIntentRecognition()
@ -131,7 +311,40 @@ Tree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Kueche") {
}
// --- Story B Grotto - Outro ---
// ...
BTC.SynthesizeText("Francesca, der Risotto sollte gekocht werden, du weisst ja, was zu tun ist, oder? Das Rezept habe ich euch hingelegt. Also dann, wir sehen uns später sicher noch. Ich bin ja so froh, dass ihr zwei eingesprungen seid! Ciao!")
BTC.SpeechOutputEnded()
BTC.SynthesizeText("Ciao Nonna.")
BTC.SpeechOutputEnded()
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Outro.3")
BTC.StartSpeechIntentRecognition()
Composite(Race) {
// -- Race 1: User sagt etwas
Composite(Selector) {
Composite(Sequence) {
BTC.UserStartedSpeechInput()
BTC.SpeechIntentRecognized()
BTC.ClearPossbileSpeechIntents()
}
// Intent nicht erkannt
Composite(Sequence) {
BTC.ClearPossbileSpeechIntents()
}
}
// -- Race 2: User sagt nichts
Composite(Sequence) {
BTC.Wait(5)
BTC.CompareUserSpeechInputStarted(false)
BTC.StopSpeechIntentRecognition()
BTC.ClearPossbileSpeechIntents()
}
}
RunTree("32_Grotto_Kueche_Intro")
}
}
@ -141,7 +354,6 @@ Tree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Grotto") {
BTC.SynthesizeText("Okay gut, mach es dir gemütlich. Hast du etwas zum Lesen dabei?")
BTC.SpeechOutputEnded()
//BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Grotto.2", "Sì, grazie, ho qualcosa con me (o un'altra risposta)")
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Grotto.2")
BTC.StartSpeechIntentRecognition()
@ -172,7 +384,6 @@ Tree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Grotto") {
BTC.SynthesizeText("Prima, viel Spass noch und dann guten Appetit!")
BTC.SpeechOutputEnded()
//BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Grotto.6", "Grazie nonna, ciao!")
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Grotto.6")
BTC.StartSpeechIntentRecognition()
@ -183,13 +394,11 @@ Tree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Grotto") {
BTC.UserStartedSpeechInput()
BTC.SpeechIntentRecognized()
BTC.ClearPossbileSpeechIntents()
//BTC.GetKeyDown("Return")
}
// Intent nicht erkannt
Composite(Sequence) {
BTC.ClearPossbileSpeechIntents()
//BTC.GetKeyDown("Return")
}
}
@ -201,6 +410,48 @@ Tree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Grotto") {
BTC.ClearPossbileSpeechIntents()
}
}
BTC.SynthesizeText("Wenn du magst, kannst du in der Zwischenzeit auch meine Fotos aus dem Bergell anschauen, die ich kürzlich gemacht habe. Auf dem Tisch ist eine VR-Brille. Damit kannst du die Bilder in 3D anschauen.")
BTC.SpeechOutputEnded()
// Option VR Brille Bilder und Buch anschauen fehlt
BTC.Wait(10)
// Szenenuebergang fehlt
BTC.SynthesizeText("So, das war anstrengend, aber ich glaube, der Risotto ist gut geworden. Was hast du in dieser Zeit gemacht?")
BTC.SpeechOutputEnded()
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Grotto.11")
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Grotto.12")
BTC.StartSpeechIntentRecognition()
Composite(Race) {
// -- Race 1: User sagt etwas
Composite(Selector) {
Composite(Sequence) {
BTC.UserStartedSpeechInput()
BTC.SpeechIntentRecognized()
BTC.ClearPossbileSpeechIntents()
}
// Intent nicht erkannt
Composite(Sequence) {
BTC.ClearPossbileSpeechIntents()
}
}
// -- Race 2: User sagt nichts
Composite(Sequence) {
BTC.Wait(5)
BTC.CompareUserSpeechInputStarted(false)
BTC.StopSpeechIntentRecognition()
BTC.ClearPossbileSpeechIntents()
}
}
BTC.SynthesizeText("Das klingt gut. So, nun habe ich aber Hunger. Lass uns was bestellen.")
BTC.SpeechOutputEnded()
RunTree("32_Grotto_Im_Grotto_Essen_Intro")
}
}
@ -210,43 +461,78 @@ Tree("32_Grotto_Kueche_Intro") {
BTC.Run("AudioSource.AUDIO.Kueche1FIntro")
// Schuerze greifen
//BTC.GetKeyDown("Return")
BTC.Run("GO/NamedGrabEvent.INTERACTABLES.Schuerze")
BTC.Hide("GO/NamedGrabEvent.INTERACTABLES.Schuerze")
//BTC.Run("AudioSource.AUDIO.Kueche2FIntro")
BTC.SynthesizeText("Lies mir bitte das Rezept vor.")
BTC.SpeechOutputEnded()
// Rezept vorlesen: Button Klick
BTC.Set("TextMeshPro.HANDMENU.Option1Button", "text", "Rezept vorlesen")
BTC.Show("GO.HANDMENU.Option1Button")
BTC.AddPossbileSpeechIntent("Kueche.Intro.3")
BTC.StartSpeechIntentRecognition()
Composite(Race) {
// -- Race 1: User sagt etwas
Composite(Selector) {
Composite(Sequence) {
// auf Button klicken
BTC.Run("NamedEventTrigger.HANDMENU.Option1Button")
//BTC.GetKeyDown("Return")
BTC.UserStartedSpeechInput()
BTC.SpeechIntentRecognized()
BTC.ClearPossbileSpeechIntents()
}
// Intent nicht erkannt
Composite(Sequence) {
BTC.ClearPossbileSpeechIntents()
}
}
// -- Race 2: User sagt nichts
Composite(Sequence) {
// keine Reaktion
BTC.Wait(5)
BTC.CompareUserSpeechInputStarted(false)
BTC.AbortSpeechEventListener()
BTC.StopSpeechIntentRecognition()
BTC.SynthesizeText("Was brauchen wir? Bitte lies mir das Rezept vor.")
BTC.SpeechOutputEnded()
BTC.Run("NamedEventTrigger.HANDMENU.Option1Button")
}
}
BTC.Hide("GO.HANDMENU.Option1Button")
BTC.StartSpeechIntentRecognition()
Composite(Race) {
// -- Race 1: User sagt etwas
Composite(Selector) {
Composite(Sequence) {
BTC.UserStartedSpeechInput()
BTC.SpeechIntentRecognized()
BTC.ClearPossbileSpeechIntents()
}
// Intent nicht erkannt
Composite(Sequence) {
BTC.ClearPossbileSpeechIntents()
}
}
// -- Race 2: User sagt nichts
Composite(Sequence) {
BTC.Wait(5)
BTC.CompareUserSpeechInputStarted(false)
BTC.AbortSpeechEventListener()
BTC.StopSpeechIntentRecognition()
BTC.ClearPossbileSpeechIntents()
}
}
}
}
BTC.Run("AudioSource.AUDIO.Kueche3FIntro")
// Pilze leuchten
BTC.Enable("NamedGrabEvent/NamedOutline.INTERACTABLES.Steinpilze")
// momentan nur 1 Pilz
BTC.Enable("NamedOutline.INTERACTABLES.Pilz01")
Composite(Race) {
Composite(Sequence) {
// Pilze ins Wasser Glas legen
BTC.Run("NamedGrabEvent/NamedOutline.INTERACTABLES.Steinpilze")
BTC.Set("Collider.INTERACTABLES.GlassWasserTrigger", "otherTag", "Steinpilze")
BTC.Run("Collider.INTERACTABLES.GlassWasserTrigger")
}
@ -256,12 +542,11 @@ Tree("32_Grotto_Kueche_Intro") {
// --- Kueche - Steinpilze Hilfe ---
BTC.Run("AudioSource.AUDIO.Kueche1FSteinpilze")
// Pilze ins Wasser Glas legen
BTC.Run("NamedGrabEvent/NamedOutline.INTERACTABLES.Steinpilze")
BTC.Set("Collider.INTERACTABLES.GlassWasserTrigger", "otherTag", "Steinpilze")
BTC.Run("Collider.INTERACTABLES.GlassWasserTrigger")
}
}
BTC.Disable("NamedGrabEvent/NamedOutline.INTERACTABLES.Steinpilze")
BTC.Disable("NamedOutline.INTERACTABLES.Pilz01")
}
}
@ -756,6 +1041,10 @@ Tree("32_Grotto_Kueche_Parmigiano") {
}
}
Tree("32_Grotto_Im_Grotto_Essen_Intro") {
}
Tree("32_Grotto_Kueche_Hide") {
Composite(Sequence) {
// Go to scene 3.5 Slideshow

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,45 @@
{
"intents": [
{
"intentID": "Story_B_Grotto.Intro.3",
"intentSentences": [
"Ja."
]
},
{
"intentID": "Story_B_Grotto.Intro.4",
"intentSentences": [
"Nein."
]
},
{
"intentID": "Story_B_Grotto.Telefonat.6",
"intentSentences": [
"Hallo, ich bin xy.",
"Hallo, ich heisse xy."
]
},
{
"intentID": "Story_B_Grotto.Antwort_Reise.1",
"intentSentences": [
"Gut.",
"Super.",
"Die Reise war toll.",
"Die Reise war gut.",
"Die Reise war super.",
"Toll."
]
},
{
"intentID": "Story_B_Grotto.Antwort_Reise.5",
"intentSentences": [
"Gut.",
"Super.",
"Das Misox ist toll.",
"Das Misox ist sch\u00f6n.",
"Gef\u00e4llt mir sehr gut."
]
},
{
"intentID": "Story_B_Grotto.Nachfrage_Nonna_Grotto.2",
"intentSentences": [
@ -35,6 +75,30 @@
"Danke!"
]
},
{
"intentID": "Story_B_Grotto.Antwort_Nonna_Grotto.11",
"intentSentences": [
"Ich habe gelesen."
]
},
{
"intentID": "Story_B_Grotto.Antwort_Nonna_Grotto.12",
"intentSentences": [
"Ich habe die Fotos aus dem Bergell angeschaut."
]
},
{
"intentID": "Story_B_Grotto.Outro.3",
"intentSentences": [
"Ciao."
]
},
{
"intentID": "Kueche.Intro.3",
"intentSentences": [
"Risottorezept."
]
},
{
"intentID": "Kueche.alles_gefunden.4",
"intentSentences": [