Exemple #1
0
        /// <summary>
        /// Получает данные о щелчке мыши и обрабатывает их
        /// </summary>
        /// <param name="Click">Параметры щелчка мыши</param>
        internal void OnClick(MouseClick Click)
        {
            switch (Click)
            {
            case MouseClick.LeftButton:

                if (locked)
                {
                    return;
                }

                changies = ChangiesStatus(Click);

                Blocked = !Blocked;

                BlockSwitch();

                break;

            case MouseClick.RightButton:

                changies = ChangiesStatus(Click);

                Marked = !Marked;

                MarkSwitch();

                break;
            }

            OnClickEvent?.Invoke(this, changies);
        }
Exemple #2
0
        /// <summary>
        /// Метод учета изменений в ячейке игрового поля
        /// </summary>
        /// <param name="Cell">Ячейка в которой произошли изменения</param>
        /// <param name="Changies">Вид изменений</param>
        private void CellChanged(Cell Cell, CellChangies Changies)
        {
            switch (Changies)
            {
            case CellChangies.OneWay:

                if (Cell.Marked)
                {
                    MarkedCells.Add(FieldMatrix[Cell.X, Cell.Z].Point(false, true));
                    FieldChanged?.Invoke(FieldMatrix, MarkedCells);
                }
                else if (Cell.Blocked)
                {
                    ChangeMatrix(FieldMatrix[Cell.X, Cell.Z].Point(true, false));
                    FieldChanged?.Invoke(FieldMatrix, null);
                }
                else
                {
                    ChangeMatrix(FieldMatrix[Cell.X, Cell.Z].Point(false, false));
                    if (MarkedCells.Contains(FieldMatrix[Cell.X, Cell.Z]))
                    {
                        MarkedCells.Remove(FieldMatrix[Cell.X, Cell.Z]);
                    }
                    FieldChanged?.Invoke(FieldMatrix, MarkedCells);
                }

                break;

            case CellChangies.TwoWays:

                if (Cell.Marked)
                {
                    MarkedCells.Add(FieldMatrix[Cell.X, Cell.Z].Point(false, true));
                    ChangeMatrix(FieldMatrix[Cell.X, Cell.Z]);

                    FieldChanged?.Invoke(FieldMatrix, MarkedCells);
                }
                else
                {
                    MarkedCells.Remove(FieldMatrix[Cell.X, Cell.Z].Point(true, false));
                    ChangeMatrix(FieldMatrix[Cell.X, Cell.Z]);

                    FieldChanged?.Invoke(FieldMatrix, MarkedCells);
                }

                break;
            }
        }