public async Task WeightlessStatusTest() { var options = new ServerContentIntegrationOption { ExtraPrototypes = Prototypes }; var server = StartServer(options); await server.WaitIdleAsync(); var mapManager = server.ResolveDependency <IMapManager>(); var entityManager = server.ResolveDependency <IEntityManager>(); EntityUid human = default; SharedAlertsComponent alerts = null; await server.WaitAssertion(() => { var grid = GetMainGrid(mapManager); var coordinates = grid.ToCoordinates(); human = entityManager.SpawnEntity("HumanDummy", coordinates); Assert.True(entityManager.TryGetComponent(human, out alerts)); }); // Let WeightlessSystem and GravitySystem tick await server.WaitRunTicks(1); await server.WaitAssertion(() => { // No gravity without a gravity generator Assert.True(alerts.IsShowingAlert(AlertType.Weightless)); entityManager.SpawnEntity("GravityGeneratorDummy", entityManager.GetComponent <TransformComponent>(human).Coordinates); }); // Let WeightlessSystem and GravitySystem tick await server.WaitRunTicks(1); await server.WaitAssertion(() => { Assert.False(alerts.IsShowingAlert(AlertType.Weightless)); // TODO: Re-add gravity generator breaking when Vera is done with construction stuff. /* * // Disable the gravity generator * var args = new BreakageEventArgs {Owner = human}; * // gravityGenerator.OnBreak(args); */ }); /*await server.WaitRunTicks(1); * * await server.WaitAssertion(() => * { * Assert.True(alerts.IsShowingAlert(AlertType.Weightless)); * });*/ }
public async Task WeightlessStatusTest() { var options = new ServerIntegrationOptions { ExtraPrototypes = PROTOTYPES }; var server = StartServer(options); await server.WaitIdleAsync(); var mapManager = server.ResolveDependency <IMapManager>(); var entityManager = server.ResolveDependency <IEntityManager>(); var pauseManager = server.ResolveDependency <IPauseManager>(); var tileDefinitionManager = server.ResolveDependency <ITileDefinitionManager>(); IEntity human = null; SharedAlertsComponent alerts = null; await server.WaitAssertion(() => { var mapId = mapManager.CreateMap(); pauseManager.AddUninitializedMap(mapId); var gridId = new GridId(1); if (!mapManager.TryGetGrid(gridId, out var grid)) { grid = mapManager.CreateGrid(mapId, gridId); } var tileDefinition = tileDefinitionManager["underplating"]; var tile = new Tile(tileDefinition.TileId); var coordinates = grid.ToCoordinates(); grid.SetTile(coordinates, tile); pauseManager.DoMapInitialize(mapId); human = entityManager.SpawnEntity("HumanDummy", coordinates); Assert.True(human.TryGetComponent(out alerts)); }); // Let WeightlessSystem and GravitySystem tick await server.WaitRunTicks(1); GravityGeneratorComponent gravityGenerator = null; await server.WaitAssertion(() => { // No gravity without a gravity generator Assert.True(alerts.IsShowingAlert(AlertType.Weightless)); gravityGenerator = human.EnsureComponent <GravityGeneratorComponent>(); }); // Let WeightlessSystem and GravitySystem tick await server.WaitRunTicks(1); await server.WaitAssertion(() => { Assert.False(alerts.IsShowingAlert(AlertType.Weightless)); // Disable the gravity generator var args = new BreakageEventArgs { Owner = human }; gravityGenerator.OnBreak(args); }); await server.WaitRunTicks(1); await server.WaitAssertion(() => { Assert.False(alerts.IsShowingAlert(AlertType.Weightless)); }); }