CatStation/Content.IntegrationTests/Tests/ContainerOcclusionTest.cs
TemporalOroboros 84b2f07157
The IMapManager is dead (#44002)
* Axes the easy IMapManager references

* Axes the references to unported (obsolete) IMapManager methods

* Converts salvageruler command to a LocalizedEntityCommand so it can use SharedMapSystem

* Removes IMapManager from GameTicker
This required axing the map nuke during restart, but that should be fine?
Maps are entities so EntityManager.FlushEntities should delete them all and that's the preceding line

* submodule update(?)

---------

Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2026-07-01 20:44:54 -07:00

156 lines
5.3 KiB
C#

using System.Numerics;
using Content.IntegrationTests.Fixtures;
using Content.Server.Storage.EntitySystems;
using Robust.Client.GameObjects;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Maths;
namespace Content.IntegrationTests.Tests
{
public sealed class ContainerOcclusionTest : GameTest
{
[TestPrototypes]
private const string Prototypes = @"
- type: entity
id: ContainerOcclusionA
components:
- type: EntityStorage
occludesLight: true
- type: entity
id: ContainerOcclusionB
components:
- type: EntityStorage
showContents: true
occludesLight: false
- type: entity
id: ContainerOcclusionDummy
components:
- type: Sprite
- type: PointLight
";
[Test]
public async Task TestA()
{
var pair = Pair;
var server = pair.Server;
var client = pair.Client;
var clientEntManager = client.ResolveDependency<IEntityManager>();
var serverEntManager = server.ResolveDependency<IEntityManager>();
EntityUid dummy = default;
var map = await pair.CreateTestMap();
await server.WaitPost(() =>
{
var pos = new MapCoordinates(Vector2.Zero, map.MapId);
var entStorage = serverEntManager.EntitySysManager.GetEntitySystem<EntityStorageSystem>();
var container = serverEntManager.SpawnEntity("ContainerOcclusionA", pos);
dummy = serverEntManager.SpawnEntity("ContainerOcclusionDummy", pos);
entStorage.Insert(dummy, container);
});
await pair.RunTicksSync(5);
var clientEnt = clientEntManager.GetEntity(serverEntManager.GetNetEntity(dummy));
await client.WaitAssertion(() =>
{
var sprite = clientEntManager.GetComponent<SpriteComponent>(clientEnt);
var light = clientEntManager.GetComponent<PointLightComponent>(clientEnt);
Assert.Multiple(() =>
{
Assert.That(sprite.ContainerOccluded);
Assert.That(light.ContainerOccluded);
});
});
}
[Test]
public async Task TestB()
{
var pair = Pair;
var server = pair.Server;
var client = pair.Client;
var clientEntManager = client.ResolveDependency<IEntityManager>();
var serverEntManager = server.ResolveDependency<IEntityManager>();
EntityUid dummy = default;
var map = await pair.CreateTestMap();
await server.WaitPost(() =>
{
var pos = new MapCoordinates(Vector2.Zero, map.MapId);
var entStorage = serverEntManager.EntitySysManager.GetEntitySystem<EntityStorageSystem>();
var container = serverEntManager.SpawnEntity("ContainerOcclusionB", pos);
dummy = serverEntManager.SpawnEntity("ContainerOcclusionDummy", pos);
entStorage.Insert(dummy, container);
});
await pair.RunTicksSync(5);
var clientEnt = clientEntManager.GetEntity(serverEntManager.GetNetEntity(dummy));
await client.WaitAssertion(() =>
{
var sprite = clientEntManager.GetComponent<SpriteComponent>(clientEnt);
var light = clientEntManager.GetComponent<PointLightComponent>(clientEnt);
Assert.Multiple(() =>
{
Assert.That(sprite.ContainerOccluded, Is.False);
Assert.That(light.ContainerOccluded, Is.False);
});
});
}
[Test]
public async Task TestAb()
{
var pair = Pair;
var server = pair.Server;
var client = pair.Client;
var clientEntManager = client.ResolveDependency<IEntityManager>();
var serverEntManager = server.ResolveDependency<IEntityManager>();
EntityUid dummy = default;
var map = await pair.CreateTestMap();
await server.WaitPost(() =>
{
var pos = new MapCoordinates(Vector2.Zero, map.MapId);
var entStorage = serverEntManager.EntitySysManager.GetEntitySystem<EntityStorageSystem>();
var containerA = serverEntManager.SpawnEntity("ContainerOcclusionA", pos);
var containerB = serverEntManager.SpawnEntity("ContainerOcclusionB", pos);
dummy = serverEntManager.SpawnEntity("ContainerOcclusionDummy", pos);
entStorage.Insert(containerB, containerA);
entStorage.Insert(dummy, containerB);
});
await pair.RunTicksSync(5);
var clientEnt = clientEntManager.GetEntity(serverEntManager.GetNetEntity(dummy));
await client.WaitAssertion(() =>
{
var sprite = clientEntManager.GetComponent<SpriteComponent>(clientEnt);
var light = clientEntManager.GetComponent<PointLightComponent>(clientEnt);
Assert.Multiple(() =>
{
Assert.That(sprite.ContainerOccluded);
Assert.That(light.ContainerOccluded);
});
});
}
}
}