Exemplo n.º 1
0
 public void UpdateSupplierSupply(PowerSupplierComponent supplier, int oldSupplyRate, int newSupplyRate)
 {
     Debug.Assert(_suppliers.Contains(supplier));
     _totalSupply -= oldSupplyRate;
     _totalSupply += newSupplyRate;
     UpdateConsumerReceivedPower();
 }
Exemplo n.º 2
0
        public async Task PowerNetTest()
        {
            var options = new ServerIntegrationOptions {
                ExtraPrototypes = Prototypes
            };
            var server = StartServerDummyTicker(options);

            PowerSupplierComponent supplier  = default !;
Exemplo n.º 3
0
        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 !;
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
        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)
 {
 }
Exemplo n.º 11
0
 public async Task TestSimpleSurplus()
 {
     const float            loadPower = 200;
     PowerSupplierComponent supplier  = default !;
Exemplo n.º 12
0
 public void AddSupplier(PowerSupplierComponent supplier)
 {
     _suppliers.Add(supplier);
     _totalSupply += supplier.SupplyRate;
     UpdateConsumerReceivedPower();
 }