コード例 #1
0
        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;
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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();
        }