예제 #1
0
        private void AddEdgeRewardItemCommandExecute()
        {
            var itemUnit = new ItemUnit(NewRewardEdgeItemType.ItemType, NewRewardEdgeItemTypeCount);

            SelectedEdge.AddRecievedUnit(itemUnit);
            AddEdgeRewardItemCommand.RaiseCanExecuteChanged();
        }
예제 #2
0
        public void MouseDown(MouseEventArgs e, RoomEditorState state)
        {
            int x = (e.X + state.ScrollOffsetX) / state.ScaleFactor;
            int y = (e.Y + state.ScrollOffsetY) / state.ScaleFactor;

            if (IsCursorOnVerticalEdge(x, _room.LeftEdgeX))
            {
                _selectedEdge = SelectedEdge.Left;
            }
            else if (IsCursorOnVerticalEdge(x, _room.RightEdgeX))
            {
                _selectedEdge = SelectedEdge.Right;
            }
            else if (IsCursorOnHorizontalEdge(y, _room.TopEdgeY))
            {
                _selectedEdge = SelectedEdge.Top;
            }
            else if (IsCursorOnHorizontalEdge(y, _room.BottomEdgeY))
            {
                _selectedEdge = SelectedEdge.Bottom;
            }
            else
            {
                _selectedEdge = SelectedEdge.None;
            }
        }
예제 #3
0
        private void AddNewEdgeRequestedItemCommandExecute()
        {
            var requestedItem = new RequestedItemUnit(NewEdgeRequestedItemType.ItemType, NewEdgeRequestedItemCount,
                                                      NewEdgeRequestedItemIsDisappearing);

            SelectedEdge.AddRequestedItem(requestedItem);
        }
예제 #4
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);
        }
예제 #5
0
        private void DrawEdge(Graphics graphics, int position, float scale, SelectedEdge edge)
        {
            PointF location = new PointF();
            SizeF  size     = new SizeF();

            switch (edge)
            {
            case SelectedEdge.Left:
            case SelectedEdge.Right:
                location.X  = position;
                location.Y  = 0;
                size.Width  = scale;
                size.Height = _room.Height * scale;
                break;

            case SelectedEdge.Top:
            case SelectedEdge.Bottom:
                location.X  = 0;
                location.Y  = position;
                size.Width  = _room.Width * scale;
                size.Height = scale;
                break;
            }

            RectangleF rect  = new RectangleF(location, size);
            Brush      brush = new HatchBrush(HatchStyle.Percent50, Color.Yellow, Color.Transparent);

            graphics.FillRectangle(brush, rect);
        }
예제 #6
0
 public void SelectItem(string name)
 {
     if (name == SelectedEdge.Bottom.ToString())
     {
         _selectedEdge = SelectedEdge.Bottom;
     }
     else if (name == SelectedEdge.Top.ToString())
     {
         _selectedEdge = SelectedEdge.Top;
     }
     else if (name == SelectedEdge.Right.ToString())
     {
         _selectedEdge = SelectedEdge.Right;
     }
     else if (name == SelectedEdge.Left.ToString())
     {
         _selectedEdge = SelectedEdge.Left;
     }
     else
     {
         _selectedEdge = SelectedEdge.None;
         return;
     }
     _lastSelectedEdge = _selectedEdge;
 }
예제 #7
0
 private bool IsMoveable(SelectedEdge edge)
 {
     if (!VisibleItems.Contains(edge.ToString()) || LockedItems.Contains(edge.ToString()))
     {
         return(false);
     }
     return(true);
 }
예제 #8
0
 private bool IsCursorOnHorizontalEdge(int cursorY, int edgeY, SelectedEdge edge)
 {
     if (!IsMoveable(edge))
     {
         return(false);
     }
     return((cursorY >= edgeY - 1) && (cursorY <= edgeY + 1));
 }
예제 #9
0
 private bool IsCursorOnVerticalEdge(int cursorX, int edgeX, SelectedEdge edge)
 {
     if (!IsMoveable(edge))
     {
         return(false);
     }
     return((cursorX >= edgeX - 1) && (cursorX <= edgeX + 1));
 }
