private void MovePiston(Piston piston) { m_reporter?.Invoke(string.Format("Moving {0}", piston.MyPiston.CustomName)); if (piston.Direction) { piston.MoveOne(DISTANCE, SPEED); } else { piston.MoveOne(-DISTANCE, -SPEED); } }
private void HandleArgs(string Argument) { List <string> Args = Argument.Split(' ').ToList(); if (Args.Contains("Reverse", StringComparer.OrdinalIgnoreCase)) { OutRiggerRelease(); Piston.Enabled = true; Piston.Reverse(); } else if (Args.Contains("Halt", StringComparer.OrdinalIgnoreCase)) { Piston.Enabled = false; OutRiggerSecure(); } else if (Args.Contains("Continue", StringComparer.OrdinalIgnoreCase)) { OutRiggerRelease(); Piston.Enabled = true; } else if (Args.Contains("Halt/Continue", StringComparer.OrdinalIgnoreCase)) { if (Piston.Enabled) { Piston.Enabled = false; OutRiggerSecure(); } else { OutRiggerRelease(); Piston.Enabled = true; } } else if (Args.Contains("Klang", StringComparer.OrdinalIgnoreCase)) // When shit happens. { throw new KlangSafetyException("User"); } }
private void RunQuarry() { Piston pX = this[Pos.X]; Piston pY = this[Pos.Y]; Piston pZ = this[Pos.Z]; //If any of the pistons are still busy moving, wait. if (pX.IsMoving || pY.IsMoving || pZ.IsMoving) { m_reporter?.Invoke("Pistons moving..."); return; } if (pX.IsFullyExtendedAbsolute) { //If X is fully extended, move Z by one, then reverse X. if (pZ.IsFullyExtendedAbsolute) { if (pY.IsFullyExtended) { //All 3 pistons are fully extended. m_quarryPhase = Phase.Finished; } else { MovePiston(pY); } pZ.Reverse(); } else { MovePiston(pZ); } pX.Reverse(); } else { MovePiston(pX); } }
public Program() { List <IMyShipDrill> drills = new List <IMyShipDrill>(); List <IMyTextPanel> panels = new List <IMyTextPanel>(); Piston[] pistonArray = new Piston[3]; GridTerminalSystem.GetBlocksOfType(panels, x => x.CustomName.ToLower().Contains(LCDSCREEN)); GridTerminalSystem.GetBlocksOfType(drills, x => x.CustomName.ToLower().Contains(DRILLNAME.ToLower())); GridTerminalSystem.GetBlocksOfType <IMyPistonBase>(null, x => { string name = x.CustomName.ToLower(); if (name.Contains(PISTONNAME.ToLower())) { if (name.Last() == 'x') { pistonArray[0] = new Piston(x); return(false); } if (name.Last() == 'y') { pistonArray[1] = new Piston(x); return(false); } if (name.Last() == 'z') { pistonArray[2] = new Piston(x); return(false); } } return(false); }); if (panels.Count > 0) { m_lcd = panels[0]; } m_quarry = new Quarry(pistonArray, drills, Print); Runtime.UpdateFrequency = UpdateFrequency.Update100; }