示例#1
0
 void LayConnector(Position start, int direction, int amount)
 {
     for (int i = 0; i < amount; i++)
     {
         FactoryBuilder.CreateConnector(Position.MoveCardinalDirection(start, direction, i), direction);
     }
 }
示例#2
0
    public void RemoveConnectorAtTheMiddleOfConnectors()
    {
        // Arrange
        int count = 0;

        // Act
        // 2 connectors
        FactoryBuilder.CreateConnector(new Position(0, 5), 2);
        FactoryBuilder.CreateConnector(new Position(0, 6), 2);
        FactoryBuilder.CreateConnector(new Position(0, 7), 2);

        FactoryBuilder.RemoveConnector(new Position(0, 6));

        count += 2;
        Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count);


        // two connectors of length 2
        FactoryBuilder.CreateConnector(new Position(5, 0), 2);
        FactoryBuilder.CreateConnector(new Position(6, 0), 2);
        FactoryBuilder.CreateConnector(new Position(7, 0), 2);
        FactoryBuilder.CreateConnector(new Position(8, 0), 2);
        FactoryBuilder.CreateConnector(new Position(9, 0), 2);

        FactoryBuilder.RemoveConnector(new Position(7, 0));

        count += 2;
        Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count);
    }
示例#3
0
    public void RemoveBeltAtTheMiddleOfBelts()
    {
        // Arrange
        int count = 0;

        // Act
        // 2 belts of length 1
        FactoryBuilder.CreateBelt(new Position(5, 0), 2);
        FactoryBuilder.CreateBelt(new Position(6, 0), 2);
        FactoryBuilder.CreateBelt(new Position(7, 0), 2);

        FactoryBuilder.RemoveBelt(new Position(6, 0));

        count += 2;
        Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count);


        // 1 belts of length 5
        FactoryBuilder.CreateBelt(new Position(5, 0), 2);
        FactoryBuilder.CreateBelt(new Position(6, 0), 2);
        FactoryBuilder.CreateBelt(new Position(7, 0), 2);
        FactoryBuilder.CreateBelt(new Position(8, 0), 2);
        FactoryBuilder.CreateBelt(new Position(9, 0), 2);


        count += 1;
        Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count);

        FactoryBuilder.RemoveBelt(new Position(7, 0));
        // 2 belts of length 2 (only one additional belt)
        count += 1;

        Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count);
    }
示例#4
0
 void SetUpStressTest()
 {
     Debug.Log("------------------- Setting up stress test -------------------");
     for (int x = 12; x < 180; x += 12)
     {
         for (int y = 12; y < 180; y += 12)
         {
             var offset    = new Position(x, y);
             var ironMiner = FactoryBuilder.CreateBuilding(mine, offset, null);
             ironMiner.craftController.SetMinerType(ironOre.oreUniqueName);
             ironMiner.isDestructable = false;
             FactoryBuilder.CreateConnector(offset + new Position(0, -2), 0);
             LayBelt(offset + new Position(0, -3), 3, 5);
             LayConnector(offset + new Position(0, -8), 2, 6);
             FactoryBuilder.CreateBuilding(furnace, offset + new Position(2, -7), null);
             FactoryBuilder.CreateBuilding(press, offset + new Position(6, -7), null);
             FactoryBuilder.CreateBuilding(storage, offset + new Position(3, -5), null);
             FactoryBuilder.CreateBuilding(storage, offset + new Position(8, -8), null);
             LayBelt(offset + new Position(4, -7), 1, 8);
             LayBelt(offset + new Position(3, 0), 3, 3);
             LayBelt(offset + new Position(5, 0), 3, 4);
             LayBelt(offset + new Position(7, -3), 1, 4);
             LayBelt(offset + new Position(8, 0), 3, 6);
             LayConnector(offset + new Position(2, -3), 2, 2);
             LayConnector(offset + new Position(3, 1), 2, 3);
             LayConnector(offset + new Position(5, -4), 2, 3);
             LayConnector(offset + new Position(7, 1), 2, 2);
             LayConnector(offset + new Position(8, -6), 0, 1);
         }
     }
 }
