Gravity generator rewrite (#4828)

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
Pieter-Jan Briers
2021-11-02 01:12:55 +01:00
committed by GitHub
parent 0e33b246db
commit 059fa9ae48
17 changed files with 739 additions and 361 deletions

View File

@@ -22,6 +22,16 @@ namespace Content.IntegrationTests.Tests.Gravity
id: HumanDummy
components:
- type: Alerts
- type: entity
name: GravityGeneratorDummy
id: GravityGeneratorDummy
components:
- type: GravityGenerator
chargeRate: 1000000000 # Set this really high so it discharges in a single tick.
activePower: 500
- type: ApcPowerReceiver
needsPower: false
- type: UserInterface
";
[Test]
public async Task WeightlessStatusTest()
@@ -56,14 +66,12 @@ namespace Content.IntegrationTests.Tests.Gravity
// 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>();
entityManager.SpawnEntity("GravityGeneratorDummy", human.Transform.Coordinates);
});
// Let WeightlessSystem and GravitySystem tick
@@ -73,17 +81,20 @@ namespace Content.IntegrationTests.Tests.Gravity
{
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);
// gravityGenerator.OnBreak(args);
*/
});
await server.WaitRunTicks(1);
/*await server.WaitRunTicks(1);
await server.WaitAssertion(() =>
{
Assert.True(alerts.IsShowingAlert(AlertType.Weightless));
});
});*/
}
}
}

View File

@@ -22,7 +22,10 @@ namespace Content.IntegrationTests.Tests
id: GravityGeneratorDummy
components:
- type: GravityGenerator
chargeRate: 1000000000 # Set this really high so it discharges in a single tick.
activePower: 500
- type: ApcPowerReceiver
- type: UserInterface
";
[Test]
public async Task Test()
@@ -49,9 +52,8 @@ namespace Content.IntegrationTests.Tests
generator = entityMan.SpawnEntity("GravityGeneratorDummy", grid2.ToCoordinates());
Assert.That(generator.HasComponent<GravityGeneratorComponent>());
Assert.That(generator.HasComponent<ApcPowerReceiverComponent>());
var generatorComponent = generator.GetComponent<GravityGeneratorComponent>();
var powerComponent = generator.GetComponent<ApcPowerReceiverComponent>();
Assert.That(generatorComponent.Status, Is.EqualTo(GravityGeneratorStatus.Unpowered));
powerComponent.NeedsPower = false;
});
server.RunTicks(1);
@@ -59,8 +61,9 @@ namespace Content.IntegrationTests.Tests
server.Assert(() =>
{
var generatorComponent = generator.GetComponent<GravityGeneratorComponent>();
var powerComponent = generator.GetComponent<ApcPowerReceiverComponent>();
Assert.That(generatorComponent.Status, Is.EqualTo(GravityGeneratorStatus.On));
Assert.That(generatorComponent.GravityActive, Is.True);
var entityMan = IoCManager.Resolve<IEntityManager>();
var grid1Entity = entityMan.GetEntity(grid1.GridEntityId);
@@ -68,6 +71,22 @@ namespace Content.IntegrationTests.Tests
Assert.That(!grid1Entity.GetComponent<GravityComponent>().Enabled);
Assert.That(grid2Entity.GetComponent<GravityComponent>().Enabled);
// Re-enable needs power so it turns off again.
// Charge rate is ridiculously high so it finishes in one tick.
powerComponent.NeedsPower = true;
});
server.RunTicks(1);
server.Assert(() =>
{
var generatorComponent = generator.GetComponent<GravityGeneratorComponent>();
Assert.That(generatorComponent.GravityActive, Is.False);
var entityMan = IoCManager.Resolve<IEntityManager>();
var grid2Entity = entityMan.GetEntity(grid2.GridEntityId);
Assert.That(grid2Entity.GetComponent<GravityComponent>().Enabled, Is.False);
});
await server.WaitIdleAsync();