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 (Check2x2(c.Location, e.Tile)) { _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 (Check2x2(s.Location, e.Tile)) { _signPopup = new SignPopup(s); _signPopup.IsOpen = true; } } return(false); }
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 }
private void CheckDirectionandDraw(TileMouseEventArgs e) { PointInt32 p = e.Tile; // Free range draw only /* if (_isLeftDown && !_isRightDown) { * DrawLine(p); * _startPoint = p; * } */ if (_isRightDown) { if (_isLeftDown) { p.X = _startPoint.X; } else { p.Y = _startPoint.Y; } DrawLine(p); _startPoint = p; } else if (_isLeftDown) { DrawLine(p); _startPoint = p; } }
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 }
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 } }
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.DungeonEntrance = e.Tile; } }
public override bool MoveTool(TileMouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { _selection.SetRectangle(_startselection, e.Tile); } return(false); }
public override bool MoveTool(TileMouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { SetSpawn(e); } return(true); }
public override bool ReleaseTool(TileMouseEventArgs e) { CheckDirectionandDraw(e); _isLeftDown = (e.LeftButton == MouseButtonState.Pressed); _isRightDown = (e.RightButton == MouseButtonState.Pressed); HistMan.AddBufferToHistory(); return(true); }
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); }
private void CheckDirectionandDraw(TileMouseEventArgs e) { PointInt32 p = e.Tile; // Free range draw only if (_isLeftDown && !_isRightDown) { DrawLine(p); _startPoint = p; } }
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); }
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); }
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); }
public override bool ReleaseTool(TileMouseEventArgs e) { if (_startPoint != null) { DrawLine(e.Tile); } _isLeftDown = (e.LeftButton == MouseButtonState.Pressed); _isRightDown = (e.RightButton == MouseButtonState.Pressed); HistMan.AddBufferToHistory(); _startPoint = null; _endPoint = null; return(true); }
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); } } }
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... } } }
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); }
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 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; } } } }
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 }
public abstract bool MoveTool(TileMouseEventArgs e);
public override bool MoveTool(TileMouseEventArgs e) { CheckDirectionandDraw(e); return(false); }
public override bool PressTool(TileMouseEventArgs e) { PasteClipboard(new PointInt32(e.Tile.X - _properties.Offset.X, e.Tile.Y - _properties.Offset.Y)); return(false); }
public override bool MoveTool(TileMouseEventArgs e) { WriteableBitmap bmp; if (_startPoint != null) { _endPoint = e.Tile; } CheckDirectionandDraw(e); ToolAnchorMode mode = ToolAnchorMode.Center; // Line draw preview if (_isRightDown && _startPoint != null && _endPoint != null) { var sp = (PointInt32)_startPoint; var ep = (PointInt32)_endPoint; var delta = ep - sp; var rect = new RectI(new PointInt32(), new SizeInt32(Math.Abs(delta.X) + 1, Math.Abs(delta.Y) + 1)); // figure out exactly which PreviewMode mode = 0; if (delta.X < 0) { mode += (int)ToolAnchorModeParts.Left; } else if (delta.X == 0) { mode += (int)ToolAnchorModeParts.Center; } else if (delta.X > 0) { mode += (int)ToolAnchorModeParts.Right; } if (delta.Y < 0) { mode += (int)ToolAnchorModeParts.Top; } else if (delta.Y == 0) { mode += (int)ToolAnchorModeParts.Middle; } else if (delta.Y > 0) { mode += (int)ToolAnchorModeParts.Bottom; } // which direction to draw the line var linePnts = new PointInt32[2]; switch (mode) { case ToolAnchorMode.TopLeft: linePnts = new[] { rect.BottomRight, rect.TopLeft }; break; case ToolAnchorMode.TopRight: linePnts = new[] { rect.BottomLeft, rect.TopRight }; break; case ToolAnchorMode.BottomLeft: linePnts = new[] { rect.TopRight, rect.BottomLeft }; break; case ToolAnchorMode.BottomRight: linePnts = new[] { rect.TopLeft, rect.BottomRight }; break; default: // has middle or center, order doesn't matter linePnts = new[] { rect.TopLeft, rect.BottomRight }; break; } bmp = new WriteableBitmap( rect.W, rect.H, 96, 96, System.Windows.Media.PixelFormats.Bgra32, null); bmp.Clear(); foreach (PointInt32 p in WorldRenderer.DrawLine(linePnts[0], linePnts[1])) { if (_selection.IsValid(p)) { bmp.SetPixel(p.X, p.Y, previewColor); } } } // Single dot else { bmp = new WriteableBitmap( 1, 1, 96, 96, System.Windows.Media.PixelFormats.Bgra32, null); bmp.Clear(); bmp.SetPixel(0, 0, previewColor); } _properties.Image = bmp; _properties.PreviewMode = mode; return(false); }
public override bool ReleaseTool(TileMouseEventArgs e) { // Do nothing on release return(false); }
public abstract bool ReleaseTool(TileMouseEventArgs e);
public override bool MoveTool(TileMouseEventArgs e) { return(false); }
public abstract bool PressTool(TileMouseEventArgs e);