Esempio n. 1
0
        Cell _lastCell; // была выбрана в прошлый раз

        /// <summary>
        /// Перемещение указателя мыши
        /// </summary>
        /// <param name="location">Позиция курсора</param>
        public void MouseMove(Point location)
        {
            if (_game.WinPlayer != WinPlayer.Game)
            {
                return;
            }
            var address = GetCellAddress(location);

            // если под курсором найдена разрешённая ячейка
            if (GetCell(location, out Cell cell) && cell.State != State.Prohibited)
            {
                if (_game.DisableNotOrderedMove())
                {
                    return;
                }
                // и эта ячейка другая
                if (cell != _lastCell)
                {
                    // если уже была выбрана другая ячейка
                    if (_lastCell != null)
                    {
                        LeaveCell(_lastCell);
                    }
                    _lastCell = cell;   // запоминаем выбранную ячейку
                    // пытаемся выбрать эту ячейку
                    EnterCell(cell);
                }
            }
            else if (_lastCell != null)
            {
                // покидаем ячейку
                LeaveCell(_lastCell);
                _lastCell = null;
            }

            if (_down)
            {
                _moveRect.Location = new Point(location.X - _downOffset.X, location.Y - _downOffset.Y);
            }
        }