using System.Collections.Generic; namespace Ink.Runtime { public class StatePatch { public Dictionary globals { get { return _globals; } } public HashSet changedVariables { get { return _changedVariables; } } public Dictionary visitCounts { get { return _visitCounts; } } public Dictionary turnIndices { get { return _turnIndices; } } public StatePatch(StatePatch toCopy) { if( toCopy != null ) { _globals = new Dictionary(toCopy._globals); _changedVariables = new HashSet(toCopy._changedVariables); _visitCounts = new Dictionary(toCopy._visitCounts); _turnIndices = new Dictionary(toCopy._turnIndices); } else { _globals = new Dictionary(); _changedVariables = new HashSet(); _visitCounts = new Dictionary(); _turnIndices = new Dictionary(); } } 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 _globals; HashSet _changedVariables = new HashSet(); Dictionary _visitCounts = new Dictionary(); Dictionary _turnIndices = new Dictionary(); } }