private void RevertBoardState(BoardDifference diff) { var(x, y) = diff.PreviousPositionOfSpace; var value = board.GetItem(x, y); if (value == -1) { return; } board.SetItem(x, y, 0); board.BlankPosition = diff.PreviousPositionOfSpace; var(_x, _y) = diff.PositionOfSpace; board.SetItem(_x, _y, value); }
public void ExecuteCommand(ICommand command) { var saveToHistory = command.Execute(); if (saveToHistory) { var previousPositionOfSpace = board.BlankPosition; var memento = new BoardDifference { PositionOfSpace = board.BlankPosition, PreviousPositionOfSpace = previousPositionOfSpace }; history.Push(memento); } else { history.Clear(); } }