//Rotates given rotor and checks for cases below void Rotate(Rotor rotor) { rotor.Rotate(); //Rotates to 0 if current position = 10 if (rotor.currentPosition == rotor.offsets.Count) { rotor.currentPosition = 0; } //Rotates middle after full rotation of right if (rotor.currentPosition == rotor.startingPosition && rotor == right) { Rotate(middle); } //Rotates left after full rotation of middle else if (rotor.currentPosition == rotor.startingPosition && rotor == middle) { Rotate(left); } }
public Machine(Rotor left, int leftStartingPosition, Rotor middle, int middleStartingPosition, Rotor right, int rightStartingPosition, Reflector reflector) { this.left = left; for (int i = 0; i < leftStartingPosition; i++) { left.Rotate(); } this.left.startingPosition = leftStartingPosition; this.middle = middle; for (int i = 0; i < middleStartingPosition; i++) { middle.Rotate(); } this.middle.startingPosition = middleStartingPosition; this.right = right; for (int i = 0; i < rightStartingPosition; i++) { right.Rotate(); } this.right.startingPosition = rightStartingPosition; this.reflector = reflector; }