/// <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); }
/// <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; } }