using UnityEngine; using System; using System.Collections; namespace Fungus.Script { public enum VariableType { Boolean, Integer, Float, String }; public enum VariableScope { Local, Global }; [Serializable] public class Variable { public string key; public VariableType type; public VariableScope scope; bool booleanValue; int integerValue; float floatValue; string stringValue; public bool BooleanValue { get { return (scope == VariableScope.Local) ? booleanValue : Variables.GetBoolean(key); } set { if (scope == VariableScope.Local) { booleanValue = value; } else { Variables.SetBoolean(key, value); } } } public int IntegerValue { get { return (scope == VariableScope.Local) ? integerValue : Variables.GetInteger(key); } set { if (scope == VariableScope.Local) { integerValue = value; } else { Variables.SetInteger(key, value); } } } public float FloatValue { get { return (scope == VariableScope.Local) ? floatValue : Variables.GetFloat(key); } set { if (scope == VariableScope.Local) { floatValue = value; } else { Variables.SetFloat(key, value); } } } public string StringValue { get { return (scope == VariableScope.Local) ? stringValue : Variables.GetString(key); } set { if (scope == VariableScope.Local) { stringValue = value; } else { Variables.SetString(key, value); } } } public bool IsSameType(Variable other) { return (this.type == other.type); } public bool Assign(Variable other) { if (!IsSameType(other)) { return false; } booleanValue = other.booleanValue; integerValue = other.integerValue; floatValue = other.floatValue; stringValue = other.stringValue; return true; } } [Serializable] public class VariableData { } [Serializable] public class BooleanData : VariableData { public bool value; } [Serializable] public class IntegerData : VariableData { public int value; } [Serializable] public class FloatData : VariableData { public float value; } [Serializable] public class StringData : VariableData { public string value; } }