public void UpdateSupplierSupply(PowerSupplierComponent supplier, int oldSupplyRate, int newSupplyRate) { Debug.Assert(_suppliers.Contains(supplier)); _totalSupply -= oldSupplyRate; _totalSupply += newSupplyRate; UpdateConsumerReceivedPower(); }
public async Task PowerNetTest() { var options = new ServerIntegrationOptions { ExtraPrototypes = Prototypes }; var server = StartServerDummyTicker(options); PowerSupplierComponent supplier = default !;
public async Task TestSimpleSurplus() { await using var pairTracker = await PoolManager.GetServerClient(new PoolSettings { NoClient = true, ExtraPrototypes = Prototypes }); var server = pairTracker.Pair.Server; var mapManager = server.ResolveDependency <IMapManager>(); var entityManager = server.ResolveDependency <IEntityManager>(); const float loadPower = 200; PowerSupplierComponent supplier = default !;
public async Task PowerNetTest() { var options = new ServerIntegrationOptions { ExtraPrototypes = Prototypes }; var server = StartServerDummyTicker(options); PowerSupplierComponent supplier = null; PowerConsumerComponent consumer1 = null; PowerConsumerComponent consumer2 = null; server.Assert(() => { var mapMan = IoCManager.Resolve <IMapManager>(); var entityMan = IoCManager.Resolve <IEntityManager>(); mapMan.CreateMap(new MapId(1)); var grid = mapMan.CreateGrid(new MapId(1)); var generatorEnt = entityMan.SpawnEntity("GeneratorDummy", grid.ToCoordinates()); var consumerEnt1 = entityMan.SpawnEntity("ConsumerDummy", grid.ToCoordinates(0, 1)); var consumerEnt2 = entityMan.SpawnEntity("ConsumerDummy", grid.ToCoordinates(0, 2)); if (generatorEnt.TryGetComponent(out AnchorableComponent anchorable)) { anchorable.TryAnchor(null, force: true); } Assert.That(generatorEnt.TryGetComponent(out supplier)); Assert.That(consumerEnt1.TryGetComponent(out consumer1)); Assert.That(consumerEnt2.TryGetComponent(out consumer2)); var supplyRate = 1000; //arbitrary amount of power supply supplier.SupplyRate = supplyRate; consumer1.DrawRate = supplyRate / 2; //arbitrary draw less than supply consumer2.DrawRate = supplyRate * 2; //arbitrary draw greater than supply consumer1.Priority = Priority.First; //power goes to this consumer first consumer2.Priority = Priority.Last; //any excess power should go to low priority consumer }); server.RunTicks(1); //let run a tick for PowerNet to process power server.Assert(() => { Assert.That(consumer1.DrawRate, Is.EqualTo(consumer1.ReceivedPower)); //first should be fully powered Assert.That(consumer2.ReceivedPower, Is.EqualTo(supplier.SupplyRate - consumer1.ReceivedPower)); //second should get remaining power }); await server.WaitIdleAsync(); }
public async Task ApcChargingTest() { var options = new ServerIntegrationOptions { ExtraPrototypes = Prototypes }; var server = StartServerDummyTicker(options); BatteryComponent apcBattery = null; PowerSupplierComponent substationSupplier = null; server.Assert(() => { var mapMan = IoCManager.Resolve <IMapManager>(); var entityMan = IoCManager.Resolve <IEntityManager>(); mapMan.CreateMap(new MapId(1)); var grid = mapMan.CreateGrid(new MapId(1)); var generatorEnt = entityMan.SpawnEntity("GeneratorDummy", grid.ToCoordinates()); var substationEnt = entityMan.SpawnEntity("SubstationDummy", grid.ToCoordinates(0, 1)); var apcEnt = entityMan.SpawnEntity("ApcDummy", grid.ToCoordinates(0, 2)); Assert.That(generatorEnt.TryGetComponent <PowerSupplierComponent>(out var generatorSupplier)); Assert.That(substationEnt.TryGetComponent(out substationSupplier)); Assert.That(substationEnt.TryGetComponent <BatteryStorageComponent>(out var substationStorage)); Assert.That(substationEnt.TryGetComponent <BatteryDischargerComponent>(out var substationDischarger)); Assert.That(apcEnt.TryGetComponent(out apcBattery)); Assert.That(apcEnt.TryGetComponent <BatteryStorageComponent>(out var apcStorage)); generatorSupplier.SupplyRate = 1000; //arbitrary nonzero amount of power substationStorage.ActiveDrawRate = 1000; //arbitrary nonzero power draw substationDischarger.ActiveSupplyRate = 500; //arbitirary nonzero power supply less than substation storage draw apcStorage.ActiveDrawRate = 500; //arbitrary nonzero power draw apcBattery.MaxCharge = 100; //abbitrary nonzero amount of charge apcBattery.CurrentCharge = 0; //no charge }); server.RunTicks(5); //let run a few ticks for PowerNets to reevaluate and start charging apc server.Assert(() => { Assert.That(substationSupplier.SupplyRate, Is.Not.EqualTo(0)); //substation should be providing power Assert.That(apcBattery.CurrentCharge, Is.Not.EqualTo(0)); //apc battery should have gained charge }); await server.WaitIdleAsync(); }
public async Task PowerNetTest() { var server = StartServerDummyTicker(); PowerSupplierComponent supplier = null; PowerConsumerComponent consumer1 = null; PowerConsumerComponent consumer2 = null; server.Assert(() => { var mapMan = IoCManager.Resolve <IMapManager>(); var entityMan = IoCManager.Resolve <IEntityManager>(); mapMan.CreateMap(new MapId(1)); var grid = mapMan.CreateGrid(new MapId(1)); var generatorEnt = entityMan.SpawnEntity("DebugGenerator", new GridCoordinates(new Vector2(0, 0), grid.Index)); var consumerEnt1 = entityMan.SpawnEntity("DebugConsumer", new GridCoordinates(new Vector2(0, 1), grid.Index)); var consumerEnt2 = entityMan.SpawnEntity("DebugConsumer", new GridCoordinates(new Vector2(0, 2), grid.Index)); Assert.That(generatorEnt.TryGetComponent(out supplier)); Assert.That(consumerEnt1.TryGetComponent(out consumer1)); Assert.That(consumerEnt2.TryGetComponent(out consumer2)); var supplyRate = 1000; //arbitrary amount of power supply supplier.SupplyRate = supplyRate; consumer1.DrawRate = supplyRate / 2; //arbitrary draw less than supply consumer2.DrawRate = supplyRate * 2; //arbitrary draw greater than supply consumer1.Priority = Priority.First; //power goes to this consumer first consumer2.Priority = Priority.Last; //any excess power should go to low priority consumer }); server.RunTicks(1); //let run a tick for PowerNet to process power server.Assert(() => { Assert.That(consumer1.DrawRate, Is.EqualTo(consumer1.ReceivedPower)); //first should be fully powered Assert.That(consumer2.ReceivedPower, Is.EqualTo(supplier.SupplyRate - consumer1.ReceivedPower)); //second should get remaining power }); await server.WaitIdleAsync(); }
public void AddSupplier(PowerSupplierComponent supplier) { _suppliers.Add(supplier); _totalSupply += supplier.SupplyRate; _powerNetManager.AddDirtyPowerNet(this); }
public void RemoveSupplier(PowerSupplierComponent supplier) { }
public void UpdateSupplierSupply(PowerSupplierComponent supplier, int oldSupplyRate, int newSupplyRate) { }
public void AddSupplier(PowerSupplierComponent supplier) { }
public async Task TestSimpleSurplus() { const float loadPower = 200; PowerSupplierComponent supplier = default !;
public void AddSupplier(PowerSupplierComponent supplier) { _suppliers.Add(supplier); _totalSupply += supplier.SupplyRate; UpdateConsumerReceivedPower(); }