public override bool MoveTool(TileMouseEventArgs e)
 {
     if (e.LeftButton == MouseButtonState.Pressed)
     {
         SetSpawn(e);
     }
     return true;
 }
        private void ViewportMouseDown(object sender, MouseButtonEventArgs e)
        {
            var cargs = new TileMouseEventArgs
                            {
                                Tile = GetTileAtPixel(e.GetPosition((IInputElement)sender)),
                                LeftButton = e.LeftButton,
                                RightButton = e.RightButton,
                                MiddleButton = e.MiddleButton,
                                WheelDelta = 0
                            };

            _mouseDownAbsolute = e.GetPosition(this);

            var vm = (WorldViewModel)DataContext;
            if (vm.MouseDownCommand.CanExecute(cargs))
                vm.MouseDownCommand.Execute(cargs);
        }
        private void ViewportMouseDown(object sender, MouseButtonEventArgs e)
        {
            var cargs = new TileMouseEventArgs
                            {
                                Tile = GetTileAtPixel(e.GetPosition((IInputElement)sender)),
                                LeftButton = e.LeftButton,
                                RightButton = e.RightButton,
                                MiddleButton = e.MiddleButton,
                                WheelDelta = 0
                            };

            _mouseDownAbsolute = e.GetPosition(this);

            var partView = (ScrollViewer)FindName("WorldScrollViewer");
            if (partView != null) _scrollDownAbsolute = new Point(partView.HorizontalOffset, partView.VerticalOffset);

            var vm = (WorldViewModel)DataContext;
            if (vm.MouseDownCommand.CanExecute(cargs))
                vm.MouseDownCommand.Execute(cargs);

            ViewportRerender(sender, null);  // potential for button effects to trigger tile changes
        }
Exemplo n.º 4
0
        public override bool ReleaseTool(TileMouseEventArgs e)
        {
            ClosePopups();

            // From Terrafirma
            foreach (Chest c in _world.Chests)
            {
                //chests are 2x2, and their x/y is upper left corner
                if ((c.Location.X == e.Tile.X || c.Location.X + 1 == e.Tile.X) &&
                    (c.Location.Y == e.Tile.Y || c.Location.Y + 1 == e.Tile.Y))
                {
                    _chestPopup = new ChestEditorPopup(c);
                    _chestPopup.IsOpen = true;
                }
            }
            foreach (Sign s in _world.Signs)
            {
                //signs are 2x2, and their x/y is upper left corner
                if ((s.Location.X == e.Tile.X || s.Location.X + 1 == e.Tile.X) && (s.Location.Y == e.Tile.Y || s.Location.Y + 1 == e.Tile.Y))
                {
                    _signPopup = new SignPopup(s);
                    _signPopup.IsOpen = true;
                }
            }
            return false;
        }
        private void ViewportMouseUp(object sender, MouseButtonEventArgs e)
        {
            var cargs = new TileMouseEventArgs
                            {
                                Tile = GetTileAtPixel(e.GetPosition((IInputElement)sender)),
                                LeftButton = e.LeftButton,
                                RightButton = e.RightButton,
                                MiddleButton = e.MiddleButton,
                                WheelDelta = 0
                            };

            var vm = (WorldViewModel)DataContext;
            if (vm.MouseUpCommand.CanExecute(cargs))
                vm.MouseUpCommand.Execute(cargs);

            ViewportRerender(sender, null);  // potential for button effects to trigger tile changes
        }
 private void SetSpawn(TileMouseEventArgs e)
 {
     if (!TileProperties.TileSolid[_world.Tiles[e.Tile.X, e.Tile.Y].Type] ||
         !_world.Tiles[e.Tile.X, e.Tile.Y].IsActive)
     {
         _world.Header.SpawnTile = e.Tile;
     }
 }
