WeightlessStatusTests.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using Content.Server.Gravity;
  2. using Content.Shared.Alert;
  3. using Content.Shared.Gravity;
  4. using Robust.Shared.GameObjects;
  5. namespace Content.IntegrationTests.Tests.Gravity
  6. {
  7. [TestFixture]
  8. [TestOf(typeof(GravitySystem))]
  9. [TestOf(typeof(GravityGeneratorComponent))]
  10. public sealed class WeightlessStatusTests
  11. {
  12. [TestPrototypes]
  13. private const string Prototypes = @"
  14. - type: entity
  15. name: HumanWeightlessDummy
  16. id: HumanWeightlessDummy
  17. components:
  18. - type: Alerts
  19. - type: Physics
  20. bodyType: Dynamic
  21. - type: entity
  22. name: WeightlessGravityGeneratorDummy
  23. id: WeightlessGravityGeneratorDummy
  24. components:
  25. - type: GravityGenerator
  26. - type: PowerCharge
  27. windowTitle: gravity-generator-window-title
  28. idlePower: 50
  29. chargeRate: 1000000000 # Set this really high so it discharges in a single tick.
  30. activePower: 500
  31. - type: ApcPowerReceiver
  32. needsPower: false
  33. - type: UserInterface
  34. ";
  35. [Test]
  36. public async Task WeightlessStatusTest()
  37. {
  38. await using var pair = await PoolManager.GetServerClient();
  39. var server = pair.Server;
  40. var entityManager = server.ResolveDependency<IEntityManager>();
  41. var alertsSystem = server.ResolveDependency<IEntitySystemManager>().GetEntitySystem<AlertsSystem>();
  42. var weightlessAlert = SharedGravitySystem.WeightlessAlert;
  43. EntityUid human = default;
  44. var testMap = await pair.CreateTestMap();
  45. await server.WaitAssertion(() =>
  46. {
  47. human = entityManager.SpawnEntity("HumanWeightlessDummy", testMap.GridCoords);
  48. Assert.That(entityManager.TryGetComponent(human, out AlertsComponent alerts));
  49. });
  50. // Let WeightlessSystem and GravitySystem tick
  51. await pair.RunTicksSync(10);
  52. var generatorUid = EntityUid.Invalid;
  53. await server.WaitAssertion(() =>
  54. {
  55. // No gravity without a gravity generator
  56. Assert.That(alertsSystem.IsShowingAlert(human, weightlessAlert));
  57. generatorUid = entityManager.SpawnEntity("WeightlessGravityGeneratorDummy", entityManager.GetComponent<TransformComponent>(human).Coordinates);
  58. });
  59. // Let WeightlessSystem and GravitySystem tick
  60. await pair.RunTicksSync(10);
  61. await server.WaitAssertion(() =>
  62. {
  63. Assert.That(alertsSystem.IsShowingAlert(human, weightlessAlert), Is.False);
  64. // This should kill gravity
  65. entityManager.DeleteEntity(generatorUid);
  66. });
  67. await pair.RunTicksSync(10);
  68. await server.WaitAssertion(() =>
  69. {
  70. Assert.That(alertsSystem.IsShowingAlert(human, weightlessAlert));
  71. });
  72. await pair.RunTicksSync(10);
  73. await pair.CleanReturnAsync();
  74. }
  75. }
  76. }