示例#5
0
    public void PlaceConnectorAtTheMiddleOfConnectors()
    {
        // Arrange
        int count = 0;


        // Act
        // 1 continuous belt of length 3
        FactoryBuilder.CreateConnector(new Position(5, 0), 2);
        FactoryBuilder.CreateConnector(new Position(7, 0), 2);
        FactoryBuilder.CreateConnector(new Position(6, 0), 2);
        count += 1;
        Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count);


        // 1 continuous belt of length 3
        FactoryBuilder.CreateConnector(new Position(0, 5), 1);
        FactoryBuilder.CreateConnector(new Position(0, 7), 1);
        FactoryBuilder.CreateConnector(new Position(0, 6), 1);
        count += 1;
        Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count);

        // 3 separate belts
        FactoryBuilder.CreateConnector(new Position(0, 10), 1);
        FactoryBuilder.CreateConnector(new Position(0, 12), 1);
        FactoryBuilder.CreateConnector(new Position(0, 11), 2);
        count += 3;
        Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count);


        // Assert
        Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count);
    }
示例#6
0
        private static void RegisterDependency(IKernel standardKernel)
        {
            var factoryBuilder = new FactoryBuilder();
            var actorFactory   = factoryBuilder.GetFactory();

            BindAsActor <IActor, Actor>(standardKernel, actorFactory).InSingletonScope();
        }
示例#7
0
        public static FactoryBuilder WithCallback(this FactoryBuilder builder, EventHandler <FactoryWatcherEventArgs> eventHandler)
        {
            var watcher = builder.Container.Resolve <IFactoryWatcher>(builder.FactoryName);

            watcher.OnConfigurationModify += eventHandler;
            return(builder);
        }
示例#8
0
    public void PlaceSingleBelt()
    {
        // Arrange
        var positions = new[] {
            new Position(0, 0),
            new Position(5, 5),
            new Position(10, 10),
            new Position(15, 15),
            new Position(20, 20)
        };

        var directions = new[] {
            1, 1, 2, 3, 4
        };


        // Act
        for (int i = 0; i < positions.Length; i++)
        {
            FactoryBuilder.CreateBelt(positions[i], directions[i]);
        }


        // Assert
        Assert.AreEqual(FactoryMaster.s.GetBelts().Count, 5);

        for (int i = 0; i < positions.Length; i++)
        {
            Assert.AreEqual(FactoryMaster.s.GetBelts()[i].startPos, positions[i]);
            Assert.AreEqual(FactoryMaster.s.GetBelts()[i].endPos, positions[i]);
            Assert.AreEqual(FactoryMaster.s.GetBelts()[i].direction, directions[i]);
            Assert.AreEqual(FactoryMaster.SlotPerSegment, FactoryMaster.s.GetBelts()[i].items[0].count);
        }
    }
示例#9
0
    public void PlaceSingleConnector()
    {
        // Arrange


        // Act
        var positions = new[] {
            new Position(0, 0),
            new Position(5, 5),
            new Position(10, 10),
            new Position(15, 15),
            new Position(20, 20)
        };

        var directions = new[] {
            0, 1, 2, 3, 4
        };


        for (int i = 0; i < positions.Length; i++)
        {
            FactoryBuilder.CreateConnector(positions[i], directions[i]);
        }


        // Assert
        Assert.AreEqual(FactoryMaster.s.GetConnectors().Count, 5);

        for (int i = 0; i < positions.Length; i++)
        {
            Assert.AreEqual(FactoryMaster.s.GetConnectors()[i].startPos, positions[i]);
            Assert.AreEqual(FactoryMaster.s.GetConnectors()[i].endPos, positions[i]);
            Assert.AreEqual(FactoryMaster.s.GetConnectors()[i].direction, directions[i]);
        }
    }
示例#10
0
    bool _BuildObject(BuildingData myData, Position location, bool forced, bool rocketBuild, bool isBuilt, List <InventoryItemSlot> inventory)
    {
        if (rocketBuild)
        {
            isBuilt = true;
        }

        if (CheckPlaceable(myData, location) || forced)
        {
            if (!isBuilt)
            {
                FactoryBuilder.StartConstruction(myData, 0, location, inventory);
            }
            else
            {
                FactoryBuilder.CreateBuilding(myData, location, inventory);
            }

            return(true);
        }
        else
        {
            Debug.LogError(string.Format("A building of type {0} was tried to be built on {1}, " +
                                         "but this was not possible. This should have been caught by the player_building controller, " +
                                         "or shouldn't be able to saved like this!",
                                         myData.myType, location.ToString()));
            return(false);
        }
    }
