import React, {useContext} from 'react'; import '../css/App.css'; import morseCode from '../data/morse-reverse.json' import ChallengeWord from '../components/ChallengeWord' import ChallengeBufferDisplay from '../components/ChallengeBufferDisplay'; import { MorseBufferContext } from '../contexts/morseBufferContext'; export default React.memo(function ChallengeMode() { console.log("ChallengeMode loaded"); let wordList = ['morse', 'code', 'hello', 'gene'] let word = wordList.shift() let challengeLetters = word.split('') const {morseCharBuffer} = useContext(MorseBufferContext) let morseArray = morseCharBuffer.split('_').filter(l => l !== '') let correctCharIndexes = [] // Indexes of correct letters in Challenge Word let incorrectCharIndex = null let incorrectMorseIndexes = [] // Indexes of incorrect morse characters in morse character buffer // Iterate through the morse character buffer and compare with each letter of challenge word morseArray.forEach((item, index) => { let offset = incorrectMorseIndexes.length || 0 let morseLetter = morseCode[morseArray[index+offset]] let challengeLetter = challengeLetters[index-offset] if (morseLetter === challengeLetter) { correctCharIndexes.push(index-offset) incorrectCharIndex = null } else { incorrectCharIndex = index-offset incorrectMorseIndexes.push(index+offset) } // let offset = incorrectMorseIndexes.length // if (morseArray[index + offset]) { // If value exists at index // let morseAlpha = morseCode[morseArray[index + offset]] // let adjustedIndex = index - offset // if (challengeLetters[adjustedIndex]) { // If value exists at index // let challengeLetter = challengeLetters[adjustedIndex].toLowerCase() // if (morseCharBuffer.slice(-1) === "_") { // Signifies buffer has complete characters (i.e. no partial characters) // if (morseAlpha === challengeLetter) { // correctCharIndexes.push(adjustedIndex) // incorrectCharIndex = null // } else { // incorrectMorseIndexes.push(index) // incorrectCharIndex = adjustedIndex // } // } // } // else { word = wordList.shift() } // } }) return ( <> {/* */} ); });