Files
Mementos/Unity/Alternate Genre Jam/Assets/Ink/InkLibs/InkRuntime/StatePatch.cs
2021-06-30 21:39:19 +10:00

67 lines
2.4 KiB
C#

using System.Collections.Generic;
namespace Ink.Runtime
{
public class StatePatch
{
public Dictionary<string, Runtime.Object> globals { get { return _globals; } }
public HashSet<string> changedVariables { get { return _changedVariables; } }
public Dictionary<Container, int> visitCounts { get { return _visitCounts; } }
public Dictionary<Container, int> turnIndices { get { return _turnIndices; } }
public StatePatch(StatePatch toCopy)
{
if( toCopy != null ) {
_globals = new Dictionary<string, Object>(toCopy._globals);
_changedVariables = new HashSet<string>(toCopy._changedVariables);
_visitCounts = new Dictionary<Container, int>(toCopy._visitCounts);
_turnIndices = new Dictionary<Container, int>(toCopy._turnIndices);
} else {
_globals = new Dictionary<string, Object>();
_changedVariables = new HashSet<string>();
_visitCounts = new Dictionary<Container, int>();
_turnIndices = new Dictionary<Container, int>();
}
}
public bool TryGetGlobal(string name, out Runtime.Object value)
{
return _globals.TryGetValue(name, out value);
}
public void SetGlobal(string name, Runtime.Object value){
_globals[name] = value;
}
public void AddChangedVariable(string name)
{
_changedVariables.Add(name);
}
public bool TryGetVisitCount(Container container, out int count)
{
return _visitCounts.TryGetValue(container, out count);
}
public void SetVisitCount(Container container, int count)
{
_visitCounts[container] = count;
}
public void SetTurnIndex(Container container, int index)
{
_turnIndices[container] = index;
}
public bool TryGetTurnIndex(Container container, out int index)
{
return _turnIndices.TryGetValue(container, out index);
}
Dictionary<string, Runtime.Object> _globals;
HashSet<string> _changedVariables = new HashSet<string>();
Dictionary<Container, int> _visitCounts = new Dictionary<Container, int>();
Dictionary<Container, int> _turnIndices = new Dictionary<Container, int>();
}
}