示例#11
0
    public void RemoveConnectorAtTheStartOfConnectors()
    {
        // Arrange
        int count = 0;

        // Act
        // 1 connector
        FactoryBuilder.CreateConnector(new Position(0, 0), 1);
        FactoryBuilder.CreateConnector(new Position(0, 1), 1);

        FactoryBuilder.RemoveConnector(new Position(0, 0));

        count += 1;
        Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count);


        // 1 continuous belt of length 2
        FactoryBuilder.CreateConnector(new Position(5, 0), 2);
        FactoryBuilder.CreateConnector(new Position(6, 0), 2);
        FactoryBuilder.CreateConnector(new Position(7, 0), 2);

        FactoryBuilder.RemoveConnector(new Position(5, 0));

        count += 1;
        Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count);
    }
示例#12
0
        public static FactoryBuilder Watch(this FactoryBuilder builder)
        {
            var watcher = builder.Container.Resolve <IFactoryWatcher>(builder.FactoryName);

            watcher.Start();

            return(builder);
        }
示例#13
0
        public static FactoryBuilder With <T>(this FactoryBuilder builder, TimeSpan interval)
            where T : IFactoryWatcher
        {
            var factory = builder.Container.Resolve <IFactory>(builder.FactoryName);

            builder.Container.RegisterType <IFactoryWatcher, T>(builder.FactoryName, new ContainerControlledLifetimeManager(), new InjectionConstructor(interval, factory, typeof(ICustomerProvider), typeof(ILogger)));

            return(builder);
        }
        public static IContainer ConfigureContainer(this IServiceCollection services, IConfiguration configuration)
        {
            var factory = new FactoryBuilder(services, configuration);

            Exams.Startup.Configure(factory);
            Auth.Startup.Configure(factory);

            return(factory.Build());
        }
示例#15
0
        private IFactory <TKey, TProvider> CreateProviderFactory(IServiceProvider serviceProvider)
        {
            IFactoryBuilder <TKey, TProvider> builder = new FactoryBuilder <TKey, TProvider>();

            foreach (ConfiguredProvider configuredProvider in configuredProviders)
            {
                builder.Add <TKey, TProvider>(configuredProvider.Key, configuredProvider.InstanceType, serviceProvider, configuredProvider.Configure);
            }
            return(builder.Build());
        }
示例#16
0
        public IFactory GenerateFactory(IMember member)
        {
            using FactoryBuilder builder = new FactoryBuilder();

            int type = TypeGenerator.Generate(member);

            return(builder
                   .AddType(type)
                   .AddResultType(ResultTypeGenerator.GenerateResultType(member))
                   .AddMember(member)
                   .If(type == FactoryType.StaticMethod, x => x.AddParameters(MethodParametersGenerator.GenerateParameters(member)))
                   .Build());
        }
示例#17
0
        public static FactoryBuilder As <T>(this FactoryBuilder builder, string name = null)
        {
            if (name == null)
            {
                builder.Container.RegisterFactory <T>(c => c.Resolve <T>(builder.FactoryName));
            }
            else
            {
                builder.Container.RegisterFactory(typeof(T), name, c => c.Resolve <T>(builder.FactoryName));
            }

            return(builder);
        }
示例#18
0
        public void BeforeScenario()
        {
            var appSettings = ConfigurationManager.AppSettings;

            var browser      = appSettings["browser"];
            var headless     = bool.Parse(appSettings["headless"]);
            var implicitWait = int.Parse(appSettings["implicitWait"]);
            var Url          = appSettings["Url"];

            IWebDriver driver = FactoryBuilder.GetFactory(browser).SetHeadless(headless).GetDriver();

            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(implicitWait);
            driver.Manage().Window.Maximize();
            driver.Navigate().GoToUrl(Url);
            objectContainer.RegisterInstanceAs(driver);
        }
