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