Esempio n. 1
0
        private void bufferedPanel1_MouseMove(object sender, MouseEventArgs e)
        {
            if ((e.X == _lastX) && (e.Y == _lastY))
            {
                return;
            }

            _lastX = e.X;
            _lastY = e.Y;

            int    mouseXPos = _state.WindowXToRoom(e.X);
            int    mouseYPos = _state.WindowYToRoom(e.Y);
            string xPosText  = mouseXPos.ToString();
            string yPosText  = mouseYPos.ToString();

            if ((mouseXPos < 0) || (mouseXPos >= _room.Width))
            {
                xPosText = "?";
            }
            if ((mouseYPos < 0) || (mouseYPos >= _room.Height))
            {
                yPosText = "?";
            }
            lblMousePos.Text = $"{xPosText}, {yPosText}";

            SelectCursor(e.X, e.Y, _state);
            if (_layer != null && !IsLocked(_layer))
            {
                if (_layer.MouseMove(e.X, e.Y, _state))
                {
                    bufferedPanel1.Invalidate();
                }
            }
        }
Esempio n. 2
0
        public virtual bool MouseDown(MouseEventArgs e, RoomEditorState state)
        {
            int        x   = state.WindowXToRoom(e.X);
            int        y   = state.WindowYToRoom(e.Y);
            RoomObject obj = GetObject(x, y);

            if (obj != null)
            {
                SetSelectedObject(obj);
                Factory.GUIController.SetPropertyGridObject(obj);
                if (e.Button == MouseButtons.Right)
                {
                    ShowContextMenu(e, state);
                }
                else if (!DesignItems[GetItemID(obj)].Locked)
                {
                    _movingObjectWithMouse = true;
                    _mouseOffsetX          = x - obj.StartX;
                    _mouseOffsetY          = y - obj.StartY;
                }
            }
            if (_selectedObject == null)
            {
                if (e.Button == MouseButtons.Right)
                {
                    ShowContextMenu(e, state);
                    return(true);
                }
                return(false);
            }
            return(true);
        }
Esempio n. 3
0
        public bool MouseDown(MouseEventArgs e, RoomEditorState state)
        {
            if (e.Button == MouseButtons.Middle)
            {
                return(false);
            }

            _mouseDown = true;
            int x = state.WindowXToRoom(e.X);
            int y = state.WindowYToRoom(e.Y);

            if (IsCursorOnVerticalEdge(x, _room.LeftEdgeX, SelectedEdge.Left) && SetSelectedEdge(SelectedEdge.Left))
            {
            }
            else if (IsCursorOnVerticalEdge(x, _room.RightEdgeX, SelectedEdge.Right) && SetSelectedEdge(SelectedEdge.Right))
            {
            }
            else if (IsCursorOnHorizontalEdge(y, _room.TopEdgeY, SelectedEdge.Top) && SetSelectedEdge(SelectedEdge.Top))
            {
            }
            else if (IsCursorOnHorizontalEdge(y, _room.BottomEdgeY, SelectedEdge.Bottom) && SetSelectedEdge(SelectedEdge.Bottom))
            {
            }
            else
            {
                _selectedEdge = SelectedEdge.None;
            }

            _lastSelectedEdge = _selectedEdge;
            return(_selectedEdge != SelectedEdge.None);
        }
Esempio n. 4
0
        public bool MouseDown(MouseEventArgs e, RoomEditorState state)
        {
            if (e.Button == MouseButtons.Middle)
            {
                return(false);
            }

            int       xClick    = state.WindowXToRoom(e.X);
            int       yClick    = state.WindowYToRoom(e.Y);
            Character character = GetCharacter(xClick, yClick, state);

            if (character != null)
            {
                SelectCharacter(character, xClick, yClick, state);
            }
            else
            {
                _selectedCharacter = null;
            }

            if (_selectedCharacter != null)
            {
                Factory.GUIController.SetPropertyGridObject(_selectedCharacter);
                return(true);
            }
            return(false);
        }
