Refactor stations to properly use entity prototypes. (stationsv3) (#16570)
* Update StationSpawningSystem.cs Web-edit to allow feeding in an existing entity. * Update StationSpawningSystem.cs value type moment * Update StationSpawningSystem.cs * Oh goddamnit this is a refactor now. * awawawa * aaaaaaaaaaa * ee * forgot records. * no records? no records. * What's in a name? * Sloth forcing me to do the refactor properly smh. * e * optional evac in test. * tests pls work * awa --------- Co-authored-by: moonheart08 <moonheart08@users.noreply.github.com>
This commit is contained in:
@@ -227,51 +227,61 @@ namespace Content.IntegrationTests.Tests
|
||||
// Test shuttle can dock.
|
||||
// This is done inside gamemap test because loading the map takes ages and we already have it.
|
||||
var station = entManager.GetComponent<StationMemberComponent>(targetGrid!.Value).Station;
|
||||
var stationConfig = entManager.GetComponent<StationDataComponent>(station).StationConfig;
|
||||
Assert.IsNotNull(stationConfig, $"{entManager.ToPrettyString(station)} had null StationConfig.");
|
||||
var shuttlePath = stationConfig.EmergencyShuttlePath.ToString();
|
||||
var shuttle = mapLoader.LoadGrid(shuttleMap, shuttlePath);
|
||||
Assert.That(shuttle != null && shuttleSystem.TryFTLDock(shuttle.Value, entManager.GetComponent<ShuttleComponent>(shuttle.Value), targetGrid.Value), $"Unable to dock {shuttlePath} to {mapProto}");
|
||||
if (entManager.TryGetComponent<StationEmergencyShuttleComponent>(station, out var stationEvac))
|
||||
{
|
||||
var shuttlePath = stationEvac.EmergencyShuttlePath;
|
||||
var shuttle = mapLoader.LoadGrid(shuttleMap, shuttlePath.ToString());
|
||||
Assert.That(
|
||||
shuttle != null && shuttleSystem.TryFTLDock(shuttle.Value,
|
||||
entManager.GetComponent<ShuttleComponent>(shuttle.Value), targetGrid.Value),
|
||||
$"Unable to dock {shuttlePath} to {mapProto}");
|
||||
}
|
||||
|
||||
mapManager.DeleteMap(shuttleMap);
|
||||
|
||||
// Test that the map has valid latejoin spawn points
|
||||
if (!NoSpawnMaps.Contains(mapProto))
|
||||
if (entManager.HasComponent<StationJobsComponent>(station))
|
||||
{
|
||||
var lateSpawns = 0;
|
||||
|
||||
foreach (var comp in entManager.EntityQuery<SpawnPointComponent>(true))
|
||||
// Test that the map has valid latejoin spawn points
|
||||
if (!NoSpawnMaps.Contains(mapProto))
|
||||
{
|
||||
if (comp.SpawnType != SpawnPointType.LateJoin ||
|
||||
!xformQuery.TryGetComponent(comp.Owner, out var xform) ||
|
||||
xform.GridUid == null ||
|
||||
!gridUids.Contains(xform.GridUid.Value))
|
||||
var lateSpawns = 0;
|
||||
|
||||
foreach (var comp in entManager.EntityQuery<SpawnPointComponent>(true))
|
||||
{
|
||||
continue;
|
||||
if (comp.SpawnType != SpawnPointType.LateJoin ||
|
||||
!xformQuery.TryGetComponent(comp.Owner, out var xform) ||
|
||||
xform.GridUid == null ||
|
||||
!gridUids.Contains(xform.GridUid.Value))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
lateSpawns++;
|
||||
break;
|
||||
}
|
||||
|
||||
lateSpawns++;
|
||||
break;
|
||||
Assert.That(lateSpawns, Is.GreaterThan(0), $"Found no latejoin spawn points on {mapProto}");
|
||||
}
|
||||
|
||||
Assert.That(lateSpawns, Is.GreaterThan(0), $"Found no latejoin spawn points on {mapProto}");
|
||||
// Test all availableJobs have spawnPoints
|
||||
// This is done inside gamemap test because loading the map takes ages and we already have it.
|
||||
var jobList = entManager.GetComponent<StationJobsComponent>(station).RoundStartJobList
|
||||
.Where(x => x.Value != 0)
|
||||
.Select(x => x.Key);
|
||||
var spawnPoints = entManager.EntityQuery<SpawnPointComponent>()
|
||||
.Where(spawnpoint => spawnpoint.SpawnType == SpawnPointType.Job)
|
||||
.Select(spawnpoint => spawnpoint.Job.ID)
|
||||
.Distinct();
|
||||
List<string> missingSpawnPoints = new();
|
||||
foreach (var spawnpoint in jobList.Except(spawnPoints))
|
||||
{
|
||||
if (protoManager.Index<JobPrototype>(spawnpoint).SetPreference)
|
||||
missingSpawnPoints.Add(spawnpoint);
|
||||
}
|
||||
|
||||
Assert.That(missingSpawnPoints.Count() == 0,
|
||||
$"There is no spawnpoint for {String.Join(", ", missingSpawnPoints)} on {mapProto}.");
|
||||
}
|
||||
// Test all availableJobs have spawnPoints
|
||||
// This is done inside gamemap test because loading the map takes ages and we already have it.
|
||||
var jobList = entManager.GetComponent<StationJobsComponent>(station).RoundStartJobList
|
||||
.Where(x => x.Value != 0)
|
||||
.Select(x => x.Key);
|
||||
var spawnPoints = entManager.EntityQuery<SpawnPointComponent>()
|
||||
.Where(spawnpoint => spawnpoint.SpawnType == SpawnPointType.Job)
|
||||
.Select(spawnpoint => spawnpoint.Job.ID)
|
||||
.Distinct();
|
||||
List<string> missingSpawnPoints = new();
|
||||
foreach (var spawnpoint in jobList.Except(spawnPoints))
|
||||
{
|
||||
if (protoManager.Index<JobPrototype>(spawnpoint).SetPreference)
|
||||
missingSpawnPoints.Add(spawnpoint);
|
||||
}
|
||||
Assert.That(missingSpawnPoints.Count() == 0, $"There is no spawnpoint for {String.Join(", ", missingSpawnPoints)} on {mapProto}.");
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user