768 lines
31 KiB
Plaintext
768 lines
31 KiB
Plaintext
Tree("Root") {
|
||
Composite(Sequence) {
|
||
BTC.InitializeSpeechManager()
|
||
//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 ---
|
||
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?", "de-DE", "")
|
||
BTC.SpeechOutputEnded()
|
||
|
||
//BTC.SetSpeechRecognitionLanguage("it-IT")
|
||
//BTC.AddPossbileSpeechIntent("Story_B_Grotto.Nachfrage_Nonna_Grotto.2", "L’aiuto 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.Nachfrage_Nonna_Grotto.2", "Ich helfe in der Küche., Ich möchte aushelfen., Ich möchte Francesca helfen., Ich möchte in der Küche helfen.")
|
||
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Nachfrage_Nonna_Grotto.4", "Ich warte im Garten auf sie., Ich warte auf sie., Ich bleibe im Garten.")
|
||
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?", "de-DE", "")
|
||
BTC.SpeechOutputEnded()
|
||
|
||
BTC.StartSpeechIntentRecognition()
|
||
// Fallback fehlt, wenn nichts gesagt wird
|
||
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")
|
||
}
|
||
}
|
||
}
|
||
|
||
// Fallback 2mal nicht verstanden: Button klick
|
||
|
||
}
|
||
}
|
||
|
||
// -- 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.", "de-DE", "")
|
||
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", "Vielen Dank, das ist nett (oder andere Antwort)")
|
||
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 ---
|
||
// ...
|
||
}
|
||
}
|
||
|
||
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?", "de-DE", "")
|
||
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", "Ja, danke, ich habe etwas dabei (oder andere Antwort)")
|
||
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!", "de-DE", "")
|
||
BTC.SpeechOutputEnded()
|
||
|
||
//BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Grotto.6", "Grazie nonna, ciao!")
|
||
BTC.AddPossbileSpeechIntent("Story_B_Grotto.Antwort_Nonna_Grotto.6", "Danke!")
|
||
BTC.StartSpeechIntentRecognition()
|
||
|
||
Composite(Race) {
|
||
// -- Race 1: User sagt etwas
|
||
Composite(Selector) {
|
||
Composite(Sequence) {
|
||
BTC.UserStartedSpeechInput()
|
||
BTC.SpeechIntentRecognized()
|
||
BTC.ClearPossbileSpeechIntents()
|
||
//BTC.GetKeyDown("Return")
|
||
}
|
||
|
||
// Intent nicht erkannt
|
||
Composite(Sequence) {
|
||
BTC.ClearPossbileSpeechIntents()
|
||
//BTC.GetKeyDown("Return")
|
||
}
|
||
}
|
||
|
||
// -- Race 2: User sagt nichts
|
||
Composite(Sequence) {
|
||
BTC.Wait(5)
|
||
BTC.CompareUserSpeechInputStarted(false)
|
||
BTC.StopSpeechIntentRecognition()
|
||
BTC.ClearPossbileSpeechIntents()
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
Tree("32_Grotto_Kueche_Intro") {
|
||
// --- Kueche - Intro ---
|
||
Composite(Sequence) {
|
||
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.", "de-DE", "")
|
||
BTC.SpeechOutputEnded()
|
||
|
||
// Rezept vorlesen: Button Klick
|
||
BTC.Set("TextMeshPro.HANDMENU.Option1Button", "text", "Rezept vorlesen")
|
||
BTC.Show("GO.HANDMENU.Option1Button")
|
||
|
||
Composite(Race) {
|
||
Composite(Sequence) {
|
||
// auf Button klicken
|
||
BTC.Run("NamedEventTrigger.HANDMENU.Option1Button")
|
||
//BTC.GetKeyDown("Return")
|
||
}
|
||
Composite(Sequence) {
|
||
// keine Reaktion
|
||
BTC.Wait(5)
|
||
BTC.SynthesizeText("Was brauchen wir? Bitte lies mir das Rezept vor.", "de-DE", "")
|
||
BTC.SpeechOutputEnded()
|
||
BTC.Run("NamedEventTrigger.HANDMENU.Option1Button")
|
||
}
|
||
}
|
||
BTC.Hide("GO.HANDMENU.Option1Button")
|
||
|
||
|
||
BTC.Run("AudioSource.AUDIO.Kueche3FIntro")
|
||
// Pilze leuchten
|
||
BTC.Enable("NamedGrabEvent/NamedOutline.INTERACTABLES.Steinpilze")
|
||
|
||
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")
|
||
}
|
||
Composite(Sequence) {
|
||
// Keine Reaction
|
||
BTC.Wait(5)
|
||
// --- 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")
|
||
}
|
||
}
|
||
|
||
Tree("32_Grotto_Kueche_Zwiebeln_schneiden") {
|
||
// --- Kueche - Zwiebeln schneiden ---
|
||
Composite(Sequence) {
|
||
BTC.Run("AudioSource.AUDIO.Kueche1FZwiebelnsc")
|
||
|
||
// Zwiebeln schneiden
|
||
// ...
|
||
|
||
BTC.Run("AudioSource.AUDIO.Kueche2FZwiebelnsc")
|
||
|
||
// Zutaten leuchten
|
||
Composite(Marathon) {
|
||
BTC.Enable("NamedGrabEvent/NamedOutline.INTERACTABLES.Bouillon")
|
||
BTC.Show("GO/NamedSocketEvent.SOCKETS.BouillonSocket")
|
||
BTC.Enable("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("NamedGrabEvent/NamedOutline.INTERACTABLES.Olivenoel")
|
||
BTC.Show("GO/NamedSocketEvent.SOCKETS.OlivenoelSocket")
|
||
BTC.Enable("NamedGrabEvent/NamedOutline.INTERACTABLES.Pfeffer")
|
||
BTC.Show("GO/NamedSocketEvent.SOCKETS.PfefferSocket")
|
||
BTC.Enable("NamedGrabEvent/NamedOutline.INTERACTABLES.Salz")
|
||
BTC.Show("GO/NamedSocketEvent.SOCKETS.SalzSocket")
|
||
}
|
||
|
||
|
||
// Zutaten auf die Arbeitsflaeche legen mithilfe Sockets
|
||
Composite(Marathon) {
|
||
|
||
Decorator (RepeatUntilFailed) {
|
||
Decorator(Inverter) {
|
||
Composite(Sequence) {
|
||
BTC.Run("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Risotto")
|
||
//BTC.GetKeyDown("Return")
|
||
|
||
Composite(Race) {
|
||
Composite(Sequence) {
|
||
// Success
|
||
BTC.Run("GO/NamedSocketEvent.SOCKETS.RisottoSocket")
|
||
//BTC.GetKeyDown("Return")
|
||
BTC.SetBool("RisottoIsSnapped")
|
||
BTC.Disable("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Risotto")
|
||
}
|
||
Composite(Sequence) {
|
||
// Fail
|
||
//BTC.GetKeyDown("Space")
|
||
BTC.ListenToEvent("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Risotto")
|
||
BTC.CompareBool("RisottoIsSnapped", false)
|
||
|
||
// Objekt geht zurueck
|
||
BTC.SetPosition("GO/NamedGrabEvent/NamedOutline.INTERACTABLES.Risotto", -6.733, 1.362, -18.908)
|
||
|
||
BTC.SynthesizeText("Das hast du an den falschen Ort gestellt.", "de-DE", "")
|
||
BTC.SpeechOutputEnded()
|
||
BTC.SetBool("RisottoIsSnapped", false)
|
||
}
|
||
}
|
||
|
||
BTC.CompareBool("RisottoIsSnapped")
|
||
} // Sequence
|
||
}
|
||
} // Repeat
|
||
|
||
|
||
Composite(Sequence) {
|
||
BTC.Run("NamedGrabEvent/NamedOutline.INTERACTABLES.Salz")
|
||
BTC.Disable("NamedGrabEvent/NamedOutline.INTERACTABLES.Salz")
|
||
BTC.Run("GO/NamedSocketEvent.SOCKETS.SalzSocket")
|
||
}
|
||
Composite(Sequence) {
|
||
|
||
BTC.Run("NamedGrabEvent/NamedOutline.INTERACTABLES.Pfeffer")
|
||
BTC.Disable("NamedGrabEvent/NamedOutline.INTERACTABLES.Pfeffer")
|
||
BTC.Run("GO/NamedSocketEvent.SOCKETS.PfefferSocket")
|
||
}
|
||
Composite(Sequence) {
|
||
|
||
BTC.Run("NamedGrabEvent/NamedOutline.INTERACTABLES.Weisswein")
|
||
BTC.Disable("NamedGrabEvent/NamedOutline.INTERACTABLES.Weisswein")
|
||
BTC.Run("GO/NamedSocketEvent.SOCKETS.WeissweinSocket")
|
||
}
|
||
Composite(Sequence) {
|
||
|
||
BTC.Run("NamedGrabEvent/NamedOutline.INTERACTABLES.Bouillon")
|
||
BTC.Disable("NamedGrabEvent/NamedOutline.INTERACTABLES.Bouillon")
|
||
BTC.Run("GO/NamedSocketEvent.SOCKETS.BouillonSocket")
|
||
}
|
||
Composite(Sequence) {
|
||
|
||
BTC.Run("NamedGrabEvent/NamedOutline.INTERACTABLES.Olivenoel")
|
||
BTC.Disable("NamedGrabEvent/NamedOutline.INTERACTABLES.Olivenoel")
|
||
BTC.Run("GO/NamedSocketEvent.SOCKETS.OlivenoelSocket")
|
||
}
|
||
}
|
||
|
||
BTC.SetBool("RisottoIsSnapped", false)
|
||
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.", "de-DE", "")
|
||
BTC.SpeechOutputEnded()
|
||
|
||
// Oel in Topf geben - Particle Trigger
|
||
// ...
|
||
BTC.Run("AudioSource.AUDIO.Kueche2Fallesgefun")
|
||
//BTC.GetKeyDown("Return")
|
||
|
||
// Zwiebeln in Topf geben
|
||
BTC.Run("NamedGrabEvent.INTERACTABLES.Zwiebeln")
|
||
BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "Zwiebeln")
|
||
BTC.Run("Collider.INTERACTABLES.Topf")
|
||
BTC.Run("AudioSource.AUDIO.Kueche3Fallesgefun")
|
||
|
||
// Frage beantworten
|
||
BTC.AddPossbileSpeechIntent("Kueche.alles_gefunden.4", "Ja.")
|
||
BTC.AddPossbileSpeechIntent("Kueche.alles_gefunden.6", "Nein.")
|
||
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", "sehr oft, fast täglich (oder andere Antwort)")
|
||
BTC.AddPossbileSpeechIntent("Kueche.Kochen_Anzahl.4", "fast nie (oder andere Antwort)")
|
||
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.", "de-DE", "")
|
||
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?", "de-DE", "")
|
||
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.", "de-DE", "")
|
||
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?", "de-DE", "")
|
||
BTC.SpeechOutputEnded()
|
||
|
||
// Name sagen
|
||
BTC.AddPossbileSpeechIntent("Kueche.Outro.4", "Mein Name ist xy. (oder andere Antwort)")
|
||
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_Kueche_Hide") {
|
||
Composite(Sequence) {
|
||
// Go to scene 3.5 Slideshow
|
||
BTC.GetKeyDown("Return")
|
||
BTC.Run("LoadScene.NEXT.35Slideshow")
|
||
}
|
||
}
|
||
|
||
|