/// <summary> /// Registers a change to the current board state. /// </summary> public void RegisterChange(string message) { Debug.WriteLine(message); currentNode.Next = new BoardStackNode(null, currentNode, CurrentState.Copy(), message); currentNode = currentNode.Next; CurrentState.Propogate(); }
public BoardStackNode(BoardStackNode next, BoardStackNode previous, BoardState state, string message) { Next = next; Previous = previous; State = state; Message = message; }
/// <summary> /// Move backwards through the board stack /// </summary> public void Reverse() { if (currentNode.Previous != null) { currentNode = currentNode.Previous; CurrentState = currentNode.State.Copy(); CurrentState.Propogate(); } }
/// <summary> /// Advance forward in the board stack /// </summary> public void Advance() { if (currentNode.Next != null) { currentNode = currentNode.Next; CurrentState = currentNode.State.Copy(); CurrentState.Propogate(); } }
public void Load() { string json = saver.GetJson(); if (json.Length == 0) { return; } SaveManager.Load(json, out var newState); CurrentState = newState; currentNode = new BoardStackNode(null, null, CurrentState.Copy(), "Created Board"); CurrentState.Propogate(); }
public void Clear() { currentNode = new BoardStackNode(null, null, new BoardState(), "Created Board"); CurrentState = currentNode.State; locationIdentifier = ""; }
public BoardStack(ISaver saver) { this.saver = saver; CurrentState = new BoardState(); currentNode = new BoardStackNode(null, null, CurrentState.Copy(), "Created Board"); }