示例#19
0
    public void SetUpNewGameWorld()
    {
        Debug.Log("------------------- Starting new game -------------------");

        //SetUpStressTest();
        // Basic Iron System
        var ironMinePosition = new Position(120, 120);
        var ironMiner        = FactoryBuilder.CreateBuilding(mine, ironMinePosition, null);

        ironMiner.craftController.SetMinerType(ironOre.oreUniqueName);
        ironMiner.isDestructable = false;
        FactoryBuilder.CreateConnector(ironMinePosition + new Position(0, -2), 0);
        FactoryBuilder.CreateBelt(ironMinePosition + new Position(0, -3), 3);
        FactoryBuilder.CreateBelt(ironMinePosition + new Position(0, -4), 3);
        FactoryBuilder.CreateConnector(ironMinePosition + new Position(0, -5), 2);
        FactoryBuilder.CreateConnector(ironMinePosition + new Position(1, -5), 2);
        FactoryBuilder.CreateBuilding(furnace, ironMinePosition + new Position(-1, -7), null);
        FactoryBuilder.CreateBuilding(furnace, ironMinePosition + new Position(2, -7), null);
        FactoryBuilder.CreateConnector(ironMinePosition + new Position(-1, -8), 2);
        FactoryBuilder.CreateConnector(ironMinePosition + new Position(0, -8), 2);
        FactoryBuilder.CreateConnector(ironMinePosition + new Position(1, -8), 2);
        FactoryBuilder.CreateBuilding(press, ironMinePosition + new Position(-1, -10), null);
        FactoryBuilder.CreateBuilding(storage, ironMinePosition + new Position(2, -10), null);


        // Copper Mine
        var copperMinePosition = new Position(80, 100);
        var copperMine         = FactoryBuilder.CreateBuilding(mine, copperMinePosition, null);

        copperMine.craftController.SetMinerType(concreteOre.oreUniqueName);
        copperMine.isDestructable = false;


        // Concrete Mine
        var concreteMinePosition = new Position(140, 140);
        var concreteMine         = FactoryBuilder.CreateBuilding(mine, concreteMinePosition, null);

        concreteMine.craftController.SetMinerType(concreteOre.oreUniqueName);
        concreteMine.isDestructable = false;


        // Create starter drones
        FactoryMaster.s.CreateDrone(new Position(90, 90));
        FactoryMaster.s.CreateDrone(new Position(92, 90));
        FactoryMaster.s.CreateDrone(new Position(94, 90));
    }
示例#20
0
    public void PlaceBeltAtTheStartOfBelts()
    {
        // Arrange
        int count = 0;


        // Act
        // 1 continuous belt of length 2
        FactoryBuilder.CreateBelt(new Position(0, 1), 1);
        FactoryBuilder.CreateBelt(new Position(0, 0), 1);
        count += 1;
        Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count);
        Assert.AreEqual(2 * FactoryMaster.SlotPerSegment, FactoryMaster.s.GetBelts()[0].items[0].count);


        // 1 continuous belt of length 3
        FactoryBuilder.CreateBelt(new Position(7, 0), 2);
        FactoryBuilder.CreateBelt(new Position(6, 0), 2);
        FactoryBuilder.CreateBelt(new Position(5, 0), 2);
        count += 1;
        Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count);
        Assert.AreEqual(3 * FactoryMaster.SlotPerSegment, FactoryMaster.s.GetBelts()[1].items[0].count);


        // 1 continuous belt of length 1
        // 1 separate belt
        FactoryBuilder.CreateBelt(new Position(6, 5), 2);
        FactoryBuilder.CreateBelt(new Position(5, 5), 2);
        FactoryBuilder.CreateBelt(new Position(5, 6), 2);
        count += 1 + 1;
        Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count);

        // 3 separate belt
        FactoryBuilder.CreateBelt(new Position(10, 10), 2);
        FactoryBuilder.CreateBelt(new Position(11, 10), 1);
        FactoryBuilder.CreateBelt(new Position(12, 10), 2);
        count += 3;
        Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count);


        // Assert
        Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count);
    }
