public FiniteStateMachine(string[] input) { this.input = input; state = new StartState(this); }
public bool Process() { if (currentState == State.Initial) { this.consoleAdapter.Write("Shape: (C)ircle or (R)ectangle?"); currentState = State.ReadShape; return true; } var read = this.consoleAdapter.Read(); if (read == "R") { currentState = State.ReadRectangleSideA; this.consoleAdapter.Write("Rectangle side A length?"); return true; } if (read == "C") { currentState = State.ReadCircleRadius; this.consoleAdapter.Write("Circle radius?"); return true; } if (currentState == State.ReadCircleRadius) { this.consoleAdapter.Write($"{Math.PI}"); return true; } if (currentState == State.ReadRectangleSideA) { consoleAdapter.Write("Rectangle side B length?"); currentState = State.ReadRectangleSideB; return true; } if (currentState == State.ReadRectangleSideB) { consoleAdapter.Write("1"); return true; } return true; }