Browse Source

Added ShowConditions to Say command

master
chrisgregan 11 years ago
parent
commit
5e37a6fe0f
  1. 1
      Assets/Fungus/Editor/FungusScript/AddOptionEditor.cs
  2. 20
      Assets/Fungus/Editor/FungusScript/SayEditor.cs
  3. 1
      Assets/Fungus/VisualScripting/AddOption.cs
  4. 56
      Assets/Fungus/VisualScripting/Say.cs
  5. BIN
      Assets/Shuttle/ShuttleGame.unity

1
Assets/Fungus/Editor/FungusScript/AddOptionEditor.cs

@ -16,7 +16,6 @@ namespace Fungus.Script
EditorGUI.BeginChangeCheck();
string optionText = EditorGUILayout.TextField(new GUIContent("Option Text", "Text for option button label"), t.optionText);
Sequence targetSequence = SequenceEditor.SequenceField(new GUIContent("Target Sequence", "Sequence to execute when option is selected"), t.GetFungusScript(), t.targetSequence);
AddOption.ShowCondition showCondition = (AddOption.ShowCondition)EditorGUILayout.EnumPopup(new GUIContent("Show Condition", "Condition when this option should be visible."), t.showCondition);

20
Assets/Fungus/Editor/FungusScript/SayEditor.cs

@ -22,12 +22,30 @@ namespace Fungus.Script
EditorStyles.textField.wordWrap = true;
string text = EditorGUILayout.TextArea(t.text, GUILayout.MinHeight(50));
Say.ShowCondition showCondition = (Say.ShowCondition)EditorGUILayout.EnumPopup(new GUIContent("Show Condition", "Condition when this say text should be visible."), t.showCondition);
string booleanVariableKey = t.booleanVariableKey;
if (showCondition == Say.ShowCondition.BooleanIsFalse ||
showCondition == Say.ShowCondition.BooleanIsTrue)
{
VariableType type = VariableType.Boolean;
booleanVariableKey = SequenceEditor.VariableField (new GUIContent ("Boolean Variable", "Boolean variable to test for condition"),
t.GetFungusScript (),
t.booleanVariableKey,
ref type,
v => { return v.type == VariableType.Boolean; });
}
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(t, "Set Say");
t.character = character;
t.text = text;
}
t.showCondition = showCondition;
t.booleanVariableKey = booleanVariableKey;
}
}
}

1
Assets/Fungus/VisualScripting/AddOption.cs

@ -23,7 +23,6 @@ namespace Fungus.Script
public override void OnEnter()
{
Dialog dialog = Game.GetInstance().dialog;
bool showOption = (dialog != null && targetSequence != null);
if (showCondition == ShowCondition.Always)

56
Assets/Fungus/VisualScripting/Say.cs

@ -7,8 +7,20 @@ namespace Fungus.Script
{
public class Say : FungusCommand
{
public enum ShowCondition
{
Always,
Once,
BooleanIsTrue,
BooleanIsFalse
}
public string character;
public string text;
public ShowCondition showCondition;
public string booleanVariableKey;
int executionCount;
public override void OnEnter()
{
@ -18,6 +30,49 @@ namespace Fungus.Script
Continue();
return;
}
bool showSayText = true;
if (showCondition == ShowCondition.Always)
{
// Always show option
}
else if (showCondition == ShowCondition.Once)
{
if (executionCount > 0)
{
showSayText = false;
}
}
else
{
Variable v = parentFungusScript.GetVariable(booleanVariableKey);
if (v == null)
{
showSayText = false;
}
else
{
if (showCondition == ShowCondition.BooleanIsTrue &&
v.booleanValue != true)
{
showSayText = false;
}
else if (showCondition == ShowCondition.BooleanIsFalse &&
v.booleanValue != false)
{
showSayText = false;
}
}
}
if (!showSayText)
{
Continue();
return;
}
executionCount++;
if (character.Length > 0)
{
@ -28,7 +83,6 @@ namespace Fungus.Script
Continue();
});
}
}
}

BIN
Assets/Shuttle/ShuttleGame.unity

Binary file not shown.
Loading…
Cancel
Save