Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 void button_SelectTurnRight()
 {
     mode  = CentrifugeMode.TurnRight;
     state = CentrifugeState.EMPTY;
 }
Esempio n. 4
0
 void button_SelectTurn180()
 {
     mode  = CentrifugeMode.Turn180;
     state = CentrifugeState.EMPTY;
 }