Esempio n. 5
0
        public override bool MouseMove(int x, int y, RoomEditorState state)
        {
            if (_draggingBaseline)
            {
                int newBaseline = state.WindowYToRoom(y);
                if (newBaseline < 0)
                {
                    newBaseline = 0;
                }
                if (newBaseline >= _room.Height)
                {
                    newBaseline = _room.Height - 1;
                }
                _room.WalkBehinds[SelectedArea].Baseline = newBaseline;
                _room.Modified = true;
                return(true);
            }

            if (base.MouseMove(x, y, state))
            {
                return(true);
            }

            return(false);
        }
Esempio n. 6
0
        public virtual bool MouseDown(MouseEventArgs e, RoomEditorState state)
        {
            if (e.Button == MouseButtons.Middle)
            {
                return(false);
            }

            int x = state.WindowXToRoom(e.X);
            int y = state.WindowYToRoom(e.Y);

            AreaDrawMode drawMode = IsFilterOn() ? _drawMode : AreaDrawMode.Select;

            if (IsLocked(_selectedArea) && drawMode != AreaDrawMode.Select)
            {
                return(false);
            }

            if (drawMode == AreaDrawMode.Freehand)
            {
                Factory.NativeProxy.CreateUndoBuffer(_room, this.MaskToDraw);
            }

            _drawingWithArea = _selectedArea;

            if (e.Button == MouseButtons.Right)
            {
                _drawingWithArea = 0;
            }

            if ((drawMode == AreaDrawMode.Line) ||
                (drawMode == AreaDrawMode.Freehand) ||
                (drawMode == AreaDrawMode.Rectangle))
            {
                if (_selectedArea == 0)
                {
                    _tooltip.Show("You are currently using the eraser. To draw new areas, change the selection in the list above the Properties Pane.", _panel, e.X, e.Y - 70, 2000);
                }
                _mouseDown     = true;
                _mouseDownX    = x;
                _mouseDownY    = y;
                _room.Modified = true;
            }
            else if (drawMode == AreaDrawMode.Fill)
            {
                Factory.NativeProxy.CreateUndoBuffer(_room, this.MaskToDraw);
                Factory.NativeProxy.DrawFillOntoMask(_room, this.MaskToDraw, x, y, _drawingWithArea);
                _room.Modified = true;
                UpdateUndoButtonEnabledState();
            }
            else if (drawMode == AreaDrawMode.Select)
            {
                int area = Factory.NativeProxy.GetAreaMaskPixel(_room, this.MaskToDraw, x, y);
                if (area != 0 && !IsLocked(area))
                {
                    SelectedArea = area;
                    SelectedAreaChanged(_selectedArea);
                }
            }
            return(true);
        }
Esempio n. 7
0
 public Cursor GetCursor(int x, int y, RoomEditorState state)
 {
     if (_movingObjectWithMouse) return Cursors.Hand;
     x = state.WindowXToRoom(x);
     y = state.WindowYToRoom(y);
     if (GetObject(x, y) != null) return Cursors.Default;
     return null;
 }
