Filter prototypes checked by NoStaticPriceAndStackPrice test and skip spawning (#35136)

* Filter NoStaticPriceAndStackPrice ents for StaticPriceComponent

* Remove redundant TryComp

* Use dependency shortcuts

* hol' up

* This filter is redundant

* Don't need EntityManager now
This commit is contained in:
Tayrtahn
2025-02-13 15:01:43 -05:00
committed by GitHub
parent 3e179955cb
commit fcc668863a

View File

@@ -7,6 +7,7 @@ using Content.Server.Nutrition.Components;
using Content.Server.Nutrition.EntitySystems; using Content.Server.Nutrition.EntitySystems;
using Content.Shared.Cargo.Prototypes; using Content.Shared.Cargo.Prototypes;
using Content.Shared.IdentityManagement; using Content.Shared.IdentityManagement;
using Content.Shared.Prototypes;
using Content.Shared.Stacks; using Content.Shared.Stacks;
using Content.Shared.Tag; using Content.Shared.Tag;
using Content.Shared.Whitelist; using Content.Shared.Whitelist;
@@ -104,51 +105,34 @@ public sealed class CargoTest
await using var pair = await PoolManager.GetServerClient(); await using var pair = await PoolManager.GetServerClient();
var server = pair.Server; var server = pair.Server;
var testMap = await pair.CreateTestMap(); var protoManager = server.ProtoMan;
var compFact = server.ResolveDependency<IComponentFactory>();
var entManager = server.ResolveDependency<IEntityManager>();
var mapManager = server.ResolveDependency<IMapManager>();
var protoManager = server.ResolveDependency<IPrototypeManager>();
await server.WaitAssertion(() => await server.WaitAssertion(() =>
{ {
var mapId = testMap.MapId;
var grid = mapManager.CreateGridEntity(mapId);
var coord = new EntityCoordinates(grid.Owner, 0, 0);
var protoIds = protoManager.EnumeratePrototypes<EntityPrototype>() var protoIds = protoManager.EnumeratePrototypes<EntityPrototype>()
.Where(p => !p.Abstract) .Where(p => !p.Abstract)
.Where(p => !pair.IsTestPrototype(p)) .Where(p => !pair.IsTestPrototype(p))
.Where(p => !p.Components.ContainsKey("MapGrid")) // Grids are not for sale. .Where(p => p.Components.ContainsKey("StaticPrice"))
.Select(p => p.ID)
.ToList(); .ToList();
foreach (var proto in protoIds) foreach (var proto in protoIds)
{ {
var ent = entManager.SpawnEntity(proto, coord); // Sanity check
Assert.That(proto.TryGetComponent<StaticPriceComponent>(out var staticPriceComp, compFact), Is.True);
if (entManager.TryGetComponent<StackPriceComponent>(ent, out var stackpricecomp) if (proto.TryGetComponent<StackPriceComponent>(out var stackPriceComp, compFact) && stackPriceComp.Price > 0)
&& stackpricecomp.Price > 0)
{ {
if (entManager.TryGetComponent<StaticPriceComponent>(ent, out var staticpricecomp)) Assert.That(staticPriceComp.Price, Is.EqualTo(0),
{
Assert.That(staticpricecomp.Price, Is.EqualTo(0),
$"The prototype {proto} has a StackPriceComponent and StaticPriceComponent whose values are not compatible with each other."); $"The prototype {proto} has a StackPriceComponent and StaticPriceComponent whose values are not compatible with each other.");
} }
}
if (entManager.HasComponent<StackComponent>(ent)) if (proto.HasComponent<StackComponent>(compFact))
{ {
if (entManager.TryGetComponent<StaticPriceComponent>(ent, out var staticpricecomp)) Assert.That(staticPriceComp.Price, Is.EqualTo(0),
{
Assert.That(staticpricecomp.Price, Is.EqualTo(0),
$"The prototype {proto} has a StackComponent and StaticPriceComponent whose values are not compatible with each other."); $"The prototype {proto} has a StackComponent and StaticPriceComponent whose values are not compatible with each other.");
} }
} }
entManager.DeleteEntity(ent);
}
mapManager.DeleteMap(mapId);
}); });
await pair.CleanReturnAsync(); await pair.CleanReturnAsync();