From 4ff3e4649306b6e5f85a00215c3f80056f4a5114 Mon Sep 17 00:00:00 2001 From: chrisgregan Date: Fri, 5 Dec 2014 17:25:36 +0000 Subject: [PATCH] Added substituting variables in Say, Choose and character name text --- Assets/Fungus/Dialog/Editor/SayEditor.cs | 5 +++-- Assets/Fungus/Dialog/Scripts/Commands/AddOption.cs | 2 +- Assets/Fungus/Dialog/Scripts/Commands/Choose.cs | 9 +++++++-- Assets/Fungus/Dialog/Scripts/Commands/Say.cs | 7 +++++-- Assets/Fungus/Dialog/Scripts/Dialog.cs | 7 ++++++- 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/Assets/Fungus/Dialog/Editor/SayEditor.cs b/Assets/Fungus/Dialog/Editor/SayEditor.cs index 3481a00c..c765f0a2 100644 --- a/Assets/Fungus/Dialog/Editor/SayEditor.cs +++ b/Assets/Fungus/Dialog/Editor/SayEditor.cs @@ -24,8 +24,9 @@ namespace Fungus "\t{wp}, {wp=0.5} Wait on punctuation\n" + "\t{c} Clear\n" + "\t{s}, {s=60} Writing speed (chars per sec)\n" + - "\t{x} Exit" + - "\t{m} Broadcast message"; + "\t{x} Exit\n" + + "\t{m} Broadcast message\n" + + "\t{$VarName} Substitute variable"; float pixelHeight = EditorStyles.miniLabel.CalcHeight(new GUIContent(tagsText), EditorGUIUtility.currentViewWidth); EditorGUILayout.SelectableLabel(tagsText, EditorStyles.miniLabel, GUILayout.MinHeight(pixelHeight)); diff --git a/Assets/Fungus/Dialog/Scripts/Commands/AddOption.cs b/Assets/Fungus/Dialog/Scripts/Commands/AddOption.cs index f1e6811f..1c58968a 100644 --- a/Assets/Fungus/Dialog/Scripts/Commands/AddOption.cs +++ b/Assets/Fungus/Dialog/Scripts/Commands/AddOption.cs @@ -31,7 +31,7 @@ namespace Fungus } Choose.Option option = new Choose.Option(); - option.optionText = optionText; + option.optionText = optionText; // Note: Variable substitution happens in the Choose command (as late as possible) option.targetSequence = targetSequence; option.action = () => { diff --git a/Assets/Fungus/Dialog/Scripts/Commands/Choose.cs b/Assets/Fungus/Dialog/Scripts/Commands/Choose.cs index 6719bdbf..cf7ac093 100644 --- a/Assets/Fungus/Dialog/Scripts/Commands/Choose.cs +++ b/Assets/Fungus/Dialog/Scripts/Commands/Choose.cs @@ -59,8 +59,10 @@ namespace Fungus } else { + FungusScript fungusScript = GetFungusScript(); + chooseDialog.ShowDialog(true); - chooseDialog.SetCharacter(character); + chooseDialog.SetCharacter(character, fungusScript); List dialogOptions = new List(); foreach (Option option in options) @@ -69,6 +71,7 @@ namespace Fungus // Store these in local variables so they get closed over correctly by the delegate call dialogOption.text = option.optionText; + dialogOption.text = fungusScript.SubstituteVariables(dialogOption.text); Sequence onSelectSequence = option.targetSequence; Action optionAction = option.action; @@ -101,7 +104,9 @@ namespace Fungus chooseDialog.PlayVoiceOver(voiceOverClip); } - chooseDialog.Choose(chooseText, dialogOptions, timeoutDuration, delegate { + string subbedText = fungusScript.SubstituteVariables(chooseText); + + chooseDialog.Choose(subbedText, dialogOptions, timeoutDuration, delegate { chooseDialog.ShowDialog(false); Continue(); }); diff --git a/Assets/Fungus/Dialog/Scripts/Commands/Say.cs b/Assets/Fungus/Dialog/Scripts/Commands/Say.cs index 49ba0858..25e00ff6 100644 --- a/Assets/Fungus/Dialog/Scripts/Commands/Say.cs +++ b/Assets/Fungus/Dialog/Scripts/Commands/Say.cs @@ -54,7 +54,8 @@ namespace Fungus } } - sayDialog.SetCharacter(character); + FungusScript fungusScript = GetFungusScript(); + sayDialog.SetCharacter(character, fungusScript); sayDialog.ShowDialog(true); @@ -63,7 +64,9 @@ namespace Fungus sayDialog.PlayVoiceOver(voiceOverClip); } - sayDialog.Say(storyText, delegate { + string subbedText = fungusScript.SubstituteVariables(storyText); + + sayDialog.Say(subbedText, delegate { sayDialog.ShowDialog(false); Continue(); }); diff --git a/Assets/Fungus/Dialog/Scripts/Dialog.cs b/Assets/Fungus/Dialog/Scripts/Dialog.cs index 04fd09ab..62f529db 100644 --- a/Assets/Fungus/Dialog/Scripts/Dialog.cs +++ b/Assets/Fungus/Dialog/Scripts/Dialog.cs @@ -63,7 +63,7 @@ namespace Fungus } } - public virtual void SetCharacter(Character character) + public virtual void SetCharacter(Character character, FungusScript fungusScript = null) { if (character == null) { @@ -84,6 +84,11 @@ namespace Fungus characterName = character.name; } + if (fungusScript != null) + { + characterName = fungusScript.SubstituteVariables(characterName); + } + characterTypingSound = character.soundEffect; SetCharacterName(characterName, character.nameColor);