void OnMouseDragged(object sender, MouseEventArgs e) { var delta = e.Position - dragStartPosition; var deltaInView = ContinuousViewportCoordinates.FromPixels(GameRendering.TileSize, delta.X, delta.Y); GameRendering.CenterPoint = viewportPosition - deltaInView; }
void OnMouseDragFinished(object sender, MouseEventArgs e) { var delta = e.Position - dragStartPosition; var deltaInView = ContinuousViewportCoordinates.FromPixels(GameRendering.TileSize, delta.X, delta.Y); Debug.WriteLine("Finished move: " + delta + " - " + (GameRendering.CenterPoint - deltaInView)); }
void OnMouseMoved(object sender, MouseEventArgs e) { var pointedPosition = MouseRelativeToCenter(e.Position); var mouseInScreenScale = ContinuousViewportCoordinates.FromPixels(GameRendering.TileSize, pointedPosition.X, pointedPosition.Y); var posInScreenOrigin = GameRendering.CenterPoint + mouseInScreenScale; var mc = GameRendering.ScreenPositionToMapCoordinate(posInScreenOrigin.ToViewCoordinate()); GameRendering.MapNavigator.NavigateTo(GridDirection.None, mc, out mc); TileUnderMouseCursor = mc; }
public void NextTile(int x, int y) { Screen = mapToScreenMapper(x, y); }
public DoublePoint ScreenPositionToMapPosition(ContinuousViewportCoordinates screenPosition) { return(config.Viewport.ScreenPositionToMapPosition(screenPosition)); }
void OnMouseDragStarted(object sender, MouseEventArgs e) { dragStartPosition = e.Position; viewportPosition = GameRendering.CenterPoint; }
void Root_KeyReleased(object sender, KeyEventArgs e) { var p = GameRendering.CenterPoint; switch (e.Key) { case Keys.NumPad4: case Keys.Left: { p += new ContinuousViewportCoordinates(-StepSize, 0); break; } case Keys.NumPad6: case Keys.Right: { p += new ContinuousViewportCoordinates(+StepSize, 0); break; } case Keys.NumPad8: case Keys.Up: { p += new ContinuousViewportCoordinates(0, -StepSize); break; } case Keys.NumPad2: case Keys.Down: { p += new ContinuousViewportCoordinates(0, +StepSize); break; } case Keys.Home: case Keys.NumPad7: { p += new ContinuousViewportCoordinates(-StepSize, -StepSize); break; } case Keys.PageUp: case Keys.NumPad9: { p += new ContinuousViewportCoordinates(+StepSize, -StepSize); break; } case Keys.End: case Keys.NumPad1: { p += new ContinuousViewportCoordinates(-StepSize, +StepSize); break; } case Keys.PageDown: case Keys.NumPad3: { p += new ContinuousViewportCoordinates(+StepSize, +StepSize); break; } } GameRendering.CenterPoint = p; e.Consume(); }
/* * public Point Transform(Point position) * { * return Transform(position.X, position.Y); * } */ public ContinuousViewportCoordinates Transform(ContinuousViewportCoordinates position) { return(new ContinuousViewportCoordinates(position.X * M11 + position.Y * M12 + M13, position.X * M21 + position.Y * M22 + M23)); }
public static void Main(string[] args) { Console.WriteLine("Starting"); var terrainTypes = new TerrainTypes(); var map = TerrainMap.CreateMap(terrainTypes); var renderType = RenderType.Grid; var navigator = new LimitedRangeNavigator <GridDirection>(GridNavigation.CreateNavigator(renderType), map.Width, map.Height); var desert = new TextTile("Desert", '.', ConsoleColor.DarkYellow); var tileRegistry = new BasicTileRegistry <TextTile>() { { "terrain.grasland", new TextTile("Gras", 'g', ConsoleColor.DarkGreen) }, { "terrain.desert", desert }, { "terrain.hills", new TextTile("Hills", 'h', ConsoleColor.Gray) }, { "terrain.plains", new TextTile("Plains", '_', ConsoleColor.Green) } }; var list = new List <ITileMatcher <TextTile, Nothing> > { new BasicTileSelector <TextTile, Nothing>( (x, y) => map[x, y].Terrain == terrainTypes.Desert, navigator, tileRegistry, "terrain.desert"), new BasicTileSelector <TextTile, Nothing>( (x, y) => map[x, y].Terrain == terrainTypes.Grasland, navigator, tileRegistry, "terrain.grasland"), new BasicTileSelector <TextTile, Nothing>( (x, y) => map[x, y].Terrain == terrainTypes.Hills, navigator, tileRegistry, "terrain.hills"), new BasicTileSelector <TextTile, Nothing>( (x, y) => map[x, y].Terrain == terrainTypes.Plains, navigator, tileRegistry, "terrain.plains") }; var bMatcher = new AggregateTileMatcher <TextTile, Nothing>(list); var viewport = new MapViewport(renderType) { SizeInTiles = new IntDimension(20, 20), CenterPoint = new ContinuousViewportCoordinates(0, 0) }; var consoleRenderer = new ViewportRenderer <TextTile, Nothing>(viewport) { RenderTarget = new ConsoleRenderer() }; var plotOp = new PlotOperation <TextTile, Nothing>(bMatcher, renderType, consoleRenderer); var t = new GridPlotter(viewport, navigator); do { t.Draw(plotOp); var consoleKeyInfo = Console.ReadKey(true); if (consoleKeyInfo.Key == ConsoleKey.Escape || consoleKeyInfo.Key == ConsoleKey.Enter) { break; } var center = viewport.CenterPoint; if (consoleKeyInfo.Key == ConsoleKey.LeftArrow) { center += new ContinuousViewportCoordinates(-1, 0); } if (consoleKeyInfo.Key == ConsoleKey.RightArrow) { center += new ContinuousViewportCoordinates(+1, 0); } if (consoleKeyInfo.Key == ConsoleKey.UpArrow) { center += new ContinuousViewportCoordinates(0, -1); } if (consoleKeyInfo.Key == ConsoleKey.DownArrow) { center += new ContinuousViewportCoordinates(0, +1); } viewport.CenterPoint = center; } while (true); }