An easy to use Unity 3D library for creating illustrated Interactive Fiction games and more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
2.1 KiB

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;
}
}