示例#21
0
        static void Main(string[] args)
        {
            IFactoryBuilder<Test> builder = new FactoryBuilder<Test>();
            var rand = new Random();
            
            // The result gets built in the order that the specifications were added.
            // This means that it's fine for later specs to use already specced values.
            var testFactory = builder.ForMember(t => t.A, t => "A is always the same")
                .ForMember(t => t.B, t => rand.Next(0, 100))
                .ForMember(t => t.C, t => t.B.HasValue && t.B > 50)
                .ForMember(t => t.D, t => "but B is random and C is based on B!")
                .Compile();

            Console.WriteLine(testFactory.Build().ToString());
            Console.WriteLine(testFactory.Build().ToString());
            Console.WriteLine(testFactory.Build().ToString());
            Console.WriteLine(testFactory.Build().ToString());
            Console.WriteLine("Press any key to continue...");
			Console.ReadKey();
        }
示例#22
0
    /*
     * bool BuildConnectorFromSave (Position center, int direction, bool isBuilt, List<InventoryItemSlot> inventory) {
     *      if (direction > 2)
     *              direction = 0;
     *      return _BuildConnector(Grid.s.GetTile(center), direction, false, isBuilt, inventory);
     * }*/

    bool _BuildConnector(Position location, int direction, bool forced, bool isBuilt)
    {
        if (CheckPlaceable(location) || forced)
        {
            if (!isBuilt)
            {
                FactoryBuilder.StartConstruction(FactoryMaster.s.connectorBuildingData, direction, location);
            }
            else
            {
                FactoryBuilder.CreateConnector(location, direction);
            }

            return(true);
        }
        else
        {
            return(false);
        }
    }
示例#23
0
    /*bool BuildBeltFromSave (Position center, int direction, bool isBuilt, List<InventoryItemSlot> inventory) {
     *      return _BuildBelt(Grid.s.GetTile(center), direction, false, isBuilt, inventory);
     * }*/



    bool _BuildBelt(Position location, int direction, bool forced, bool isBuilt, List <InventoryItemSlot> inventory)
    {
        if (CheckPlaceable(location) || forced)
        {
            if (!isBuilt)
            {
                FactoryBuilder.StartConstruction(FactoryMaster.s.beltBuildingData, direction, location, inventory);
            }
            else
            {
                FactoryBuilder.CreateBelt(location, direction, inventory);
            }

            return(true);
        }
        else
        {
            return(false);
        }
    }
示例#24
0
    public void PlaceConnectorAtTheStartOfConnectors()
    {
        // Act
        // 1 continuous belt of length 2
        FactoryBuilder.CreateConnector(new Position(0, 1), 1);
        FactoryBuilder.CreateConnector(new Position(0, 0), 1);


        // 1 continuous belt of length 2
        FactoryBuilder.CreateConnector(new Position(10, 1), 1);
        FactoryBuilder.CreateConnector(new Position(10, 0), 0);


        // 1 continuous belt of length 3
        FactoryBuilder.CreateConnector(new Position(7, 0), 2);
        FactoryBuilder.CreateConnector(new Position(6, 0), 2);
        FactoryBuilder.CreateConnector(new Position(5, 0), 2);


        // 1 continuous belt of length 3
        FactoryBuilder.CreateConnector(new Position(7, 10), 2);
        FactoryBuilder.CreateConnector(new Position(6, 10), 2);
        FactoryBuilder.CreateConnector(new Position(5, 10), 0);


        // 1 continuous belt of length 1
        // 1 separate belt
        FactoryBuilder.CreateConnector(new Position(6, 5), 1);
        FactoryBuilder.CreateConnector(new Position(5, 5), 0);
        FactoryBuilder.CreateConnector(new Position(5, 6), 2);

        // 3 separate belt
        FactoryBuilder.CreateConnector(new Position(10, 10), 2);
        FactoryBuilder.CreateConnector(new Position(12, 10), 1);
        FactoryBuilder.CreateConnector(new Position(11, 10), 2);



        // Assert
        Assert.AreEqual(FactoryMaster.s.GetConnectors().Count, 1 + 1 + 1 + 1 + 1 + 1 + 3);
    }