Exemplo n.º 7
0
 private void OnMouseWheel(TileMouseEventArgs e)
 {
     if ((e.Tile.X < _world.Header.WorldBounds.W &&
          e.Tile.Y < _world.Header.WorldBounds.H &&
          e.Tile.X >= 0 &&
          e.Tile.Y >= 0) && (_world.Tiles[e.Tile.X, e.Tile.Y] != null))
     {
         if (e.WheelDelta > 0)
             Zoom = Zoom * 1.1;
         if (e.WheelDelta < 0)
             Zoom = Zoom * (1/1.1);  // 0.9090909090909090909090...
     }
 }
Exemplo n.º 8
0
        private void OnMouseOverPixel(TileMouseEventArgs e)
        {
            if ((e.Tile.X < _world.Header.WorldBounds.W &&
                 e.Tile.Y < _world.Header.WorldBounds.H &&
                 e.Tile.X >= 0 &&
                 e.Tile.Y >= 0) && (_world.Tiles[e.Tile.X, e.Tile.Y] != null))
            {
                Tile overTile = _world.Tiles[e.Tile.X, e.Tile.Y];

                string wallName = WorldSettings.Walls[overTile.Wall].Name + "[" + overTile.Wall + "]";
                string tileName = overTile.IsActive ? WorldSettings.Tiles[overTile.Type].Name + "[" + overTile.Type + "]" : "[empty]";
                string fluidname = "[no fluid]";
                if (overTile.Liquid > 0)
                {
                    fluidname = overTile.IsLava ? "Lava" : "Water";
                    fluidname += " [" + overTile.Liquid.ToString() + "]";
                }

                FluidName = fluidname;
                TileName = tileName;
                WallName = wallName;
                Frame = overTile.Frame;

                if (ActiveTool != null)
                    ActiveTool.MoveTool(e);

            }

            MouseOverTile = e.Tile;  // Set last as PreviewOffset may have been changed
        }
Exemplo n.º 9
0
        private void CheckDirectionandDraw(TileMouseEventArgs e)
        {
            PointInt32 p = e.Tile;
            if (_isRightDown)
            {
                if (_isLeftDown)
                    p.X = _startPoint.X;
                else
                    p.Y = _startPoint.Y;

                DrawLine(p);
                _startPoint = p;
            }
            else if (_isLeftDown)
            {
                DrawLine(p);
                _startPoint = p;
            }
        }
Exemplo n.º 10
0
 public override bool PressTool(TileMouseEventArgs e)
 {
     PasteClipboard(new PointInt32(e.Tile.X - _properties.Offset.X,
                                   e.Tile.Y - _properties.Offset.Y));
     return false;
 }
Exemplo n.º 11
0
        public override bool PressTool(TileMouseEventArgs e)
        {
            tilesChecked = new bool[_world.Header.WorldBounds.Total];

            if (!_isRightDown && !_isLeftDown)
                _startPoint = e.Tile;

            if ((_properties.Height > 0 && _properties.Width > 0) &&
                (_lastUsedSize.Width != _properties.Width || _lastUsedSize.Height != _properties.Height))
                _lastUsedSize = new SizeInt32(_properties.Width, _properties.Height);

            CheckDirectionandDraw(e);
            _isLeftDown = (e.LeftButton == MouseButtonState.Pressed);
            _isRightDown = (e.RightButton == MouseButtonState.Pressed);
            return true;
        }
Exemplo n.º 12
0
 private void OnMouseWheel(TileMouseEventArgs e)
 {
     if ((e.Tile.X < _world.Header.MaxTiles.X &&
         e.Tile.Y < _world.Header.MaxTiles.Y &&
         e.Tile.X >= 0 &&
         e.Tile.Y >= 0) && (_world.Tiles[e.Tile.X, e.Tile.Y] != null))
     {
         if (e.WheelDelta > 0)
             Zoom = Zoom * 1.1;
         if (e.WheelDelta < 0)
             Zoom = Zoom * 0.9;
     }
 }
