public override void Run() { switch (state) { case CentrifugeState.EMPTY: ChemicalSignature newInputSig = PullInput(); if (newInputSig != null) { inputSignature = newInputSig; outputSignature = MakeRotation(mode, inputSignature); state = CentrifugeState.SPINNING; timer = 0; } break; case CentrifugeState.SPINNING: timer++; if (timer >= EMIT_TIMER) { state = CentrifugeState.WAITING; } break; case CentrifugeState.WAITING: if (PushOutput(outputSignature)) { state = CentrifugeState.EMPTY; } break; } }
public override ChemicalSignature RequestOutput(OutputPipe pipe, ref string errorMessage) { if (state != CentrifugeState.WAITING) { errorMessage = "Centrifuge not ready"; return(null); } pipe.AnimatePip(); state = CentrifugeState.EMPTY; return(outputSignature); }
void button_SelectTurnRight() { mode = CentrifugeMode.TurnRight; state = CentrifugeState.EMPTY; }
void button_SelectTurn180() { mode = CentrifugeMode.Turn180; state = CentrifugeState.EMPTY; }