示例#25
0
    public void RemoveConnectorAtTheEndOfConnectors()
    {
        // Arrange
        int count = 0;

        // Act
        // 1 connector remains
        FactoryBuilder.CreateConnector(new Position(0, 0), 1);
        FactoryBuilder.CreateConnector(new Position(0, 1), 1);

        FactoryBuilder.RemoveConnector(new Position(0, 1));

        count += 1;
        Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count);


        // 1 continuous connector of length 2
        FactoryBuilder.CreateConnector(new Position(5, 0), 2);
        FactoryBuilder.CreateConnector(new Position(6, 0), 2);
        FactoryBuilder.CreateConnector(new Position(7, 0), 2);

        FactoryBuilder.RemoveConnector(new Position(7, 0));

        count += 1;
        Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count);


        // 2 separate belt
        FactoryBuilder.CreateConnector(new Position(10, 10), 1);
        FactoryBuilder.CreateConnector(new Position(12, 10), 1);
        FactoryBuilder.CreateConnector(new Position(11, 10), 1);

        FactoryBuilder.RemoveConnector(new Position(12, 10));


        count += 2;
        Assert.AreEqual(count, FactoryMaster.s.GetConnectors().Count);
    }
示例#26
0
    public void LoadFromSave(bool isSuccess)
    {
        if (isSuccess)
        {
            foreach (var saveData in DataSaver.s.mySave.beltData)
            {
                FactoryBuilder.CreateBeltFromSave(saveData);
            }

            foreach (var saveData in DataSaver.s.mySave.buildingData)
            {
                FactoryBuilder.CreateBuildingFromSave(saveData);
            }

            foreach (var saveData in DataSaver.s.mySave.connectorData)
            {
                FactoryBuilder.CreateConnectorFromSave(saveData);
            }

            foreach (var saveData in DataSaver.s.mySave.constructionData)
            {
                FactoryBuilder.CreateConstructionFromSave(saveData);
            }

            foreach (var saveData in DataSaver.s.mySave.droneData)
            {
                var drone = FactoryBuilder.CreateDroneFromSave(saveData);
                FactoryVisuals.s.CreateDroneVisuals(drone);
            }
        } /*else {
           * // For now, lets create some drones manually
           * for (int i = 0; i < 3; i++) {
           *
           * }
           * }*/

        //FactoryBuilder.ObjectsUpdated?.Invoke();
    }
示例#27
0
    public void RemoveBeltAtTheEndOfBelts()
    {
        // Arrange
        int count = 0;

        // Act
        // 1 belt remaining
        FactoryBuilder.CreateBelt(new Position(0, 0), 1);
        FactoryBuilder.CreateBelt(new Position(0, 1), 1);

        FactoryBuilder.RemoveBelt(new Position(0, 1));
        count += 1;

        // 1 continuous belt of length 2
        FactoryBuilder.CreateBelt(new Position(5, 0), 2);
        FactoryBuilder.CreateBelt(new Position(6, 0), 2);
        FactoryBuilder.CreateBelt(new Position(7, 0), 2);

        FactoryBuilder.RemoveBelt(new Position(7, 0));

        count += 1;
        Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count);


        // 3 belt of lenght 1
        FactoryBuilder.CreateBelt(new Position(10, 10), 1);
        FactoryBuilder.CreateBelt(new Position(12, 10), 1);
        FactoryBuilder.CreateBelt(new Position(11, 10), 1);
        count += 3;
        Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count);


        // 2 belts of length 1
        FactoryBuilder.RemoveBelt(new Position(12, 10));
        count -= 1;

        Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count);
    }
    void SellCheck()
    {
        if (Input.GetMouseButton(0) && IsPointerOutsideBuildingBar())
        {
            TileData myTile = Grid.s.GetTileUnderPointer();
            if (myTile != null)
            {
                Debug.Log("Selling " + myTile.name);

                if (myTile.areThereWorldObject)
                {
                    if (!instantBuildCheat)
                    {
                        FactoryBuilder.StartDeconstruction(myTile.location);
                    }
                    else
                    {
                        FactoryBuilder.StartDeconstruction(myTile.location);
                        FactoryBuilder.CompleteDeconstruction(myTile.location);
                    }
                }
            }
        }
    }