예제 #10
0
        private void DeleteEdgeRewardCommandExecute()
        {
            if (MessageBox.Show(string.Format("Delete reward '{0}'?", SelectedEdgeReward.BasicItem.Name), "Confirmation", MessageBoxButton.OKCancel) != MessageBoxResult.OK)
            {
                return;
            }

            SelectedEdge.DeleteRecievedUnit(SelectedEdgeReward);
        }
예제 #11
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);
        }
예제 #12
0
        private bool IsMoveable(SelectedEdge edge)
        {
            DesignTimeProperties p = DesignItems[GetItemID(edge)];

            if (!p.Visible || p.Locked)
            {
                return(false);
            }
            return(true);
        }
예제 #13
0
        public void SelectItem(string id)
        {
            SelectedEdge edge;

            if (id == null || !RoomItemRefs.TryGetValue(id, out edge))
            {
                _selectedEdge = SelectedEdge.None;
                return;
            }
            _selectedEdge     = edge;
            _lastSelectedEdge = _selectedEdge;
        }
예제 #14
0
 private bool SetSelectedEdge(SelectedEdge edge)
 {
     if (!IsMoveable(edge))
     {
         return(false);
     }
     _selectedEdge = edge;
     if (OnSelectedItemChanged != null)
     {
         OnSelectedItemChanged(this, new SelectedRoomItemEventArgs(edge.ToString()));
     }
     return(true);
 }
예제 #15
0
        public bool MouseDown(MouseEventArgs e, RoomEditorState state)
        {
            _mouseDown = true;
            int x = (e.X + state.ScrollOffsetX) / state.ScaleFactor;
            int y = (e.Y + state.ScrollOffsetY) / state.ScaleFactor;

            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))
            {
            }

            _lastSelectedEdge = _selectedEdge;
            return(_selectedEdge != SelectedEdge.None);
        }
예제 #16
0
 private string GetItemID(SelectedEdge e)
 {
     // Use edge's name as a "unique identifier", for now
     return(e.ToString());
 }
예제 #17
0
 private bool IsCursorOnHorizontalEdge(int cursorY, int edgeY, SelectedEdge edge)
 {
     return((cursorY >= edgeY - 1) && (cursorY <= edgeY + 1));
 }
예제 #18
0
 private bool IsCursorOnVerticalEdge(int cursorX, int edgeX, SelectedEdge edge)
 {
     return((cursorX >= edgeX - 1) && (cursorX <= edgeX + 1));
 }
예제 #19
0
 public void MouseUp(MouseEventArgs e, RoomEditorState state)
 {
     _selectedEdge = SelectedEdge.None;
 }
예제 #20
0
 private void DeleteEdgeRequestedItemCommandExecute()
 {
     SelectedEdge.RemoveRequetedItem(SelectedEdgeRequetedItem);
     DeleteEdgeRequestedItemCommand.RaiseCanExecuteChanged();
 }
예제 #21
0
 public void MouseDown(MouseEventArgs e, RoomEditorState state)
 {
     int x = (e.X + state.ScrollOffsetX) / state.ScaleFactor;
     int y = (e.Y + state.ScrollOffsetY) / state.ScaleFactor;
     if (IsCursorOnVerticalEdge(x, _room.LeftEdgeX))
     {
         _selectedEdge = SelectedEdge.Left;
     }
     else if (IsCursorOnVerticalEdge(x, _room.RightEdgeX))
     {
         _selectedEdge = SelectedEdge.Right;
     }
     else if (IsCursorOnHorizontalEdge(y, _room.TopEdgeY))
     {
         _selectedEdge = SelectedEdge.Top;
     }
     else if (IsCursorOnHorizontalEdge(y, _room.BottomEdgeY))
     {
         _selectedEdge = SelectedEdge.Bottom;
     }
     else
     {
         _selectedEdge = SelectedEdge.None;
     }
 }
예제 #22
0
 public void MouseUp(MouseEventArgs e, RoomEditorState state)
 {
     _selectedEdge = SelectedEdge.None;
 }
예제 #23
0
 public bool MouseUp(MouseEventArgs e, RoomEditorState state)
 {
     _mouseDown    = false;
     _selectedEdge = SelectedEdge.None;
     return(false);
 }