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,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();