private void pbBoard_MouseDown(object sender, MouseEventArgs e) { UpdateMouse(e); var mouseLocation = BoardPainter.GetBoardLocation(_lastMouse); if (_model.EditMode) { if (Movement.IsValidLocation(mouseLocation)) { _model.SelectionObject = mouseLocation; BoardEditorUpdate(); RedrawBoard(); } return; } if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { _lmbDown = true; } else if ((e.Button & MouseButtons.Right) == MouseButtons.Right) { _rmbDown = true; } if (!Movement.IsValidLocation(mouseLocation)) { return; } _lastEventLocation = mouseLocation; }
private void pbBoard_MouseUp(object sender, MouseEventArgs e) { if (_model.EditMode) { return; } UpdateMouse(e); var mouseLocation = BoardPainter.GetBoardLocation(_lastMouse); if (!Movement.IsValidLocation(mouseLocation)) { return; } if ((e.Button & MouseButtons.Left) == MouseButtons.Left && _lmbDown) { _lmbDown = false; InputEvent?.Invoke(sender, new BoardLocationEventArgs { Location = mouseLocation, MouseEvent = _rmbDrag ? BoardMouseEventType.PartialDropContinueDrag : _lmbDrag ? BoardMouseEventType.LeftDragEnd : BoardMouseEventType.LeftClick }); _lmbDrag = false; } else if ((e.Button & MouseButtons.Right) == MouseButtons.Right && _rmbDown) { _rmbDown = false; InputEvent?.Invoke(sender, new BoardLocationEventArgs { Location = mouseLocation, MouseEvent = _lmbDrag ? BoardMouseEventType.PartialDropContinueDrag : _rmbDrag ? BoardMouseEventType.RightDragEnd : BoardMouseEventType.RightClick }); _rmbDrag = false; } _lastEventLocation = mouseLocation; BoardEditorUpdate(); }
private void pbBoard_MouseMove(object sender, MouseEventArgs e) { if (_model.EditMode) { return; } UpdateMouse(e); var mouseLocation = BoardPainter.GetBoardLocation(_lastMouse); if (!Movement.IsValidLocation(mouseLocation)) { return; } if (_lmbDown) { if (mouseLocation != _lastEventLocation) { if (!_lmbDrag && !_rmbDrag) { InputEvent?.Invoke(sender, new BoardLocationEventArgs { Location = _lastEventLocation, MouseEvent = BoardMouseEventType.LeftDragStart }); } InputEvent?.Invoke(sender, new BoardLocationEventArgs { Location = mouseLocation, MouseEvent = BoardMouseEventType.Hover }); _lastEventLocation = mouseLocation; if (!_rmbDrag) { _lmbDrag = true; } } } else if (_rmbDown) { if (mouseLocation != _lastEventLocation) { if (!_lmbDrag && !_rmbDrag) { InputEvent?.Invoke(sender, new BoardLocationEventArgs { Location = _lastEventLocation, MouseEvent = BoardMouseEventType.RightDragStart }); } InputEvent?.Invoke(sender, new BoardLocationEventArgs { Location = mouseLocation, MouseEvent = BoardMouseEventType.Hover }); _lastEventLocation = mouseLocation; if (!_lmbDrag) { _rmbDrag = true; } } } else { if (mouseLocation != _lastEventLocation) { InputEvent?.Invoke(sender, new BoardLocationEventArgs { Location = mouseLocation, MouseEvent = BoardMouseEventType.Hover }); _lastEventLocation = mouseLocation; } } RedrawBoard(); }