Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
            }
        }