Esempio n. 8
0
        public Cursor GetCursor(int x, int y, RoomEditorState state)
        {
            int          roomX        = state.WindowXToRoom(x);
            int          roomY        = state.WindowYToRoom(y);
            string       toolTipText  = null;
            Cursor       cursor       = null;
            SelectedEdge draggingEdge = _mouseDown ? _selectedEdge : SelectedEdge.None;

            if (draggingEdge == SelectedEdge.Left ||
                IsCursorOnVerticalEdge(roomX, _room.LeftEdgeX, SelectedEdge.Left))
            {
                cursor      = IsMoveable(SelectedEdge.Left) ? Cursors.VSplit : RoomSettingsEditor.LockedCursor;
                toolTipText = "Left edge";
            }
            else if (draggingEdge == SelectedEdge.Right ||
                     IsCursorOnVerticalEdge(roomX, _room.RightEdgeX, SelectedEdge.Right))
            {
                cursor      = IsMoveable(SelectedEdge.Right) ? Cursors.VSplit : RoomSettingsEditor.LockedCursor;
                toolTipText = "Right edge";
            }
            else if (draggingEdge == SelectedEdge.Top ||
                     IsCursorOnHorizontalEdge(roomY, _room.TopEdgeY, SelectedEdge.Top))
            {
                cursor      = IsMoveable(SelectedEdge.Top) ? Cursors.HSplit : RoomSettingsEditor.LockedCursor;
                toolTipText = "Top edge";
            }
            else if (draggingEdge == SelectedEdge.Bottom ||
                     IsCursorOnHorizontalEdge(roomY, _room.BottomEdgeY, SelectedEdge.Bottom))
            {
                cursor      = IsMoveable(SelectedEdge.Bottom) ? Cursors.HSplit : RoomSettingsEditor.LockedCursor;
                toolTipText = "Bottom edge";
            }
            else
            {
                cursor = null;
            }

            if (toolTipText != null)
            {
                // Tooltip.Show is quite a slow function, so make sure it's not
                // called too often
                if ((Math.Abs(x - _tooltipX) > 5) || (Math.Abs(y - _tooltipY) > 5) ||
                    (_tooltipText != toolTipText) || (!_tooltip.Active))
                {
                    _tooltip.Show(toolTipText, _panel, x - 10, y + 5);
                    _tooltipX    = x;
                    _tooltipY    = y;
                    _tooltipText = toolTipText;
                }
            }
            else if (_tooltip.Active)
            {
                _tooltip.Hide(_panel);
            }
            return(cursor);
        }
Esempio n. 9
0
        private void ShowCoordMenu(MouseEventArgs e, RoomEditorState state)
        {
            EventHandler     onClick = new EventHandler(CoordMenuEventHandler);
            ContextMenuStrip menu    = new ContextMenuStrip();

            menu.Items.Add(new ToolStripMenuItem("Copy mouse coordinates to clipboard", null, onClick, MENU_ITEM_COPY_COORDS));

            _menuClickX = state.WindowXToRoom(e.X);
            _menuClickY = state.WindowYToRoom(e.Y);
            menu.Show(_panel, e.X, e.Y);
        }
Esempio n. 10
0
        public bool MouseMove(int x, int y, RoomEditorState state)
        {
            if (!_movingCharacterWithMouse)
            {
                return(false);
            }

            int newX = state.WindowXToRoom(x) - _mouseOffsetX;
            int newY = state.WindowYToRoom(y) - _mouseOffsetY;

            return(MoveCharacter(newX, newY));
        }
Esempio n. 11
0
        public bool MouseMove(int x, int y, RoomEditorState state)
        {
            if (_selectedEdge != SelectedEdge.None && _mouseDown)
            {
                x = state.WindowXToRoom(x);
                y = state.WindowYToRoom(y);
                MoveEdgeWithMouse(x, y);
                _room.Modified = true;
                return(true);
            }

            return(false);
        }
Esempio n. 12
0
 public Cursor GetCursor(int x, int y, RoomEditorState state)
 {
     if (_movingCharacterWithMouse)
     {
         return(Cursors.Hand);
     }
     x = state.WindowXToRoom(x);
     y = state.WindowYToRoom(y);
     if (GetCharacter(x, y, state) != null)
     {
         return(Cursors.Default);
     }
     return(null);
 }
