public Task GenerateForAllWorlds() { return(Task.Run(() => { using (var scope = _serviceFactory.CreateScope()) { var context = scope.ServiceProvider.GetService <DatabaseContext>(); var worlds = context.Servers.Include(s => s.World) .Where(s => s.World != null) .Select(s => s.World) .ToList(); foreach (var world in worlds) { try { _logger.LogInformation($"Generating map for world. ID: {world.ID} Path: '{world.Path}'"); var worldPath = _environment.BuildPath(_pathOptions.WorldDirectory, world.Path); var mapPath = _environment.BuildPath(_pathOptions.WorldDirectory, "map", world.Path); var parser = _worldParserFactory.Create(worldPath); if (!parser.GetRegions(TARGET_REGION).Any()) { _logger.LogInformation($"World has no region files. Skipping. ID: {world.ID} Path: '{world.Path}'"); continue; } var fileBasedRegionCache = new FileBasedRegionCache(worldPath); var renderer = _mapRendererFactory.Create2DRender(parser, fileBasedRegionCache); var renderResult = renderer.GenerateBlockBitmap(TARGET_REGION); renderResult.Bitmap.Save(Path.Combine(mapPath, "map.png")); renderResult.Bitmap.Mutate(x => x.Resize(new Size(200, 200))); renderResult.Bitmap.Save(Path.Combine(mapPath, "map_thumb.png")); var mapRenderResultDataFilePath = Path.Combine(mapPath, "render-result.json"); File.WriteAllText(mapRenderResultDataFilePath, JsonConvert.SerializeObject(new { OffsetX = renderResult.OffsetX, OffsetZ = renderResult.OffsetZ, UnknownBlocks = renderResult.UnknownRenderEntites.OrderByDescending(x => x.Value) })); _logger.LogInformation($"Finished generating map for world. ID: {world.ID} Path: '{world.Path}'"); } catch (Exception e) { _logger.LogError(new EventId(), e, $"An error ocurred when generating map for world. ID: {world.ID} Path: '{world.Path}' "); } } } })); }
public void lsdgj() { //var databaseOptions = new DbContextOptionsBuilder<DatabaseContext>() // .UseInMemoryDatabase() // .Options; //var context = new DatabaseContext(databaseOptions); //var serviceCollection = new ServiceCollection(); //serviceCollection.AddTransient<DatabaseContext>(services => context); //var scopeFactory = new Mock<IServiceScopeFactory>(); //scopeFactory.Setup(x => x.CreateScope()) // .Returns(() => // { // var scope = new Mock<IServiceScope>(); // scope.SetupGet(s => s.ServiceProvider) // .Returns(new DefaultServiceProviderFactory().CreateServiceProvider(serviceCollection)); // return scope.Object; // }); //var hostingEnvironment = new Mock<IHostingEnvironment>(); //var options = new Mock<IOptions<Configuration>>(); //options.SetupGet(x => x.Value) // .Returns(new Configuration // { // WorldDirectory = @"C:\Users\hedlundn\Desktop\worlds\" // }); //var logger = new Mock<ILogger<WorldInfoService>>(); //context.Servers.Add(new Common.Database.Models.Server //{ // World = new Common.Database.Models.World // { // Path = "604b2298e89a4733ad54f607ab83948e" // } //}); //context.SaveChanges(); //var worldInfoService = new WorldInfoService(scopeFactory.Object, // new WorldParserFactory(), // hostingEnvironment.Object, // options.Object, // logger.Object); //worldInfoService.GenerateForAllWorlds().Wait(); //var region = parser.GetRegions(RegionType.Overworld).First(); //var column = region.Columns.First(); //var blockEnties = region.Columns.SelectMany(c => c.BlockEntities).ToList(); //var chunk = column.Chunks.First(); //var blocks = chunk.Blocks.ToList(); //var blocks = parser.GetRegions(RegionType.Overworld).SelectMany(r => r.Columns) // .SelectMany(c => c.Entities) // .ToList(); var worldPath = @"../../../../Testfiles/world"; var parser = new WorldParser(worldPath); var fileBasedRegionCache = new FileBasedRegionCache(worldPath); var renderer = new MapRenderer2D(parser, new TextureProvider(new WorldParsing.MapTools.Models.TextureOptions { BlockColorsFilePath = "../../../../Mineman.WorldParsing/Resources/blockcolors.json", BiomeColorsFilePath = "../../../../Mineman.WorldParsing/Resources/biomecolors.json" }), fileBasedRegionCache); var result = renderer.GenerateBlockBitmap(RegionType.Overworld); result.Bitmap.Save(@"C:\Users\hedlundn\Desktop\map-overworld.png"); renderer.GenerateBiomeBitmap(RegionType.Overworld).Bitmap.Save(@"C:\Users\hedlundn\Desktop\map-overworld-biome.png"); }