public void ensure_that_storage_with_1_slot_behaves_as_expected()
        {
            ITransferManager transfer = new TransferManager();

            IItemStore storage = new ItemStoreComposite(1);
            ICanStore grain = new Commodity("Grain1", "Grain", UnitOfMeasurement.Kilogram, 0.001, false);

            transfer.Item(5, grain).To(storage);

            Assert.AreEqual(1, storage.SlotsUsed);

            Assert.IsNotNull(storage["Grain"]);

            IItemContainer grainContainer;
            bool transfered = transfer.Item(5, grain).From(storage).ToContainer(out grainContainer);

            Assert.IsTrue(transfered);
            Assert.AreEqual(5, grainContainer.Used);
            Assert.IsNull(storage["Grain"]);
        }
        public void should_transfer_all_from_crate_to_a_silo_2()
        {
            ITransferManager transfer = new TransferManager();

            Commodity grain = new Commodity("Grain1", "Grain", UnitOfMeasurement.Kilogram, 0.01, false);
            IItemStore grainContainer = new ItemStoreComposite(2);
            bool transfered = transfer.Item(101, grain).To(grainContainer);

            Assert.IsTrue(transfered);
            Assert.AreEqual(101, grainContainer["Grain"].Used);

            IItemStore toContainer = new ItemStoreComposite(1);

            transfered = transfer.Item(5, grain).From(grainContainer).To(toContainer);

            Assert.IsTrue(transfered);
            Assert.AreEqual(1, grainContainer["Grain"].Slots);

            Assert.AreEqual(5, toContainer["Grain"].Used);
        }
Esempio n. 3
0
        //private void InitModuleStates(Dictionary<int, object> moduleStates)
        //{
        //    moduleStates.Add(1, new ProducerState(new ProductionSource(new Commodity("GRAIN1", "Grain", UnitOfWeightMeasurement.Kilogram, 0.001, false), 0.5, 1000)));
        //    moduleStates.Add(2, new FarmingCollectiveState(new FarmingCollective()));
        //}
        public void StartCluster(int clusterId)
        {
            ITransferManager transferManager = new TransferManager();

            _sectorCluster = new SectorCluster(clusterId);
            IList<ISector> sectors = GetSectors(clusterId, transferManager);

            foreach (ISector shard in sectors)
            {
                //shard.OnRefresh(market, transferManager);
                IList<IGameModule> modules = GetModules(shard.Id);
                foreach (IGameModule module in modules)
                {
                    object state = GetModuleState(module.Id);
                    module.Init(state);

                    shard.Add(module);
                }

                //wire up events

            }
            _sectorCluster.Init(sectors);

            // execution
            DateTime now = DateTime.Now;
            DateTime wakeTimer = DateTime.Now;
            int i = 0;
            while (true)
            {
                Console.WriteLine(i++ % 2 == 0 ? "Tick" : "Tock");

                foreach (ISector sector in _sectorCluster)
                {
                    sector.Refresh(now);
                }
                now = now.AddMinutes(1);
                wakeTimer = wakeTimer.AddMilliseconds(500);
                SleepUntil(wakeTimer);
            }
        }