示例#1
0
        public void MoveCheckerToNewPosition(CheckerModel checkerToMove, int newPositionColumn, int newPositionRow)
        {
            int          fromColumn        = checkerToMove.Column;
            int          fromRow           = checkerToMove.Row;
            CheckerModel oldPositionedItem = _data[newPositionColumn, newPositionRow];

            if (checkerToMove == oldPositionedItem)
            {
                return;
            }

            if (fromColumn == newPositionColumn && fromRow == newPositionRow)
            {
                _data[newPositionColumn, newPositionRow] = checkerToMove;
                _added.Add(checkerToMove);
                _deleted.Add(oldPositionedItem);
                return;
            }

            _data[newPositionColumn, newPositionRow] = checkerToMove;
            checkerToMove.SetNewPosition(newPositionColumn, newPositionRow);

            _data[fromColumn, fromRow] = oldPositionedItem;
            oldPositionedItem.SetNewPosition(fromColumn, fromRow);

            _modified.Add(oldPositionedItem);
            _modified.Add(checkerToMove);
        }