Browse Source

Merge pull request #730 from stevehalliwell/ToFromString

Commands to store FungusVariable.ToString into a StringVariable and t…
master
Chris Gregan 6 years ago committed by GitHub
parent
commit
781dda52c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 82
      Assets/Fungus/Scripts/Commands/FromString.cs
  2. 11
      Assets/Fungus/Scripts/Commands/FromString.cs.meta
  3. 63
      Assets/Fungus/Scripts/Commands/ToString.cs
  4. 11
      Assets/Fungus/Scripts/Commands/ToString.cs.meta

82
Assets/Fungus/Scripts/Commands/FromString.cs

@ -0,0 +1,82 @@
// This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus).
// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE)
using UnityEngine;
namespace Fungus
{
/// <summary>
/// Attempts to parse a string into a given fungus variable type, such as integer or float
/// </summary>
[CommandInfo("Variable",
"From String",
"Attempts to parse a string into a given fungus variable type, such as integer or float")]
[AddComponentMenu("")]
public class FromString : Command
{
[Tooltip("Source of string data to parse into another variables value")]
[VariableProperty(typeof(StringVariable))]
[SerializeField] protected StringVariable sourceString;
[Tooltip("The variable type to be parsed and value stored within")]
[VariableProperty(typeof(IntegerVariable), typeof(FloatVariable))]
[SerializeField] protected Variable outValue;
public override void OnEnter()
{
if (sourceString != null && outValue != null)
{
double asDouble = 0;
try
{
asDouble = System.Convert.ToDouble(sourceString.Value, System.Globalization.CultureInfo.CurrentCulture);
}
catch (System.Exception)
{
Debug.LogWarning("Failed to parse as number: " + sourceString.Value);
}
IntegerVariable intOutVar = outValue as IntegerVariable;
if (intOutVar != null)
{
intOutVar.Value = (int)asDouble;
}
else
{
FloatVariable floatOutVar = outValue as FloatVariable;
if (floatOutVar != null)
{
floatOutVar.Value = (float)asDouble;
}
}
}
Continue();
}
public override string GetSummary()
{
if (sourceString == null)
{
return "Error: No source string selected";
}
if (outValue == null)
{
return "Error: No type and storage variable selected";
}
return outValue.Key + ".Parse " + sourceString.Key;
}
public override bool HasReference(Variable variable)
{
return (variable == sourceString) || (variable == outValue);
}
public override Color GetButtonColor()
{
return new Color32(253, 253, 150, 255);
}
}
}

11
Assets/Fungus/Scripts/Commands/FromString.cs.meta

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 51296c2a224eea64daa8c7b9c5c644fa
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

63
Assets/Fungus/Scripts/Commands/ToString.cs

@ -0,0 +1,63 @@
// This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus).
// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE)
using UnityEngine;
namespace Fungus
{
/// <summary>
/// Stores the result of a ToString on given variable in a string.
/// </summary>
[CommandInfo("Variable",
"To String",
"Stores the result of a ToString on given variable in a string.")]
[AddComponentMenu("")]
public class ToString : Command
{
[Tooltip("Target variable to get String of.")]
[VariableProperty()]
[SerializeField] protected Variable variable;
[Tooltip("Variable to store the result of ToString")]
[VariableProperty(typeof(StringVariable))]
[SerializeField] protected StringVariable outValue;
//[Tooltip("Optional formatting string given to ToString")]
//[SerializeField] protected StringData format;
public override void OnEnter()
{
if (variable != null && outValue != null)
{
outValue.Value = variable.ToString();
}
Continue();
}
public override string GetSummary()
{
if (variable == null)
{
return "Error: Variable not selected";
}
if (outValue == null)
{
return "Error: outValue not set";
}
return outValue.Key + " = " + variable.Key + ".ToString";
}
public override bool HasReference(Variable variable)
{
return (variable == this.variable) || outValue == variable;
}
public override Color GetButtonColor()
{
return new Color32(253, 253, 150, 255);
}
}
}

11
Assets/Fungus/Scripts/Commands/ToString.cs.meta

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e76deb01172e9c64c9f78361b06b85bd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
Loading…
Cancel
Save