Esempio n. 13
0
        public virtual bool MouseMove(int x, int y, RoomEditorState state)
        {
            if (!_movingObjectWithMouse) return false;
            int realX = state.WindowXToRoom(x);
            int realY = state.WindowYToRoom(y);

            if ((_movingObjectWithMouse) && (realY < _room.Height) &&
                (realX < _room.Width) && (realY >= 0) && (realX >= 0))
            {
                int newX = realX - _mouseOffsetX;
                int newY = realY - _mouseOffsetY;
                return MoveObject(newX, newY);
            }
            return false;
        }
Esempio n. 14
0
 public virtual Cursor GetCursor(int x, int y, RoomEditorState state)
 {
     if (_drawMode != AreaDrawMode.Select)
     {
         return(Cursors.Cross);
     }
     if (state.CurrentCursor == null)
     {
         x = state.WindowXToRoom(x);
         y = state.WindowYToRoom(y);
         int area = Factory.NativeProxy.GetAreaMaskPixel(_room, this.MaskToDraw, x, y);
         if (area != 0 && !IsLocked(area))
         {
             return(_selectCursor);
         }
     }
     return(null);
 }
Esempio n. 15
0
        private void ShowContextMenu(MouseEventArgs e, RoomEditorState state)
        {
            EventHandler onClick = new EventHandler(ContextMenuEventHandler);
            ContextMenuStrip menu = new ContextMenuStrip();
            if (_selectedObject != null)
            {
                menu.Items.Add(new ToolStripMenuItem("Delete", null, onClick, MENU_ITEM_DELETE));
                menu.Items.Add(new ToolStripSeparator());
            }
            menu.Items.Add(new ToolStripMenuItem("Place New Object Here", null, onClick, MENU_ITEM_NEW));
            if (_selectedObject != null)
            {
                menu.Items.Add(new ToolStripMenuItem("Copy Object Coordinates to Clipboard", null, onClick, MENU_ITEM_OBJECT_COORDS));
            }
            _menuClickX = state.WindowXToRoom(e.X);
            _menuClickY = state.WindowYToRoom(e.Y);

            menu.Show(_panel, e.X, e.Y);
        }
Esempio n. 16
0
        public virtual bool MouseMove(int x, int y, RoomEditorState state)
        {
            _currentMouseX = state.WindowXToRoom(x);
            _currentMouseY = state.WindowYToRoom(y);

            AreaDrawMode drawMode = IsFilterOn() ? _drawMode : AreaDrawMode.Select;

            if (_mouseDown)
            {
                if (drawMode == AreaDrawMode.Freehand)
                {
                    Factory.NativeProxy.DrawLineOntoMask(_room, this.MaskToDraw, _mouseDownX, _mouseDownY, _currentMouseX, _currentMouseY, _drawingWithArea);
                    _mouseDownX = _currentMouseX;
                    _mouseDownY = _currentMouseY;
                    UpdateUndoButtonEnabledState();
                }

                return(true);
            }

            return(false);
        }
Esempio n. 17
0
        private void bufferedPanel1_MouseMove(object sender, MouseEventArgs e)
        {
            if ((e.X == _lastX) && (e.Y == _lastY))
            {
                return;
            }

            _lastX = e.X;
            _lastY = e.Y;

            int    mouseXPos = _state.WindowXToRoom(e.X);
            int    mouseYPos = _state.WindowYToRoom(e.Y);
            string xPosText  = mouseXPos.ToString();
            string yPosText  = mouseYPos.ToString();

            if ((mouseXPos < 0) || (mouseXPos >= _room.Width))
            {
                xPosText = "?";
            }
            if ((mouseYPos < 0) || (mouseYPos >= _room.Height))
            {
                yPosText = "?";
            }
            lblMousePos.Text = "Mouse Position: " + xPosText + ", " + yPosText;

            SelectCursor(e.X, e.Y, _state);
            foreach (IRoomEditorFilter layer in _layers)
            {
                if (IsLocked(layer))
                {
                    continue;
                }
                if (layer.MouseMove(e.X, e.Y, _state))
                {
                    bufferedPanel1.Invalidate();
                    break;
                }
            }
        }