Complete universe model migration
This commit is contained in:
@@ -1097,14 +1097,14 @@ internal sealed class CommanderPlanningService
|
||||
{
|
||||
theaters.Add(new FactionTheaterRuntime
|
||||
{
|
||||
Id = $"theater-expansion-{expansionProject.SystemId}-{expansionProject.CelestialId}",
|
||||
Id = $"theater-expansion-{expansionProject.SystemId}-{expansionProject.AnchorId}",
|
||||
Kind = "expansion-front",
|
||||
SystemId = expansionProject.SystemId,
|
||||
Status = "active",
|
||||
Priority = 65f + (economicAssessment.HasShipyard ? 0f : 15f),
|
||||
SupplyRisk = ComputeSystemRisk(world, faction, expansionProject.SystemId),
|
||||
FriendlyAssetValue = EstimateFriendlyAssetValue(world, faction.Id, expansionProject.SystemId),
|
||||
AnchorEntityId = expansionProject.SiteId ?? expansionProject.CelestialId,
|
||||
AnchorEntityId = expansionProject.SiteId ?? expansionProject.AnchorId,
|
||||
AnchorPosition = ResolveExpansionAnchor(world, expansionProject),
|
||||
UpdatedAtUtc = nowUtc,
|
||||
});
|
||||
@@ -1272,7 +1272,7 @@ internal sealed class CommanderPlanningService
|
||||
],
|
||||
"expansion" =>
|
||||
[
|
||||
new FactionPlanStepRuntime { Id = $"{campaign.Id}-claim", Kind = "secure-claim", Status = "active", Summary = $"Secure {expansionProject?.CelestialId ?? campaign.TargetEntityId} for construction." },
|
||||
new FactionPlanStepRuntime { Id = $"{campaign.Id}-claim", Kind = "secure-claim", Status = "active", Summary = $"Secure {expansionProject?.AnchorId ?? campaign.TargetEntityId} for construction." },
|
||||
new FactionPlanStepRuntime { Id = $"{campaign.Id}-supply", Kind = "supply-site", Status = "planned", Summary = "Move construction materials to the site." },
|
||||
new FactionPlanStepRuntime { Id = $"{campaign.Id}-guard", Kind = "guard-site", Status = "planned", Summary = "Defend the expansion site until operational." },
|
||||
],
|
||||
@@ -2725,7 +2725,7 @@ internal sealed class CommanderPlanningService
|
||||
AreaSystemId = areaSystemId,
|
||||
TargetEntityId = objective.TargetEntityId,
|
||||
ItemId = objective.ItemId ?? fallback.ItemId,
|
||||
PreferredNodeId = fallback.PreferredNodeId,
|
||||
PreferredAnchorId = fallback.PreferredAnchorId,
|
||||
PreferredConstructionSiteId = objective.Kind is "construct-site" or "supply-site" ? objective.TargetEntityId : fallback.PreferredConstructionSiteId,
|
||||
PreferredModuleId = fallback.PreferredModuleId,
|
||||
TargetPosition = objective.TargetPosition ?? fallback.TargetPosition,
|
||||
@@ -2750,7 +2750,7 @@ internal sealed class CommanderPlanningService
|
||||
target.AreaSystemId = source.AreaSystemId;
|
||||
target.TargetEntityId = source.TargetEntityId;
|
||||
target.ItemId = source.ItemId;
|
||||
target.PreferredNodeId = source.PreferredNodeId;
|
||||
target.PreferredAnchorId = source.PreferredAnchorId;
|
||||
target.PreferredConstructionSiteId = source.PreferredConstructionSiteId;
|
||||
target.PreferredModuleId = source.PreferredModuleId;
|
||||
target.TargetPosition = source.TargetPosition;
|
||||
@@ -2771,7 +2771,7 @@ internal sealed class CommanderPlanningService
|
||||
&& string.Equals(left.AreaSystemId, right.AreaSystemId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.TargetEntityId, right.TargetEntityId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.ItemId, right.ItemId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.PreferredNodeId, right.PreferredNodeId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.PreferredAnchorId, right.PreferredAnchorId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.PreferredConstructionSiteId, right.PreferredConstructionSiteId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.PreferredModuleId, right.PreferredModuleId, StringComparison.Ordinal)
|
||||
&& Nullable.Equals(left.TargetPosition, right.TargetPosition)
|
||||
@@ -2792,7 +2792,7 @@ internal sealed class CommanderPlanningService
|
||||
&& string.Equals(left.SourceStationId, right.SourceStationId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.DestinationStationId, right.DestinationStationId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.ItemId, right.ItemId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.NodeId, right.NodeId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.AnchorId, right.AnchorId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.ConstructionSiteId, right.ConstructionSiteId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.ModuleId, right.ModuleId, StringComparison.Ordinal)
|
||||
&& left.WaitSeconds.Equals(right.WaitSeconds)
|
||||
@@ -2863,9 +2863,10 @@ internal sealed class CommanderPlanningService
|
||||
}
|
||||
|
||||
var site = world.ConstructionSites.FirstOrDefault(candidate => candidate.Id == entityId);
|
||||
if (site?.CelestialId is { } celestialId)
|
||||
if (site is not null)
|
||||
{
|
||||
return world.Celestials.FirstOrDefault(celestial => celestial.Id == celestialId)?.Position;
|
||||
return world.Anchors.FirstOrDefault(anchor => anchor.Id == site.AnchorId)?.Position
|
||||
?? Vector3.Zero;
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -2919,7 +2920,7 @@ internal sealed class CommanderPlanningService
|
||||
&& string.Equals(left.SourceStationId, right.SourceStationId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.DestinationStationId, right.DestinationStationId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.ItemId, right.ItemId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.NodeId, right.NodeId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.AnchorId, right.AnchorId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.ConstructionSiteId, right.ConstructionSiteId, StringComparison.Ordinal)
|
||||
&& string.Equals(left.ModuleId, right.ModuleId, StringComparison.Ordinal)
|
||||
&& left.WaitSeconds.Equals(right.WaitSeconds)
|
||||
@@ -3382,7 +3383,7 @@ internal sealed class CommanderPlanningService
|
||||
{
|
||||
"defense-front" => $"Defend {theater.SystemId} from hostile pressure.",
|
||||
"offense-front" => $"Project force into {theater.SystemId}.",
|
||||
"expansion-front" => $"Expand into {expansionProject?.CelestialId ?? theater.SystemId}.",
|
||||
"expansion-front" => $"Expand into {expansionProject?.AnchorId ?? theater.SystemId}.",
|
||||
"economic-front" => $"Stabilize commodity shortages around {theater.AnchorEntityId ?? theater.SystemId}.",
|
||||
_ => theater.Kind,
|
||||
};
|
||||
@@ -3424,13 +3425,13 @@ internal sealed class CommanderPlanningService
|
||||
private static Vector3 ResolveExpansionAnchor(SimulationWorld world, IndustryExpansionProject project)
|
||||
{
|
||||
if (project.SiteId is not null
|
||||
&& world.ConstructionSites.FirstOrDefault(site => site.Id == project.SiteId) is { } site
|
||||
&& world.Celestials.FirstOrDefault(candidate => candidate.Id == site.CelestialId) is { } siteCelestial)
|
||||
&& world.ConstructionSites.FirstOrDefault(site => site.Id == project.SiteId) is { } site)
|
||||
{
|
||||
return siteCelestial.Position;
|
||||
return world.Anchors.FirstOrDefault(candidate => candidate.Id == site.AnchorId)?.Position
|
||||
?? Vector3.Zero;
|
||||
}
|
||||
|
||||
return world.Celestials.FirstOrDefault(candidate => candidate.Id == project.CelestialId)?.Position
|
||||
return world.Anchors.FirstOrDefault(candidate => candidate.Id == project.AnchorId)?.Position
|
||||
?? ResolveSystemAnchor(world, project.SystemId);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user