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:
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user