chore: simplifying world bootstrapping

This commit is contained in:
2026-03-25 12:49:14 -04:00
parent a5e0037311
commit 00a1e58184

View File

@@ -16,15 +16,10 @@ internal sealed class WorldBuilder(
generationService.InjectSpecialSystems(catalog.AuthoredSystems), generationService.InjectSpecialSystems(catalog.AuthoredSystems),
worldGeneration.TargetSystemCount); worldGeneration.TargetSystemCount);
Console.WriteLine("TEST");
Console.WriteLine(string.Join(',', systems.Select(s => s.Id)));
var scenario = dataLoader.NormalizeScenarioToAvailableSystems( var scenario = dataLoader.NormalizeScenarioToAvailableSystems(
catalog.Scenario, catalog.Scenario,
systems.Select(system => system.Id).ToList()); systems.Select(system => system.Id).ToList());
Console.WriteLine(string.Join(',', systems.Select(s => s.Id)));
var systemRuntimes = systems var systemRuntimes = systems
.Select(definition => new SystemRuntime .Select(definition => new SystemRuntime
{ {
@@ -72,35 +67,6 @@ internal sealed class WorldBuilder(
? seedingService.CreatePlayerFaction(factions, stations, ships, commanders, policies, nowUtc) ? seedingService.CreatePlayerFaction(factions, stations, ships, commanders, policies, nowUtc)
: null; : null;
var claims = seedingService.CreateClaims(stations, spatialLayout.Celestials, nowUtc); var claims = seedingService.CreateClaims(stations, spatialLayout.Celestials, nowUtc);
var bootstrapWorld = new SimulationWorld
{
Label = "Split Viewer / Bootstrap World",
Seed = WorldSeed,
Balance = catalog.Balance,
Systems = systemRuntimes,
Celestials = spatialLayout.Celestials,
Nodes = spatialLayout.Nodes,
Wrecks = [],
Stations = stations,
Ships = ships,
Factions = factions,
PlayerFaction = playerFaction,
Commanders = commanders,
Claims = claims,
ConstructionSites = [],
MarketOrders = [],
Policies = policies,
ShipDefinitions = new Dictionary<string, ShipDefinition>(catalog.ShipDefinitions, StringComparer.Ordinal),
ItemDefinitions = new Dictionary<string, ItemDefinition>(catalog.ItemDefinitions, StringComparer.Ordinal),
ModuleDefinitions = new Dictionary<string, ModuleDefinition>(catalog.ModuleDefinitions, StringComparer.Ordinal),
ModuleRecipes = new Dictionary<string, ModuleRecipeDefinition>(catalog.ModuleRecipes, StringComparer.Ordinal),
Recipes = new Dictionary<string, RecipeDefinition>(catalog.Recipes, StringComparer.Ordinal),
ProductionGraph = catalog.ProductionGraph,
OrbitalTimeSeconds = WorldSeed * 97d,
GeneratedAtUtc = nowUtc,
};
var (constructionSites, marketOrders) = seedingService.CreateConstructionSites(bootstrapWorld);
var world = new SimulationWorld var world = new SimulationWorld
{ {
Label = "Split Viewer / Simulation World", Label = "Split Viewer / Simulation World",
@@ -117,8 +83,8 @@ internal sealed class WorldBuilder(
Geopolitics = null, Geopolitics = null,
Commanders = commanders, Commanders = commanders,
Claims = claims, Claims = claims,
ConstructionSites = constructionSites, ConstructionSites = [],
MarketOrders = marketOrders, MarketOrders = [],
Policies = policies, Policies = policies,
ShipDefinitions = new Dictionary<string, ShipDefinition>(catalog.ShipDefinitions, StringComparer.Ordinal), ShipDefinitions = new Dictionary<string, ShipDefinition>(catalog.ShipDefinitions, StringComparer.Ordinal),
ItemDefinitions = new Dictionary<string, ItemDefinition>(catalog.ItemDefinitions, StringComparer.Ordinal), ItemDefinitions = new Dictionary<string, ItemDefinition>(catalog.ItemDefinitions, StringComparer.Ordinal),
@@ -127,9 +93,13 @@ internal sealed class WorldBuilder(
Recipes = new Dictionary<string, RecipeDefinition>(catalog.Recipes, StringComparer.Ordinal), Recipes = new Dictionary<string, RecipeDefinition>(catalog.Recipes, StringComparer.Ordinal),
ProductionGraph = catalog.ProductionGraph, ProductionGraph = catalog.ProductionGraph,
OrbitalTimeSeconds = WorldSeed * 97d, OrbitalTimeSeconds = WorldSeed * 97d,
GeneratedAtUtc = DateTimeOffset.UtcNow, GeneratedAtUtc = nowUtc,
}; };
var (constructionSites, marketOrders) = seedingService.CreateConstructionSites(world);
world.ConstructionSites.AddRange(constructionSites);
world.MarketOrders.AddRange(marketOrders);
var geopolitics = new GeopoliticalSimulationService(); var geopolitics = new GeopoliticalSimulationService();
geopolitics.Update(world, 0f, []); geopolitics.Update(world, 0f, []);
return world; return world;