Files
space-game/apps/backend/Universe/Scenario/WorldTopologyBuilder.cs

30 lines
1.0 KiB
C#

using SpaceGame.Api.Universe.Bootstrap;
namespace SpaceGame.Api.Universe.Scenario;
public sealed class WorldTopologyBuilder(
IStaticDataProvider staticData,
SystemGenerationService generationService,
SpatialBuilder spatialBuilder)
{
public WorldBuildTopology Build(WorldGenerationOptions worldGenerationOptions)
{
var systems = generationService.GenerateSystems(
generationService.PrepareKnownSystems(staticData.KnownSystems),
worldGenerationOptions);
var systemRuntimes = systems
.Select(definition => new SystemRuntime
{
Definition = definition,
Position = LoaderSupport.ToVector(definition.Position),
})
.ToList();
var systemsById = systemRuntimes.ToDictionary(system => system.Definition.Id, StringComparer.Ordinal);
var spatialLayout = spatialBuilder.BuildLayout(systemRuntimes);
return new WorldBuildTopology(systems, systemRuntimes, systemsById, spatialLayout);
}
}