HashSet<string>? ignored = null,
bool ignoreAbstract = true,
bool ignoreTestPrototypes = true)
- where T : IComponent
+ where T : IComponent, new()
{
- var id = Server.ResolveDependency<IComponentFactory>().GetComponentName(typeof(T));
+ if (!Server.ResolveDependency<IComponentFactory>().TryGetRegistration<T>(out var reg)
+ && !Client.ResolveDependency<IComponentFactory>().TryGetRegistration<T>(out reg))
+ {
+ Assert.Fail($"Unknown component: {typeof(T).Name}");
+ return new();
+ }
+
+ var id = reg.Name;
var list = new List<(EntityPrototype, T)>();
foreach (var proto in Server.ProtoMan.EnumeratePrototypes<EntityPrototype>())
{
{
await using var pair = await PoolManager.GetServerClient();
var client = pair.Client;
- var protoMan = client.ResolveDependency<IPrototypeManager>();
- var componentFactory = client.ResolveDependency<IComponentFactory>();
+ var toTest = new List<(int, string)>();
+ var protos = pair.GetPrototypesWithComponent<MagazineVisualsComponent>();
await client.WaitAssertion(() =>
{
Assert.Multiple(() =>
{
- foreach (var proto in protoMan.EnumeratePrototypes<EntityPrototype>())
+ foreach (var (proto, _) in protos)
{
- if (proto.Abstract || pair.IsTestPrototype(proto))
- continue;
+ var uid = client.EntMan.Spawn(proto.ID);
+ var visuals = client.EntMan.GetComponent<MagazineVisualsComponent>(uid);
- if (!proto.TryGetComponent<MagazineVisualsComponent>(out var visuals, componentFactory))
- continue;
-
- Assert.That(proto.TryGetComponent<SpriteComponent>(out var sprite, componentFactory),
+ Assert.That(client.EntMan.TryGetComponent(uid, out SpriteComponent sprite),
@$"{proto.ID} has MagazineVisualsComponent but no SpriteComponent.");
- Assert.That(proto.HasComponent<AppearanceComponent>(componentFactory),
+ Assert.That(client.EntMan.HasComponent<AppearanceComponent>(uid),
@$"{proto.ID} has MagazineVisualsComponent but no AppearanceComponent.");
- var toTest = new List<(int, string)>();
+ toTest.Clear();
if (sprite.LayerMapTryGet(GunVisualLayers.Mag, out var magLayerId))
toTest.Add((magLayerId, ""));
if (sprite.LayerMapTryGet(GunVisualLayers.MagUnshaded, out var magUnshadedLayerId))
toTest.Add((magUnshadedLayerId, "-unshaded"));
- Assert.That(toTest, Is.Not.Empty,
+ Assert.That(
+ toTest,
+ Is.Not.Empty,
@$"{proto.ID} has MagazineVisualsComponent but no Mag or MagUnshaded layer map.");
var start = visuals.ZeroVisible ? 0 : 1;
var extraState = $"{visuals.MagState}{midfix}-{visuals.MagSteps}";
Assert.That(rsi.TryGetState(extraState, out _), Is.False,
@$"{proto.ID} has MagazineVisualsComponent with MagSteps = {visuals.MagSteps}, but more states exist!");
+
+ client.EntMan.DeleteEntity(uid);
}
}
});