public override void CheckForCompletedMachine(ModCheckForCompletedMachineParameters parameters)
 {
     if (parameters.CubeValue == Mk5QuarryPlacementValue)
     {
         Mk5Quarry.CheckForCompletedMachine(parameters.Frustrum, parameters.X, parameters.Y, parameters.Z);
     }
 }
Example #2
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);
        }
Example #3
0
        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());
        }
Example #4
0
        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);
        }
Example #6
0
 public override void CheckForCompletedMachine(ModCheckForCompletedMachineParameters parameters)
 {
 }
 public Position(ModCheckForCompletedMachineParameters parameters)
     : this(parameters.X, parameters.Y, parameters.Z)
 {
 }