public override void CheckForCompletedMachine(ModCheckForCompletedMachineParameters parameters) { if (parameters.CubeValue == Mk5QuarryPlacementValue) { Mk5Quarry.CheckForCompletedMachine(parameters.Frustrum, parameters.X, parameters.Y, parameters.Z); } }
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 bool BuildIfPossible(ModCheckForCompletedMachineParameters parameters) { var materials = EnhancedPowerFlow.Conduit; var rays = new List <Direction> { Direction.PlusX(), Direction.PlusY(), Direction.PlusZ(), }; return(rays .Select(r => new BoxBuilder(this.OrientedBox(r), materials, Conduit.OrientAlongRay(r))) .Where(b => b.BuildIfPossible(parameters) == true) .Any()); }
public void CheckForCompletedMachine(ModCheckForCompletedMachineParameters parameters) { MachineRegistration machineRegistration = null; FCEMultiblockMachineAttribute specs = machineRegistration.MultiblockAttributes; if (!machineByPlacement.TryGetValue(parameters.CubeValue, out machineRegistration)) { return; } // Find the negative-most corner long x = parameters.X; long y = parameters.Y; long z = parameters.Z; long minY = parameters.Y, minX = parameters.X, minZ = parameters.Z; while (IsPlacement(parameters.Frustrum, minX - 1, minY, minZ, machineRegistration.PlacementBlock)) { minX--; } while (IsPlacement(parameters.Frustrum, minX, minY - 1, minZ, machineRegistration.PlacementBlock)) { minY--; } while (IsPlacement(parameters.Frustrum, minX, minY, minZ - 1, machineRegistration.PlacementBlock)) { minZ--; } long maxY = minY + specs.Length, maxX = 0, maxZ = 0; if (IsPlacement(parameters.Frustrum, minX + specs.Length, maxY, maxZ + specs.Width, machineRegistration.PlacementBlock)) { maxX = minX + specs.Length; maxZ = minZ + specs.Width; } else if (IsPlacement(parameters.Frustrum, minX + specs.Width, maxY, maxZ + specs.Length, machineRegistration.PlacementBlock)) { maxX = minX + specs.Width; maxZ = minZ + specs.Length; } else { // Couldn't find opposite corner, so just throw it out return; } }
public bool BuildIfPossible(ModCheckForCompletedMachineParameters parameters) { var box = this.FilledBox(new BlockSurveyor(parameters.Frustrum), new Position(parameters)); if (box != null) { BuilderUtil.Build( parameters.Frustrum, new GridBox(box.Value).Blocks(), this.Materials, box.Value.Center(), this.Orientation ); return(true); } return(false); }
public override void CheckForCompletedMachine(ModCheckForCompletedMachineParameters parameters) { }
public Position(ModCheckForCompletedMachineParameters parameters) : this(parameters.X, parameters.Y, parameters.Z) { }