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); } } }
public sealed override void CheckForCompletedMachine(ModCheckForCompletedMachineParameters parameters) { const int MachinePlacement = 600; var material = new Block.Material(MachinePlacement, parameters.CubeValue); this.MultiblockBuilders[material].BuildIfPossible(parameters); }
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); }
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); }
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); }
/// 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; }
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); }
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); }
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); }