Exemplo n.º 13
0
        private void OnMouseOverPixel(TileMouseEventArgs e)
        {
            MouseOverTile = e.Tile;

            if ((e.Tile.X < _world.Header.MaxTiles.X &&
                e.Tile.Y < _world.Header.MaxTiles.Y &&
                e.Tile.X >= 0 &&
                e.Tile.Y >= 0) && (_world.Tiles[e.Tile.X, e.Tile.Y] != null))
            {
                Tile overTile = _world.Tiles[e.Tile.X, e.Tile.Y];

                string wallName = Settings.Walls[overTile.Wall].Name;
                string tileName = overTile.IsActive ? Settings.Tiles[overTile.Type].Name : "[empty]";
                string fluidname = "[no fluid]";
                if (overTile.Liquid > 0)
                {
                    fluidname = overTile.IsLava ? "Lava" : "Water";
                    fluidname += " [" + overTile.Liquid.ToString() + "]";
                }

                FluidName = fluidname;
                TileName = tileName;
                WallName = wallName;

                if (ActiveTool != null)
                    ActiveTool.MoveTool(e);
            }
        }
Exemplo n.º 14
0
        private void OnMouseDownPixel(TileMouseEventArgs e)
        {
            if ((e.Tile.X < _world.Header.MaxTiles.X &&
                e.Tile.Y < _world.Header.MaxTiles.Y &&
                e.Tile.X >= 0 &&
                e.Tile.Y >= 0) && (_world.Tiles[e.Tile.X, e.Tile.Y] != null))
            {
                MouseDownTile = e.Tile;

                if (ActiveTool != null)
                    ActiveTool.PressTool(e);
            }
        }
Exemplo n.º 15
0
        public override bool PressTool(TileMouseEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                Flood(e.Tile);

                _renderer.UpdateWorldImage(new Int32Rect(minX, minY, maxX - minX + 1, maxY - minY + 1));
            }
            HistMan.AddBufferToHistory();
            return true;
        }
Exemplo n.º 16
0
        public override bool PressTool(TileMouseEventArgs e)
        {
            if (!_isRightDown && !_isLeftDown)
                _startPoint = e.Tile;

            CheckDirectionandDraw(e);
            _isLeftDown = (e.LeftButton == MouseButtonState.Pressed);
            _isRightDown = (e.RightButton == MouseButtonState.Pressed);
            return true;
        }
Exemplo n.º 17
0
        public override bool ReleaseTool(TileMouseEventArgs e)
        {
            CheckDirectionandDraw(e);
            _isLeftDown = (e.LeftButton == MouseButtonState.Pressed);
            _isRightDown = (e.RightButton == MouseButtonState.Pressed);

            HistMan.AddBufferToHistory();

            return true;
        }
        private void ViewportMouseMove(object sender, MouseEventArgs e)
        {
            var vm = (WorldViewModel)DataContext;

            var cargs = new TileMouseEventArgs
                            {
                                Tile = GetTileAtPixel(e.GetPosition((IInputElement)sender)),
                                LeftButton = e.LeftButton,
                                RightButton = e.RightButton,
                                MiddleButton = e.MiddleButton,
                                WheelDelta = 0
                            };

            if (cargs.MiddleButton == MouseButtonState.Pressed)
            {
                Cursor = Cursors.ScrollAll;

                var partView = (ScrollViewer)FindName("WorldScrollViewer");
                if (partView != null)
                {
                    var currentScrollPosition = new Point(partView.HorizontalOffset, partView.VerticalOffset);
                    Point currentMousePosition = e.GetPosition(this);
                    var delta = new Point(currentMousePosition.X - _mouseDownAbsolute.X,
                                          currentMousePosition.Y - _mouseDownAbsolute.Y);

                    partView.ScrollToHorizontalOffset(currentScrollPosition.X + (delta.X) / 128.0);
                    partView.ScrollToVerticalOffset(currentScrollPosition.Y + (delta.Y) / 128.0);
                }
            }
            else
            {
                Cursor = Cursors.Cross;
            }

            if (vm.MouseMoveCommand.CanExecute(cargs))
                vm.MouseMoveCommand.Execute(cargs);
        }
