public void ConfigureMachine(MachineArgs args) { _rotors[0] = new SpinningRotor(args.RotorOneArgs.Number, args.RotorOneArgs.StartPosition); _rotors[1] = new SpinningRotor(args.RotorTwoArgs.Number, args.RotorTwoArgs.StartPosition); _rotors[2] = new SpinningRotor(args.RotorThreeArgs.Number, args.RotorThreeArgs.StartPosition); foreach (var pair in args.LettersToSwap) { _plugboard.SwapLettersInPlugBoard(pair.Item1, pair.Item2); } }
private void EncodeButton_Click(object sender, RoutedEventArgs e) { if (_awaitingForPair != null) { MessageBox.Show("One letter in plugboard is not connected to another"); } else { var firstRotorNumber = GetRotorNumber(FirstRotorNumber.Text); var firstRotorPosition = Convert.ToByte(FirstRotorPosition.Text[0] - 65); var secondRotorNumber = GetRotorNumber(SecondRotorNumber.Text); var secondRotorPosition = Convert.ToByte(SecondRotorPosition.Text[0] - 65); var thirdRotorNumber = GetRotorNumber(ThirdRotorNumber.Text); var thirdRotorPosition = Convert.ToByte(ThirdRotorPosition.Text[0] - 65); var lettersToSwap = new List <Tuple <char, char> >(); foreach (var pair in _pairs) { lettersToSwap.Add(new Tuple <char, char>(pair.Value.Item1.Content.ToString()[0], pair.Value.Item2.Content.ToString()[0])); } var args = new MachineArgs { RotorOneArgs = new RotorArgs { Number = firstRotorNumber, StartPosition = firstRotorPosition }, RotorTwoArgs = new RotorArgs { Number = secondRotorNumber, StartPosition = secondRotorPosition }, RotorThreeArgs = new RotorArgs { Number = thirdRotorNumber, StartPosition = thirdRotorPosition }, LettersToSwap = lettersToSwap }; _machine.ConfigureMachine(args); EncodedText.Text = _machine.EncodeString(NotEncodedText.Text.ToUpper()); } }