1175 lines
45 KiB
Plaintext
1175 lines
45 KiB
Plaintext
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")
|
|
|
|
|
|
}
|
|
}
|
|
|
|
Tree("32_Grotto_Story_B_Grotto_Intro") {
|
|
Composite(Sequence) {
|
|
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.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")
|
|
BTC.StartSpeechIntentRecognition()
|
|
|
|
Composite(Race) {
|
|
// -- Race 1: User sagt etwas
|
|
Composite(Sequence) {
|
|
BTC.UserStartedSpeechInput()
|
|
|
|
Composite(Selector) {
|
|
// -- Selector 1: Intent erkannt
|
|
Composite(Sequence) {
|
|
BTC.SpeechIntentRecognized()
|
|
|
|
// Intent erkannt
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
BTC.CompareIntentID("Story_B_Grotto.Nachfrage_Nonna_Grotto.2")
|
|
BTC.ClearPossbileSpeechIntents()
|
|
RunTree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Kueche")
|
|
}
|
|
Composite(Sequence) {
|
|
BTC.CompareIntentID("Story_B_Grotto.Nachfrage_Nonna_Grotto.4")
|
|
BTC.ClearPossbileSpeechIntents()
|
|
RunTree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Grotto")
|
|
}
|
|
}
|
|
}
|
|
|
|
// -- Selector 2: Intent nicht erkannt
|
|
Composite(Sequence) {
|
|
// --- Story B Grotto - Nachfrage Nonna Grotto ---
|
|
// SpeechIntentRecognized Failed: kein Intent erkannt
|
|
BTC.SynthesizeText("Was wolltest du sagen? Ich habe es nicht verstanden. Möchtest du mithelfen oder lieber im Garten warten?")
|
|
BTC.SpeechOutputEnded()
|
|
|
|
BTC.StartSpeechIntentRecognition()
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
BTC.UserStartedSpeechInput()
|
|
BTC.SpeechIntentRecognized()
|
|
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
BTC.CompareIntentID("Story_B_Grotto.Nachfrage_Nonna_Grotto.2")
|
|
BTC.ClearPossbileSpeechIntents()
|
|
RunTree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Kueche")
|
|
}
|
|
Composite(Sequence) {
|
|
BTC.CompareIntentID("Story_B_Grotto.Nachfrage_Nonna_Grotto.4")
|
|
BTC.ClearPossbileSpeechIntents()
|
|
RunTree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Grotto")
|
|
}
|
|
}
|
|
}
|
|
|
|
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")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// -- Race 2: User sagt nichts
|
|
Composite(Sequence) {
|
|
BTC.Wait(5)
|
|
BTC.CompareUserSpeechInputStarted(false)
|
|
BTC.AbortSpeechEventListener()
|
|
BTC.StopSpeechIntentRecognition()
|
|
BTC.ClearPossbileSpeechIntents()
|
|
|
|
// --- Bilder Bergell ---
|
|
//BTC.Run("LoadScene.NEXT.35Slideshow")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Tree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Kueche") {
|
|
// --- Story B Grotto - Antwort Nonna Kueche ---
|
|
Composite(Sequence) {
|
|
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")
|
|
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 - 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")
|
|
}
|
|
}
|
|
|
|
Tree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Grotto") {
|
|
// --- Story B Grotto - Antwort Nonna Grotto ---
|
|
Composite(Sequence) {
|
|
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")
|
|
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("Prima, viel Spass noch und dann guten Appetit!")
|
|
BTC.SpeechOutputEnded()
|
|
|
|
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Grotto.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()
|
|
}
|
|
}
|
|
|
|
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")
|
|
}
|
|
}
|
|
|
|
Tree("32_Grotto_Kueche_Intro") {
|
|
// --- Kueche - Intro ---
|
|
Composite(Sequence) {
|
|
BTC.Run("AudioSource.AUDIO.Kueche1FIntro")
|
|
|
|
// Schuerze greifen
|
|
BTC.Run("GO/NamedGrabEvent.INTERACTABLES.Schuerze")
|
|
//BTC.GetKeyDown("Return")
|
|
BTC.Hide("GO/NamedGrabEvent.INTERACTABLES.Schuerze")
|
|
|
|
BTC.SynthesizeText("Lies mir bitte das Rezept vor.")
|
|
BTC.SpeechOutputEnded()
|
|
|
|
BTC.AddPossbileSpeechIntent("Kueche.Intro.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) {
|
|
Decorator(Inverter) {
|
|
BTC.CompareUserSpeechInputStarted(false)
|
|
}
|
|
BTC.ClearPossbileSpeechIntents()
|
|
}
|
|
}
|
|
|
|
// -- Race 2: User sagt nichts
|
|
Composite(Sequence) {
|
|
BTC.Wait(5)
|
|
BTC.CompareUserSpeechInputStarted(false)
|
|
BTC.AbortSpeechEventListener()
|
|
BTC.StopSpeechIntentRecognition()
|
|
|
|
BTC.SynthesizeText("Was brauchen wir? Bitte lies mir das Rezept vor.")
|
|
BTC.SpeechOutputEnded()
|
|
|
|
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
|
|
// momentan nur 1 Pilz
|
|
BTC.Enable("NamedOutline.INTERACTABLES.Pilz01")
|
|
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
// Pilze ins Wasser Glas legen
|
|
BTC.Set("Collider.INTERACTABLES.GlassWasserTrigger", "otherTag", "Steinpilze")
|
|
BTC.Run("Collider.INTERACTABLES.GlassWasserTrigger")
|
|
}
|
|
Composite(Sequence) {
|
|
// Keine Reaction
|
|
BTC.Wait(5)
|
|
// --- Kueche - Steinpilze Hilfe ---
|
|
BTC.Run("AudioSource.AUDIO.Kueche1FSteinpilze")
|
|
// Pilze ins Wasser Glas legen
|
|
BTC.Run("Collider.INTERACTABLES.GlassWasserTrigger")
|
|
}
|
|
}
|
|
BTC.Disable("NamedOutline.INTERACTABLES.Pilz01")
|
|
}
|
|
}
|
|
|
|
Tree("32_Grotto_Kueche_Zwiebeln_schneiden") {
|
|
// --- Kueche - Zwiebeln schneiden ---
|
|
Composite(Sequence) {
|
|
BTC.SynthesizeText("Nun kannst du die Zwiebeln schneiden.")
|
|
BTC.SpeechOutputEnded()
|
|
|
|
// Zwiebeln schneiden
|
|
BTC.Set("Collider.INTERACTABLES.ZwiebelTrigger", "otherTag", "Messer")
|
|
BTC.Run("Collider.INTERACTABLES.ZwiebelTrigger")
|
|
BTC.Run("StudioEventEmitter.INTERACTABLES.ZwiebelSchneiden")
|
|
BTC.Hide("GO.INTERACTABLES.Zwiebel01")
|
|
BTC.Show("GO.INTERACTABLES.GeschnitteneZwiebe")
|
|
|
|
BTC.SynthesizeText("Bitte suche nun die anderen Zutaten zusammen. Ich räume in der Zwischenzeit ein bisschen auf.")
|
|
BTC.SpeechOutputEnded()
|
|
|
|
// Zutaten leuchten
|
|
Composite(Marathon) {
|
|
BTC.Enable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Bouillon")
|
|
BTC.Show("GO/NamedSocketEvent.SOCKETS.BouillonSocket")
|
|
BTC.Enable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Weisswein")
|
|
BTC.Show("GO/NamedSocketEvent.SOCKETS.WeissweinSocket")
|
|
BTC.Enable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Risotto")
|
|
BTC.Show("GO/NamedSocketEvent.SOCKETS.RisottoSocket")
|
|
BTC.Enable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Olivenoel")
|
|
BTC.Show("GO/NamedSocketEvent.SOCKETS.OlivenoelSocket")
|
|
BTC.Enable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Pfeffer")
|
|
BTC.Show("GO/NamedSocketEvent.SOCKETS.PfefferSocket")
|
|
BTC.Enable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Salz")
|
|
BTC.Show("GO/NamedSocketEvent.SOCKETS.SalzSocket")
|
|
}
|
|
|
|
|
|
// Zutaten auf die Arbeitsflaeche legen mithilfe Sockets
|
|
Composite(Marathon) {
|
|
// Risotto
|
|
Composite(Sequence) {
|
|
//BTC.GetKeyDown("Return")
|
|
BTC.SetBool("RisottoIsSnapped", false)
|
|
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
// Success
|
|
BTC.Run("GO/NamedSocketEvent.SOCKETS.RisottoSocket")
|
|
//BTC.GetKeyDown("Return")
|
|
BTC.SetBool("RisottoIsSnapped")
|
|
BTC.Disable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Risotto")
|
|
}
|
|
|
|
Decorator(Repeat) {
|
|
Composite(Sequence) {
|
|
// Fail
|
|
//BTC.GetKeyDown("Space")
|
|
BTC.ListenToEvent("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Risotto")
|
|
BTC.Wait(1)
|
|
BTC.CompareBool("RisottoIsSnapped", false)
|
|
|
|
// Objekt geht zurueck
|
|
BTC.SetPosition("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Risotto", -6.824, 1.335, -18.8996)
|
|
|
|
BTC.SynthesizeText("Das hast du an den falschen Ort gestellt.")
|
|
BTC.SpeechOutputEnded()
|
|
}
|
|
}
|
|
}
|
|
} // Sequence
|
|
|
|
// Salz
|
|
Composite(Sequence) {
|
|
BTC.SetBool("SalzIsSnapped", false)
|
|
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
// Success
|
|
BTC.Run("GO/NamedSocketEvent.SOCKETS.SalzSocket")
|
|
BTC.SetBool("SalzIsSnapped")
|
|
BTC.Disable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Salz")
|
|
}
|
|
|
|
Decorator(Repeat) {
|
|
Composite(Sequence) {
|
|
// Fail
|
|
BTC.ListenToEvent("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Salz")
|
|
BTC.Wait(1)
|
|
BTC.CompareBool("SalzIsSnapped", false)
|
|
|
|
// Objekt geht zurueck
|
|
BTC.SetPosition("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Salz", -6.607, 1.321, -18.8996)
|
|
|
|
BTC.SynthesizeText("Das hast du an den falschen Ort gestellt.")
|
|
BTC.SpeechOutputEnded()
|
|
}
|
|
}
|
|
}
|
|
} // Sequence
|
|
|
|
// Pfeffer
|
|
Composite(Sequence) {
|
|
BTC.SetBool("PfefferIsSnapped", false)
|
|
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
// Success
|
|
BTC.Run("GO/NamedSocketEvent.SOCKETS.PfefferSocket")
|
|
BTC.SetBool("PfefferIsSnapped")
|
|
BTC.Disable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Pfeffer")
|
|
}
|
|
|
|
Decorator(Repeat) {
|
|
Composite(Sequence) {
|
|
// Fail
|
|
BTC.ListenToEvent("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Pfeffer")
|
|
BTC.Wait(1)
|
|
BTC.CompareBool("PfefferIsSnapped", false)
|
|
|
|
// Objekt geht zurueck
|
|
BTC.SetPosition("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Pfeffer", -6.686, 1.321, -18.8996)
|
|
|
|
BTC.SynthesizeText("Das hast du an den falschen Ort gestellt.")
|
|
BTC.SpeechOutputEnded()
|
|
}
|
|
}
|
|
}
|
|
} // Sequence
|
|
|
|
// Weisswein
|
|
Composite(Sequence) {
|
|
BTC.SetBool("WeissweinIsSnapped", false)
|
|
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
// Success
|
|
BTC.Run("GO/NamedSocketEvent.SOCKETS.WeissweinSocket")
|
|
BTC.SetBool("WeissweinIsSnapped")
|
|
BTC.Disable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Weisswein")
|
|
}
|
|
|
|
Decorator(Repeat) {
|
|
Composite(Sequence) {
|
|
// Fail
|
|
BTC.ListenToEvent("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Weisswein")
|
|
BTC.Wait(1)
|
|
BTC.CompareBool("WeissweinIsSnapped", false)
|
|
|
|
// Objekt geht zurueck
|
|
BTC.SetPosition("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Weisswein", -6.58, 1.451, -19.0233)
|
|
|
|
BTC.SynthesizeText("Das hast du an den falschen Ort gestellt.")
|
|
BTC.SpeechOutputEnded()
|
|
}
|
|
}
|
|
}
|
|
} // Sequence
|
|
|
|
// Bouillon
|
|
Composite(Sequence) {
|
|
BTC.SetBool("BouillonIsSnapped", false)
|
|
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
// Success
|
|
BTC.Run("GO/NamedSocketEvent.SOCKETS.BouillonSocket")
|
|
BTC.SetBool("BouillonIsSnapped")
|
|
BTC.Disable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Bouillon")
|
|
}
|
|
|
|
Decorator(Repeat) {
|
|
Composite(Sequence) {
|
|
// Fail
|
|
BTC.ListenToEvent("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Bouillon")
|
|
BTC.Wait(1)
|
|
BTC.CompareBool("BouillonIsSnapped", false)
|
|
|
|
// Objekt geht zurueck
|
|
BTC.SetPosition("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Bouillon", -6.947, 1.402, -18.995)
|
|
|
|
BTC.SynthesizeText("Das hast du an den falschen Ort gestellt.")
|
|
BTC.SpeechOutputEnded()
|
|
}
|
|
}
|
|
}
|
|
} // Sequence
|
|
|
|
// Olivenoel
|
|
Composite(Sequence) {
|
|
BTC.SetBool("OlivenoelIsSnapped", false)
|
|
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
// Success
|
|
BTC.Run("GO/NamedSocketEvent.SOCKETS.OlivenoelSocket")
|
|
BTC.SetBool("OlivenoelIsSnapped")
|
|
BTC.Disable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Olivenoel")
|
|
}
|
|
|
|
Decorator(Repeat) {
|
|
Composite(Sequence) {
|
|
// Fail
|
|
BTC.ListenToEvent("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Olivenoel")
|
|
BTC.Wait(1)
|
|
BTC.CompareBool("OlivenoelIsSnapped", false)
|
|
|
|
// Objekt geht zurueck
|
|
BTC.SetPosition("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Olivenoel", -6.752, 1.449, -19.024)
|
|
|
|
BTC.SynthesizeText("Das hast du an den falschen Ort gestellt.")
|
|
BTC.SpeechOutputEnded()
|
|
}
|
|
}
|
|
}
|
|
} // Sequence
|
|
}
|
|
|
|
BTC.Wait(1)
|
|
|
|
Composite(Marathon) {
|
|
BTC.Hide("GO/NamedSocketEvent.SOCKETS.OlivenoelSocket")
|
|
BTC.Hide("GO/NamedSocketEvent.SOCKETS.BouillonSocket")
|
|
BTC.Hide("GO/NamedSocketEvent.SOCKETS.WeissweinSocket")
|
|
BTC.Hide("GO/NamedSocketEvent.SOCKETS.PfefferSocket")
|
|
BTC.Hide("GO/NamedSocketEvent.SOCKETS.SalzSocket")
|
|
BTC.Hide("GO/NamedSocketEvent.SOCKETS.RisottoSocket")
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
Tree("32_Grotto_Kueche_alles_gefunden") {
|
|
// --- Kueche - alles gefunden ---
|
|
Composite(Sequence) {
|
|
BTC.SynthesizeText("Super, du hast alles gefunden. Bitte gib nun etwas Olivenöl in den Topf.")
|
|
BTC.SpeechOutputEnded()
|
|
|
|
// Oel in Topf geben - Particle Trigger
|
|
// ...
|
|
BTC.Run("AudioSource.AUDIO.Kueche2Fallesgefun")
|
|
|
|
// Zwiebeln in Topf geben
|
|
BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "Zwiebeln")
|
|
BTC.Run("Collider.INTERACTABLES.Topf")
|
|
BTC.Start("StudioEventEmitter.STATIC.Herdplatte")
|
|
BTC.Run("AudioSource.AUDIO.Kueche3Fallesgefun")
|
|
|
|
// Frage beantworten
|
|
BTC.AddPossbileSpeechIntent("Kueche.alles_gefunden.4")
|
|
BTC.AddPossbileSpeechIntent("Kueche.alles_gefunden.6")
|
|
BTC.StartSpeechIntentRecognition()
|
|
|
|
Composite(Race) {
|
|
// -- Race 1: User sagt etwas
|
|
Composite(Sequence) {
|
|
BTC.UserStartedSpeechInput()
|
|
|
|
Composite(Selector) {
|
|
// -- Selector 1: Intent erkannt
|
|
Composite(Sequence) {
|
|
BTC.SpeechIntentRecognized()
|
|
|
|
// Intent erkannt
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
BTC.CompareIntentID("Kueche.alles_gefunden.4")
|
|
BTC.ClearPossbileSpeechIntents()
|
|
RunTree("32_Grotto_Kueche_Interesse_Kochen")
|
|
}
|
|
Composite(Sequence) {
|
|
BTC.CompareIntentID("Kueche.alles_gefunden.6")
|
|
BTC.ClearPossbileSpeechIntents()
|
|
RunTree("32_Grotto_Kueche_Zusammen_Kochen")
|
|
}
|
|
}
|
|
}
|
|
|
|
// -- Selector 2: Intent nicht erkannt
|
|
Composite(Sequence) {
|
|
BTC.ClearPossbileSpeechIntents()
|
|
|
|
// Fallback Button
|
|
Composite(Marathon) {
|
|
BTC.Set("TextMeshPro.HANDMENU.Option1Button", "text", "Ja")
|
|
BTC.Show("GO.HANDMENU.Option1Button")
|
|
BTC.Set("TextMeshPro.HANDMENU.Option2Button", "text", "Nein")
|
|
BTC.Show("GO.HANDMENU.Option2Button")
|
|
}
|
|
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
// Ja
|
|
BTC.Run("NamedEventTrigger.HANDMENU.Option1Button")
|
|
BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option2Button")
|
|
BTC.Hide("GO.HANDMENU.Option1Button")
|
|
BTC.Hide("GO.HANDMENU.Option2Button")
|
|
RunTree("32_Grotto_Kueche_Interesse_Kochen")
|
|
}
|
|
Composite(Sequence) {
|
|
// Nein
|
|
BTC.Run("NamedEventTrigger.HANDMENU.Option2Button")
|
|
BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option1Button")
|
|
BTC.Hide("GO.HANDMENU.Option1Button")
|
|
BTC.Hide("GO.HANDMENU.Option2Button")
|
|
RunTree("32_Grotto_Kueche_Zusammen_Kochen")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// -- Race 2: User sagt nichts
|
|
Composite(Sequence) {
|
|
BTC.Wait(5)
|
|
BTC.CompareUserSpeechInputStarted(false)
|
|
BTC.AbortSpeechEventListener()
|
|
BTC.StopSpeechIntentRecognition()
|
|
BTC.ClearPossbileSpeechIntents()
|
|
|
|
// Fallback Button
|
|
Composite(Marathon) {
|
|
BTC.Set("TextMeshPro.HANDMENU.Option1Button", "text", "Ja")
|
|
BTC.Show("GO.HANDMENU.Option1Button")
|
|
BTC.Set("TextMeshPro.HANDMENU.Option2Button", "text", "Nein")
|
|
BTC.Show("GO.HANDMENU.Option2Button")
|
|
}
|
|
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
// Ja
|
|
BTC.Run("NamedEventTrigger.HANDMENU.Option1Button")
|
|
BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option2Button")
|
|
BTC.Hide("GO.HANDMENU.Option1Button")
|
|
BTC.Hide("GO.HANDMENU.Option2Button")
|
|
RunTree("32_Grotto_Kueche_Interesse_Kochen")
|
|
}
|
|
Composite(Sequence) {
|
|
// Nein
|
|
BTC.Run("NamedEventTrigger.HANDMENU.Option2Button")
|
|
BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option1Button")
|
|
BTC.Hide("GO.HANDMENU.Option1Button")
|
|
BTC.Hide("GO.HANDMENU.Option2Button")
|
|
RunTree("32_Grotto_Kueche_Zusammen_Kochen")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Tree("32_Grotto_Kueche_Interesse_Kochen") {
|
|
// --- Kueche - Interesse Kochen ---
|
|
Composite(Sequence) {
|
|
BTC.Run("AudioSource.AUDIO.Kueche1FInteresseK")
|
|
BTC.Set("TextMeshPro.HANDMENU.Option1Button", "text", "Lasagne")
|
|
BTC.Show("GO.HANDMENU.Option1Button")
|
|
BTC.SetBool("32_Grotto_Kueche_Interesse_Kochen_Button_Clicked", false)
|
|
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
// Lieblingsessen nennen
|
|
BTC.Run("NamedEventTrigger.HANDMENU.Option1Button")
|
|
BTC.SetBool("32_Grotto_Kueche_Interesse_Kochen_Button_Clicked")
|
|
BTC.Hide("GO.HANDMENU.Option1Button")
|
|
RunTree("32_Grotto_Kueche_Kochen_Anzahl")
|
|
}
|
|
Composite(Sequence) {
|
|
// keine Antwort
|
|
BTC.Wait(5)
|
|
BTC.CompareBool("32_Grotto_Kueche_Interesse_Kochen_Button_Clicked", false)
|
|
BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option1Button")
|
|
BTC.Hide("GO.HANDMENU.Option1Button")
|
|
RunTree("32_Grotto_Kueche_Zusammen_Kochen")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Tree("32_Grotto_Kueche_Kochen_Anzahl") {
|
|
// --- Kueche - Kochen Anzahl ---
|
|
Composite(Sequence) {
|
|
BTC.Run("AudioSource.AUDIO.Kueche1FKochenAnza")
|
|
|
|
// Frage beantworten
|
|
BTC.AddPossbileSpeechIntent("Kueche.Kochen_Anzahl.2")
|
|
BTC.AddPossbileSpeechIntent("Kueche.Kochen_Anzahl.4")
|
|
BTC.StartSpeechIntentRecognition()
|
|
|
|
Composite(Race) {
|
|
// -- Race 1: User sagt etwas
|
|
Composite(Sequence) {
|
|
BTC.UserStartedSpeechInput()
|
|
|
|
Composite(Selector) {
|
|
// -- Selector 1: Intent erkannt
|
|
Composite(Sequence) {
|
|
BTC.SpeechIntentRecognized()
|
|
|
|
// Intent erkannt
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
BTC.CompareIntentID("Kueche.Kochen_Anzahl.2")
|
|
BTC.ClearPossbileSpeechIntents()
|
|
RunTree("32_Grotto_Kueche_Selbststaendig_Kochen")
|
|
}
|
|
Composite(Sequence) {
|
|
BTC.CompareIntentID("Kueche.Kochen_Anzahl.4")
|
|
BTC.ClearPossbileSpeechIntents()
|
|
RunTree("32_Grotto_Kueche_Zusammen_Kochen")
|
|
}
|
|
}
|
|
}
|
|
|
|
// -- Selector 2: Intent nicht erkannt
|
|
Composite(Sequence) {
|
|
BTC.ClearPossbileSpeechIntents()
|
|
|
|
// Fallback Button
|
|
Composite(Marathon) {
|
|
BTC.Set("TextMeshPro.HANDMENU.Option1Button", "text", "sehr oft")
|
|
BTC.Show("GO.HANDMENU.Option1Button")
|
|
BTC.Set("TextMeshPro.HANDMENU.Option2Button", "text", "selten")
|
|
BTC.Show("GO.HANDMENU.Option2Button")
|
|
}
|
|
|
|
Composite(Race) {
|
|
Composite(Sequence) {
|
|
// sehr oft
|
|
BTC.Run("NamedEventTrigger.HANDMENU.Option1Button")
|
|
BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option2Button")
|
|
BTC.Hide("GO.HANDMENU.Option1Button")
|
|
BTC.Hide("GO.HANDMENU.Option2Button")
|
|
RunTree("32_Grotto_Kueche_Selbststaendig_Kochen")
|
|
}
|
|
Composite(Sequence) {
|
|
// selten
|
|
BTC.Run("NamedEventTrigger.HANDMENU.Option2Button")
|
|
BTC.AbortEventListener("NamedEventTrigger.HANDMENU.Option1Button")
|
|
BTC.Hide("GO.HANDMENU.Option1Button")
|
|
BTC.Hide("GO.HANDMENU.Option2Button")
|
|
RunTree("32_Grotto_Kueche_Zusammen_Kochen")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// -- Race 2: User sagt nichts
|
|
Composite(Sequence) {
|
|
BTC.Wait(5)
|
|
BTC.CompareUserSpeechInputStarted(false)
|
|
BTC.AbortSpeechEventListener()
|
|
BTC.StopSpeechIntentRecognition()
|
|
BTC.ClearPossbileSpeechIntents()
|
|
RunTree("32_Grotto_Kueche_Zusammen_Kochen")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Tree("32_Grotto_Kueche_Zusammen_Kochen") {
|
|
// --- Kueche - Zusammen Kochen ---
|
|
Composite(Sequence) {
|
|
BTC.Run("AudioSource.AUDIO.Kueche1FZusammenKo")
|
|
|
|
// Risotto in Topf geben
|
|
BTC.Run("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Risotto")
|
|
BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "Risotto")
|
|
BTC.Run("Collider.INTERACTABLES.Topf")
|
|
|
|
// Ruehren
|
|
BTC.Run("NamedGrabEvent.INTERACTABLES.Loeffel")
|
|
BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "Loeffel")
|
|
BTC.Run("Collider.INTERACTABLES.Topf")
|
|
// Wie lange ruehren?
|
|
BTC.Wait(2)
|
|
BTC.Run("AudioSource.AUDIO.Kueche2FZusammenKo")
|
|
|
|
// Wein leuchtet
|
|
BTC.Enable("NamedGrabEvent/NamedOutline.INTERACTABLES.Weisswein")
|
|
|
|
// Wein greifen
|
|
BTC.Run("NamedGrabEvent/NamedOutline.INTERACTABLES.Weisswein")
|
|
BTC.Disable("NamedGrabEvent/NamedOutline.INTERACTABLES.Weisswein")
|
|
|
|
// Wein in Topf giessen
|
|
// ...
|
|
BTC.Run("AudioSource.AUDIO.Kueche3FZusammenKo")
|
|
|
|
// Bouillon leuchtet
|
|
BTC.Enable("NamedGrabEvent/NamedOutline.INTERACTABLES.Bouillon")
|
|
|
|
// Bouillon greifen
|
|
BTC.Run("NamedGrabEvent/NamedOutline.INTERACTABLES.Bouillon")
|
|
BTC.Disable("NamedGrabEvent/NamedOutline.INTERACTABLES.Bouillon")
|
|
|
|
// Bouillon in Topf geben
|
|
// ...
|
|
BTC.Run("AudioSource.AUDIO.Kueche4FZusammenKo")
|
|
|
|
// Glas Wasser mit Steinpilze in Topf geben
|
|
BTC.Run("NamedGrabEvent/NamedOutline.INTERACTABLES.Steinpilze")
|
|
BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "Steinpilze")
|
|
BTC.Run("Collider.INTERACTABLES.Topf")
|
|
|
|
RunTree("32_Grotto_Kueche_Parmigiano")
|
|
}
|
|
}
|
|
|
|
Tree("32_Grotto_Kueche_Selbststaendig_Kochen") {
|
|
// --- Kueche - Selbststaendig Kochen ---
|
|
Composite(Sequence) {
|
|
BTC.Run("AudioSource.AUDIO.Kueche1FSelbststae")
|
|
// Selbstaendig kochen...
|
|
// ...
|
|
|
|
RunTree("32_Grotto_Kueche_Parmigiano")
|
|
}
|
|
}
|
|
|
|
Tree("32_Grotto_Kueche_Parmigiano") {
|
|
// --- Kueche - Parmigiano ---
|
|
Composite(Sequence) {
|
|
BTC.SynthesizeText("Schau, ich habe dir den Parmigiano hingestellt. Du kannst ihn nun in den Topf geben.")
|
|
BTC.SpeechOutputEnded()
|
|
|
|
// Parmigiano in Topf geben
|
|
BTC.Run("NamedGrabEvent.INTERACTABLES.Parmigiano")
|
|
BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "Parmigiano")
|
|
BTC.Run("Collider.INTERACTABLES.Topf")
|
|
|
|
BTC.SynthesizeText("Bist du fertig?")
|
|
BTC.SpeechOutputEnded()
|
|
|
|
// Antwort User
|
|
// ToDo: Sprache fehlt
|
|
BTC.Set("TextMeshPro.HANDMENU.Option1Button", "text", "Ja")
|
|
BTC.Show("GO.HANDMENU.Option1Button")
|
|
Composite(Race) {
|
|
BTC.Run("NamedEventTrigger.HANDMENU.Option1Button")
|
|
BTC.Wait(5)
|
|
}
|
|
BTC.Hide("GO.HANDMENU.Option1Button")
|
|
|
|
BTC.SynthesizeText("Bitte stelle den Risotto hier hin.")
|
|
BTC.SpeechOutputEnded()
|
|
|
|
// Stelle für Pfanne leuchtet
|
|
BTC.Enable("Collider/NamedOutline.INTERACTABLES.TopfUntersetzer")
|
|
|
|
// Pfanne rueber stellen
|
|
BTC.Run("NamedGrabEvent.INTERACTABLES.Topf")
|
|
BTC.Set("Collider/NamedOutline.INTERACTABLES.TopfUntersetzer", "otherTag", "Topf")
|
|
BTC.Run("Collider/NamedOutline.INTERACTABLES.TopfUntersetzer")
|
|
BTC.Disable("Collider/NamedOutline.INTERACTABLES.TopfUntersetzer")
|
|
// ToDo: Fallback Keine Reaktion
|
|
|
|
BTC.Run("AudioSource.AUDIO.Kueche5FZusammenKo")
|
|
BTC.Run("AudioSource.AUDIO.Kueche6FZusammenKo")
|
|
|
|
// --- Kueche - Outro ---
|
|
BTC.Run("AudioSource.AUDIO.Kueche1GOutro")
|
|
BTC.SynthesizeText("Ich bin Giuseppe, Francescas Grossonkel. Und wer bist du?")
|
|
BTC.SpeechOutputEnded()
|
|
|
|
// Name sagen
|
|
BTC.AddPossbileSpeechIntent("Kueche.Outro.4")
|
|
BTC.StartSpeechIntentRecognition()
|
|
|
|
Composite(Race) {
|
|
// -- Race 1: User sagt etwas
|
|
Composite(Sequence) {
|
|
BTC.UserStartedSpeechInput()
|
|
|
|
Composite(Selector) {
|
|
// -- Selector 1: Intent erkannt
|
|
Composite(Sequence) {
|
|
BTC.SpeechIntentRecognized()
|
|
BTC.ClearPossbileSpeechIntents()
|
|
}
|
|
|
|
// -- Selector 2: Intent nicht erkannt
|
|
Composite(Sequence) {
|
|
BTC.ClearPossbileSpeechIntents()
|
|
|
|
// Fallback Button
|
|
BTC.Set("TextMeshPro.HANDMENU.Option1Button", "text", "Mein Name ist User.")
|
|
BTC.Show("GO.HANDMENU.Option1Button")
|
|
BTC.Run("NamedEventTrigger.HANDMENU.Option1Button")
|
|
BTC.Hide("GO.HANDMENU.Option1Button")
|
|
}
|
|
}
|
|
}
|
|
|
|
// -- Race 2: User sagt nichts
|
|
Composite(Sequence) {
|
|
BTC.Wait(5)
|
|
BTC.CompareUserSpeechInputStarted(false)
|
|
BTC.AbortSpeechEventListener()
|
|
BTC.StopSpeechIntentRecognition()
|
|
BTC.ClearPossbileSpeechIntents()
|
|
}
|
|
}
|
|
|
|
BTC.Run("AudioSource.AUDIO.Kueche3GOutro")
|
|
BTC.Run("AudioSource.AUDIO.Kueche2GOutro")
|
|
}
|
|
}
|
|
|
|
Tree("32_Grotto_Im_Grotto_Essen_Intro") {
|
|
|
|
}
|
|
|
|
Tree("32_Grotto_Kueche_Hide") {
|
|
Composite(Sequence) {
|
|
// Go to scene 3.5 Slideshow
|
|
BTC.GetKeyDown("Return")
|
|
BTC.Run("LoadScene.NEXT.35Slideshow")
|
|
}
|
|
}
|
|
|
|
|