public async Task NoSuffocationTest() { var options = new ServerContentIntegrationOption { ExtraPrototypes = Prototypes }; var server = StartServerDummyTicker(options); await server.WaitIdleAsync(); var mapLoader = server.ResolveDependency <IMapLoader>(); var mapManager = server.ResolveDependency <IMapManager>(); var entityManager = server.ResolveDependency <IEntityManager>(); MapId mapId; IMapGrid grid = null; MetabolismComponent metabolism = null; IEntity human = null; var testMapName = "Maps/Test/Breathing/3by3-20oxy-80nit.yml"; await server.WaitPost(() => { mapId = mapManager.CreateMap(); grid = mapLoader.LoadBlueprint(mapId, testMapName); }); Assert.NotNull(grid, $"Test blueprint {testMapName} not found."); await server.WaitAssertion(() => { var center = new Vector2(0.5f, -1.5f); var coordinates = new EntityCoordinates(grid.GridEntityId, center); human = entityManager.SpawnEntity("HumanBodyAndBloodstreamDummy", coordinates); Assert.True(human.TryGetComponent(out SharedBodyComponent body)); Assert.True(body.HasMechanismBehavior <LungBehavior>()); Assert.True(human.TryGetComponent(out metabolism)); Assert.False(metabolism.Suffocating); }); var increment = 10; for (var tick = 0; tick < 600; tick += increment) { await server.WaitRunTicks(increment); Assert.False(metabolism.Suffocating, $"Entity {human.Name} is suffocating on tick {tick}"); } await server.WaitIdleAsync(); }
public async Task NoSuffocationTest() { var server = StartServerDummyTicker(); await server.WaitIdleAsync(); var mapLoader = server.ResolveDependency <IMapLoader>(); var mapManager = server.ResolveDependency <IMapManager>(); var entityManager = server.ResolveDependency <IEntityManager>(); MapId mapId; IMapGrid grid = null; LungComponent lung = null; MetabolismComponent metabolism = null; IEntity human = null; var testMapName = "Maps/Test/Breathing/3by3-20oxy-80nit.yml"; await server.WaitPost(() => { mapId = mapManager.CreateMap(); grid = mapLoader.LoadBlueprint(mapId, testMapName); }); Assert.NotNull(grid, $"Test blueprint {testMapName} not found."); await server.WaitAssertion(() => { var center = new Vector2(0.5f, -1.5f); var coordinates = new EntityCoordinates(grid.GridEntityId, center); human = entityManager.SpawnEntity("HumanMob_Content", coordinates); Assert.True(human.TryGetComponent(out lung)); Assert.True(human.TryGetComponent(out metabolism)); Assert.False(metabolism.Suffocating); }); for (var tick = 0; tick < 600; tick++) { await server.WaitRunTicks(tick); Assert.False(metabolism.Suffocating, $"Entity {human.Name} is suffocating on tick {tick}"); } await server.WaitIdleAsync(); }