示例#1
0
        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;
        }
示例#2
0
        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));
        }
示例#3
0
        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;
        }
示例#4
0
 public void NextTile(int x, int y)
 {
     Screen = mapToScreenMapper(x, y);
 }
示例#5
0
 public DoublePoint ScreenPositionToMapPosition(ContinuousViewportCoordinates screenPosition)
 {
     return(config.Viewport.ScreenPositionToMapPosition(screenPosition));
 }
示例#6
0
 void OnMouseDragStarted(object sender, MouseEventArgs e)
 {
     dragStartPosition = e.Position;
     viewportPosition  = GameRendering.CenterPoint;
 }
示例#7
0
        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();
        }
示例#8
0
/*
 *  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));
        }
示例#9
0
        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);
        }