Exemplo n.º 19
0
        private void OnMouseDownPixel(TileMouseEventArgs e)
        {
            if ((e.Tile.X < _world.Header.WorldBounds.W &&
                 e.Tile.Y < _world.Header.WorldBounds.H &&
                 e.Tile.X >= 0 &&
                 e.Tile.Y >= 0) && (_world.Tiles[e.Tile.X, e.Tile.Y] != null))
            {
                MouseDownTile = e.Tile;

                if (ActiveTool != null)
                {
                    ActiveTool.PressTool(e);

                    if (ActiveTool.Name == "Paste")
                        ActiveTool = null;// Tools.FirstOrDefault(t => t.Value.Name == "Selection").Value;
                }
            }
        }
Exemplo n.º 20
0
 private void SetSpawn(TileMouseEventArgs e)
 {
     if (!WorldSettings.Tiles[_world.Tiles[e.Tile.X, e.Tile.Y].Type].IsSolid ||
         !_world.Tiles[e.Tile.X, e.Tile.Y].IsActive)
     {
         _world.Header.SpawnTile = e.Tile;
     }
 }
Exemplo n.º 21
0
        private void OnMouseUpPixel(TileMouseEventArgs e)
        {
            if ((e.Tile.X < _world.Header.WorldBounds.W &&
                 e.Tile.Y < _world.Header.WorldBounds.H &&
                 e.Tile.X >= 0 &&
                 e.Tile.Y >= 0) && (_world.Tiles[e.Tile.X, e.Tile.Y] != null))
            {
                MouseUpTile = e.Tile;

                if (ActiveTool != null)
                    ActiveTool.ReleaseTool(e);
            }
        }
Exemplo n.º 22
0
 public override bool MoveTool(TileMouseEventArgs e)
 {
     if (e.LeftButton == MouseButtonState.Pressed)
         _selection.SetRectangle(_startselection, e.Tile);
     return false;
 }
 public override bool ReleaseTool(TileMouseEventArgs e)
 {
     // Do nothing on release
     return false;
 }
Exemplo n.º 24
0
 public override bool PressTool(TileMouseEventArgs e)
 {
     if (e.LeftButton == MouseButtonState.Pressed)
         _startselection = e.Tile;
     if (e.RightButton == MouseButtonState.Pressed && e.LeftButton == MouseButtonState.Released)
     {
         _selection.Deactive();
     }
     return true;
 }
Exemplo n.º 25
0
 public override bool MoveTool(TileMouseEventArgs e)
 {
     return false;
 }
Exemplo n.º 26
0
 public override bool PressTool(TileMouseEventArgs e)
 {
     if (_spritePicker.SelectedSprite != null)
     {
         if (e.LeftButton == MouseButtonState.Pressed)
         {
             var cursprite = _spritePicker.SelectedSprite;
             PlaceSprite(e.Tile, (byte) cursprite.ID, cursprite.Size, cursprite.UpperLeft);
             //PlaceBrownChest(e.Tile);
         }
         return true;
     }
     return false;
 }
        private void ViewportMouseWheel(object sender, MouseWheelEventArgs e)
        {
            var cargs = new TileMouseEventArgs
                            {
                                Tile = GetTileAtPixel(e.GetPosition((IInputElement)sender)),
                                LeftButton = e.LeftButton,
                                RightButton = e.RightButton,
                                MiddleButton = e.MiddleButton,
                                WheelDelta = e.Delta
                            };

            var vm = (WorldViewModel)DataContext;
            var partView = (ScrollViewer)FindName("WorldScrollViewer");

            double initialZoom = vm.Zoom;
            var initialScrollPosition = new Point(partView.HorizontalOffset, partView.VerticalOffset);
            var initialCenterTile =
                new PointInt32((int)(partView.HorizontalOffset / initialZoom + (partView.ActualWidth / 2) / initialZoom),
                               (int)(partView.VerticalOffset / initialZoom + (partView.ActualHeight / 2) / initialZoom));

            if (vm.MouseWheelCommand.CanExecute(cargs))
                vm.MouseWheelCommand.Execute(cargs);

            double finalZoom = vm.Zoom;
            //var finalScrollPosition = new Point(partView.HorizontalOffset, partView.VerticalOffset);
            double zoomRatio = 1 - finalZoom / initialZoom;
            var scaleCenterTile = new PointInt32(
                (int)(initialCenterTile.X - ((cargs.Tile.X - initialCenterTile.X) * zoomRatio)),
                (int)(initialCenterTile.Y - ((cargs.Tile.Y - initialCenterTile.Y) * zoomRatio)));
            ScrollToTile(scaleCenterTile);

            ViewportRerender(sender, null);  // scroll/zoom change needs a re-render
        }
