public async Task <Signal> Process(Signal signal) { bool nextStep = false; if (signal.Step) { nextStep = await Move(1); } var inputValue = signal.Value; var shiftedInput = AddShift(inputValue); char inputLetter, outputLetter; if (signal.Direction == SignalDirection.In) { inputLetter = CommonHelper.NumberToLetter(shiftedInput); outputLetter = Connections[shiftedInput]; } else { inputLetter = CommonHelper.NumberToLetter(shiftedInput); var outputPosition = Array.IndexOf(Connections, inputLetter); outputLetter = CommonHelper.NumberToLetter(outputPosition); } var shiftedOutput = CommonHelper.LetterToNumber(outputLetter); var resultValue = RemoveShift(shiftedOutput); SendTranslationToUI(inputLetter, outputLetter, signal.Direction); return(await _utilityFactory.CreateSignal(resultValue, nextStep, signal.Direction)); }
public async Task <Signal> Process(Signal signal) { var inputLetter = CommonHelper.NumberToLetter(signal.Value); var outputLetter = _connections[inputLetter]; SendTranslationToUI(inputLetter, outputLetter); var resultValue = CommonHelper.LetterToNumber(outputLetter); return(await _utilityFactory.CreateSignal(resultValue, false, SignalDirection.Out)); }
public async Task <char> Encrypt(char inputLetter) { var inputPosition = CommonHelper.LetterToNumber(inputLetter); var signal = await _utilityFactory.CreateSignal(inputPosition, false, SignalDirection.In); foreach (var component in _enigmaSettings.ComponentList) { signal = await component.Process(signal); } var resultLetter = CommonHelper.NumberToLetter(signal.Value); return(resultLetter); }
public async Task <Signal> Process(Signal signal) { var inputValue = signal.Value; var inputLetter = CommonHelper.NumberToLetter(inputValue); var outputLetter = inputLetter; if (Connections.ContainsKey(inputLetter)) { outputLetter = Connections[inputLetter]; } var resultValue = CommonHelper.LetterToNumber(outputLetter); return(await _utilityFactory.CreateSignal(resultValue, true, signal.Direction)); }