public ITrackedStack GetOutput() { ITrackedStack overrideOutput = OverridingMachine.GetOutput(); if (overrideOutput != null) { return(overrideOutput); } else { MassProductionMachineDefinition mpm = ModEntry.GetMPMMachine(OriginalMachineObject.name, OriginalMachineObject.GetMassProducerKey()); if (mpm != null) { // Check for special overriding logic, if any is required string originalClassName = OriginalMachine.GetType().FullName; if (VanillaOverrideList.GetFor(originalClassName) != null) { IVanillaOverride vanillaOverride = VanillaOverrideList.GetFor(originalClassName); overrideOutput = vanillaOverride.Automate_GetOutput(mpm, OriginalMachine, OriginalMachineObject); return(overrideOutput); } else { return(null); } } else { return(OriginalMachine.GetOutput()); } } }
/// <summary>Process a set of machines.</summary> /// <param name="machines">The machines to process.</param> private void ProcessMachines(IEnumerable <MachineMetadata> machines) { machines = machines.ToArray(); this.VerboseLog($"Automating {machines.Count()} machines..."); foreach (MachineMetadata metadata in machines) { IMachine machine = metadata.Machine; string summary = $"Automating {metadata.Location.Name} > {machine.GetType().Name} ({metadata.Connected.Length} pipes)..."; MachineState state = machine.GetState(); switch (state) { case MachineState.Empty: bool pulled = machine.Pull(metadata.Connected); summary += pulled ? " accepted new input." : " no input found."; break; case MachineState.Done: bool pushed = metadata.Connected.TryPush(machine.GetOutput()); summary += pushed ? " pushed output." : " done, but no pipes can accept its output."; break; default: summary += $" machine is {state.ToString().ToLower()}."; break; } this.VerboseLog($" {summary}"); } }
public bool IsSameMachine(IMachine machine) { //I have no experiance with overriting the equils method / operators if (this.GetType() != machine.GetType()) { return(false); } foreach (Nozzle nozzle_ in equippedNozzles_) { //Comparing the array's doesn't work (even if the order matters) if (machine.GetNozzleNumber(nozzle_) == -1) { return(false); } } return(this.defaultSpeed_ == machine.DefaultSpeed); //last check, speeds are the same }