Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #3
0
        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);
        }
Example #4
0
        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));
        }