Fix MagazineVisualsSpritesExist for engine PR (#36761)

This commit is contained in:
Leon Friedrich
2025-05-10 21:40:27 +10:00
committed by GitHub
parent 603eb284d5
commit f0a7123208
2 changed files with 22 additions and 14 deletions

View File

@@ -111,9 +111,16 @@ public sealed partial class TestPair
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>())
{

View File

@@ -18,33 +18,32 @@ public sealed class MagazineVisualsSpriteTest
{
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;
@@ -63,6 +62,8 @@ public sealed class MagazineVisualsSpriteTest
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);
}
}
});