示例#29
0
    public void PlaceBeltAtTheMiddleOfBelts()
    {
        // Arrange
        int count = 0;


        // Act
        // 1 continuous belt of length 3
        FactoryBuilder.CreateBelt(new Position(5, 0), 2);
        FactoryBuilder.CreateBelt(new Position(7, 0), 2);
        FactoryBuilder.CreateBelt(new Position(6, 0), 2);
        count += 1;
        Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count);
        Assert.AreEqual(3 * FactoryMaster.SlotPerSegment, FactoryMaster.s.GetBelts()[0].items[0].count);


        // 1 continuous belt of length 3
        FactoryBuilder.CreateBelt(new Position(0, 5), 3);
        FactoryBuilder.CreateBelt(new Position(0, 7), 3);
        FactoryBuilder.CreateBelt(new Position(0, 6), 3);
        count += 1;
        Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count);
        Assert.AreEqual(3 * FactoryMaster.SlotPerSegment, FactoryMaster.s.GetBelts()[1].items[0].count);

        // 3 separate belts
        FactoryBuilder.CreateBelt(new Position(0, 10), 1);
        FactoryBuilder.CreateBelt(new Position(0, 12), 1);
        FactoryBuilder.CreateBelt(new Position(0, 11), 3);
        count += 3;
        Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count);
        Assert.AreEqual(FactoryMaster.SlotPerSegment, FactoryMaster.s.GetBelts()[2].items[0].count);


        // Assert
        Assert.AreEqual(count, FactoryMaster.s.GetBelts().Count);
    }
示例#30
0
    public void RemoveSingleBelt()
    {
        // Arrange
        var positions = new[] {
            new Position(0, 0),
            new Position(5, 5),
            new Position(10, 10),
            new Position(15, 15),
            new Position(20, 20)
        };

        var directions = new[] {
            1, 1, 2, 3, 4
        };


        // Act
        for (int i = 0; i < positions.Length; i++)
        {
            FactoryBuilder.CreateBelt(positions[i], directions[i]);
        }

        for (int i = 0; i < positions.Length; i++)
        {
            FactoryBuilder.RemoveBelt(positions[i]);
        }


        // Assert
        Assert.AreEqual(0, FactoryMaster.s.GetBelts().Count);

        for (int i = 0; i < positions.Length; i++)
        {
            Assert.IsFalse(Grid.s.GetTile(positions[i]).areThereBelt);
        }
    }
 public ActorFactoryBuilderTest()
 {
     _ActorFactoryBuilder = new FactoryBuilder();
 }
        public static void Main()
        {
            var manufacturer = Console.ReadLine();
            if (manufacturer == "HP")
            {
                var hp = new HpFactory();
                var factoryBuilder = new FactoryBuilder(hp);
                pc = factoryBuilder.MakePersonalComputer();
                laptop = factoryBuilder.MakeLaptop();
                server = factoryBuilder.MakeServer();
            }
            else if (manufacturer == "Dell")
            {
                var dell = new DellFactory();
                var factoryBuilder = new FactoryBuilder(dell);
                pc = factoryBuilder.MakePersonalComputer();
                laptop = factoryBuilder.MakeLaptop();
                server = factoryBuilder.MakeServer();
            }
            else if (manufacturer == "Lenovo")
            {
                var lenovo = new LenovoFactory();
                var factoryBuilder = new FactoryBuilder(lenovo);
                pc = factoryBuilder.MakePersonalComputer();
                laptop = factoryBuilder.MakeLaptop();
                server = factoryBuilder.MakeServer();
            }
            else
            {
                throw new InvalidArgumentException("Invalid manufacturer!");
            }

            while (true)
            {
                var inputLine = Console.ReadLine();
                if (inputLine == null || inputLine.StartsWith("Exit"))
                {
                    break;
                }

                var commandParameters = inputLine.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                if (commandParameters.Length != 2)
                {
                    throw new ArgumentException("Invalid command, command should consist of two parameters");
                }

                var command = commandParameters[0];
                var parameter = int.Parse(commandParameters[1]);

                if (command == "Charge")
                {
                    laptop.Execute(parameter);
                }
                else if (command == "Process")
                {
                    server.Execute(parameter);
                }
                else if (command == "Play")
                {
                    pc.Execute(parameter);
                }
                else
                {
                    Console.WriteLine("Invalid command, there are three types of commands - Play, Charge, Process");
                }
            }
        }
示例#33
0
 public static FactoryBuilder With <T>(this FactoryBuilder builder)
     where T : IFactoryWatcher
 {
     return(builder.With <T>(Timeout.InfiniteTimeSpan));
 }