示例#1
0
        private MapTileCenter GetClosestNeigbour(Vector2f position)
        {
            MapTileCenter closest = GetClosestTile(position + new Vector2f(Textures["1"].Size.X, 0));
            MapTileCenter next    = GetClosestTile(position - new Vector2f(Textures["1"].Size.X, 0));

            if ((closest.Position - position).X * (closest.Position - position).X +
                (closest.Position - position).Y * (next.Position - position).Y <
                (next.Position - position).X * (next.Position - position).X +
                (next.Position - position).Y * (next.Position - position).Y)
            {
                closest = next;
            }

            next = GetClosestTile(position + new Vector2f(0, Textures["1"].Size.Y));
            if ((closest.Position - position).X * (closest.Position - position).X +
                (closest.Position - position).Y * (next.Position - position).Y <
                (next.Position - position).X * (next.Position - position).X +
                (next.Position - position).Y * (next.Position - position).Y)
            {
                closest = next;
            }
            next = GetClosestTile(position - new Vector2f(0, Textures["1"].Size.Y));
            if ((closest.Position - position).X * (closest.Position - position).X +
                (closest.Position - position).Y * (next.Position - position).Y <
                (next.Position - position).X * (next.Position - position).X +
                (next.Position - position).Y * (next.Position - position).Y)
            {
                closest = next;
            }

            return(closest);
        }
示例#2
0
        private string GetTexture(Vector2f position)
        {
            MapTileCenter onPosition       = GetClosestTile(position);
            MapTileCenter closestNeighbour = GetClosestNeigbour(position);

            if (onPosition.Tile != closestNeighbour.Tile)
            {
                return(onPosition.Tile.ToString() + closestNeighbour.Tile.ToString());
            }

            return(onPosition.Tile.ToString());
        }
示例#3
0
        private MapTileCenter GetClosestTile(Vector2f position)
        {
            MapTileCenter closest = Tiles[0];

            foreach (var tile in Tiles)
            {
                if ((closest.Position - position).X * (closest.Position - position).X +
                    (closest.Position - position).Y * (tile.Position - position).Y <
                    (tile.Position - position).X * (tile.Position - position).X +
                    (tile.Position - position).Y * (tile.Position - position).Y)
                {
                    closest = tile;
                }
            }

            return(closest);
        }