public void FuzzySuccessFind()
    {
        var nothing = new Material(1, 1);
        var space = new GridBox(new Box(new Position(10, 10, 10), new Position(28, 36, 28)));
        foreach (var block in space.Blocks())
        {
            this.Provider.SetMaterial(this.Filler, block);
        }
        var size = new Position(9, 13, 9);
        var toFind = new Box(new Position(15, 17, 15), new Position(23, 29, 23));
        var randoms = new RandomBlocks(space);
        foreach (var i in Enumerable.Range(0, 100))
        {
            var finishingBlock = randoms
                .Where(b => toFind.Outfits(new Box(b, b)))
                .First();

            var checker = new FilledBoxChecker(this.Surveyor, finishingBlock, size, this.Filler);

            var emptyCount = randoms.Generator.Next(15) + 1;
            var empties = randoms.Where(b => !toFind.Outfits(new Box(b, b))).Take(emptyCount).ToList();
            foreach(var empty in empties)
            {
                this.Provider.SetMaterial(nothing, empty);
            }

            Assert.IsTrue(null != checker.MachineSpace());

            foreach(var empty in empties)
            {
                this.Provider.SetMaterial(this.Filler, empty);
            }
        }
    }
 public void FuzzyFailToFind()
 {
     var nothing = new Material(1, 1);
     var space = new GridBox(new Box(new Position(10, 10, 10), new Position(42, 12, 42)));
     foreach (var block in space.Blocks())
     {
         this.Provider.SetMaterial(this.Filler, block);
     }
     var randoms = new RandomBlocks(space);
     foreach (var i in Enumerable.Range(0, 100))
     {
         var finishingBlock = randoms.First();
         var checker = new FilledBoxChecker(this.Surveyor, finishingBlock, new Position(33, 3, 33), this.Filler);
         var emptyCount = randoms.Generator.Next(15) + 1;
         var empties = randoms.Where(b => b != finishingBlock).Take(emptyCount).ToList();
         foreach(var empty in empties)
         {
             this.Provider.SetMaterial(nothing, empty);
         }
         Assert.AreEqual(null, checker.MachineSpace());
         foreach(var empty in empties)
         {
             this.Provider.SetMaterial(this.Filler, empty);
         }
     }
 }
Пример #3
0
        public sealed override void CheckForCompletedMachine(ModCheckForCompletedMachineParameters parameters)
        {
            const int MachinePlacement = 600;
            var       material         = new Block.Material(MachinePlacement, parameters.CubeValue);

            this.MultiblockBuilders[material].BuildIfPossible(parameters);
        }
Пример #4
0
        public sealed override void CreateSegmentEntity(ModCreateSegmentEntityParameters parameters, ModCreateSegmentEntityResults results)
        {
            var material = new Block.Material(parameters.Cube, parameters.Value);

            parameters.ObjectType = SpawnableObjectEnum.Num;
            results.Entity        = this.BlockRegistrations[material](parameters);
        }
Пример #5
0
        public void FindEntity()
        {
            var position = new Position(432412, 432432, 145423);
            var material = new Material(4, 123);

            this.Provider.AddEntity(new SegmentEntityStub(position), material);
            var entity = this.Surveyor.Look().At(position).For <SegmentEntityStub>();

            Assert.IsTrue(entity != null);
        }
Пример #6
0
        public void FindMaterial()
        {
            var position = new Position(3, 3, 4);
            var material = new Material(42, 24);

            this.Provider.SetMaterial(material, position);
            var block = this.Surveyor.Look().At(position).Block();

            Assert.AreEqual(material, block);
        }
Пример #7
0
        /// register your block entity if you want to see it in the game
        /// provide your key from TerrainData.xml and creator for your entity, eg.
        /// RegisterBlock("JohnDoe.AwsomeBlock", (p) => new AwsomeEntity(p))
        /// If block have different values, keys for all values should be registered.
        protected Block.Material RegisterBlock(string key, EntityCreator creator)
        {
            Debug.Log("registering block: " + key);
            var block = new Block.Material(key);

            this.BlockRegistrations[block] = creator;
            this.RegistrationData.RegisterEntityHandler(key);
            Debug.Log("block: " + key + " registered successfully as: " + block.ToString());
            return(block);
        }
 // Checks if box of provided size filled with provided material exists around finishing block.
 // This clas DO NOT check if finishing block is filled itself.
 public FilledBoxChecker(
     BlockSurveyor surveyor,
     Position finishingBlock,
     Position size,
     Material filler)
 {
     this.Surveyor       = surveyor;
     this.FinishingBlock = finishingBlock;
     this.Size           = size;
     this.Filler         = filler;
 }
Пример #9
0
        public void FailToFindEntityOfMaterial()
        {
            var position         = new Position(432412, 432432, 145423);
            var materialToFind   = new Material(42, 1);
            var materialExisting = new Material(42, 2);

            this.Provider.AddEntity(new SegmentEntityStub(position), materialExisting);
            var entity = this.Surveyor.Look().At(position).WhereBlockIs(materialToFind).For <SegmentEntityStub>();

            Assert.IsTrue(entity == null);
        }
Пример #10
0
        public void FailToFindMaterial()
        {
            var position         = new Position(3, 3, 4);
            var materialToFind   = new Material(42, 1);
            var materialExisting = new Material(42, 2);

            this.Provider.SetMaterial(materialExisting, position);
            var block = this.Surveyor.Look().At(position).WhereBlockIs(materialToFind).Block();

            Assert.AreEqual(null, block);
        }
Пример #11
0
        public void FindMaterialByType()
        {
            var position1 = new Position(3, 3, 4);
            var material1 = new Material(42, 1);

            this.Provider.SetMaterial(material1, position1);
            var material2 = new Material(42, 2);
            var position2 = new Position(3, 3, 2341);

            this.Provider.SetMaterial(material2, position2);
            var block = this.Surveyor.Look().At(position1).WhereBlockIs(material1.Type).Block();

            Assert.AreEqual(material1.Type, block.Value.Type);
            // this is not a type, we are looking for the same type
            block = this.Surveyor.Look().At(position2).WhereBlockIs(material1.Type).Block();
            Assert.AreEqual(material2.Type, block.Value.Type);
        }