Exemplo n.º 28
0
 public override bool MoveTool(TileMouseEventArgs e)
 {
     CheckDirectionandDraw(e);
     return false;
 }
        private void ViewportMouseMove(object sender, MouseEventArgs e)
        {
            var vm = (WorldViewModel)DataContext;

            var cargs = new TileMouseEventArgs
                            {
                                Tile = GetTileAtPixel(e.GetPosition((IInputElement)sender)),
                                LeftButton = e.LeftButton,
                                RightButton = e.RightButton,
                                MiddleButton = e.MiddleButton,
                                WheelDelta = 0
                            };

            var partView = (ScrollViewer)FindName("WorldScrollViewer");

            // Standard middle-button crazy scroll
            if (partView != null && cargs.MiddleButton == MouseButtonState.Pressed)
            {
                Cursor = Cursors.ScrollAll;

                var currentScrollPosition = new Point(partView.HorizontalOffset, partView.VerticalOffset);
                Point currentMousePosition = e.GetPosition(this);
                var delta = new Point(currentMousePosition.X - _mouseDownAbsolute.X,
                                      currentMousePosition.Y - _mouseDownAbsolute.Y);

                partView.ScrollToHorizontalOffset(currentScrollPosition.X + (delta.X) / 128.0);
                partView.ScrollToVerticalOffset  (currentScrollPosition.Y + (delta.Y) / 128.0);

                ViewportRerender(sender, null);  // scroll change needs a re-render
            }
            // Google-like drag/drop scroll
            else if (partView != null && cargs.RightButton == MouseButtonState.Pressed && (vm.ActiveTool == null || vm.ActiveTool.Name == "Arrow"))
            {
                Cursor = Cursors.SizeAll;

                Point currentMousePosition = e.GetPosition(this);
                var delta = new Point(currentMousePosition.X - _mouseDownAbsolute.X,
                                      currentMousePosition.Y - _mouseDownAbsolute.Y);

                partView.ScrollToHorizontalOffset(_scrollDownAbsolute.X - delta.X);  // (dragging means going the opposite direction of the mouse)
                partView.ScrollToVerticalOffset  (_scrollDownAbsolute.Y - delta.Y);

                ViewportRerender(sender, null);  // scroll change needs a re-render
            }
            else {
                Cursor = Cursors.Cross;
            }

            if (vm.MouseMoveCommand.CanExecute(cargs))
                vm.MouseMoveCommand.Execute(cargs);

            if (cargs.LeftButton == MouseButtonState.Pressed || cargs.RightButton == MouseButtonState.Pressed)
                ViewportRerender(sender, null);  // may be potentially drawing
        }
Exemplo n.º 30
0
 private void CheckDirectionandDraw(TileMouseEventArgs e)
 {
     PointInt32 p = e.Tile;
     // Free range draw only
     if (_isLeftDown && !_isRightDown) {
         DrawLine(p);
         _startPoint = p;
     }
 }