function keyPressHandler()

in src/components/game-controls.tsx [34:70]


  function keyPressHandler({ key, keyCode }: { key: string | undefined, keyCode: number | undefined }) {
    switch (key) {
      case 'w':
        return dispatch(moveUp())
      case 'a':
        return dispatch(moveLeft())
      case 's':
        return dispatch(moveDown())
      case 'd':
        return dispatch(moveRight())
    }

    switch (keyCode) {
      case 38: // up arrow
        return dispatch(moveUp())
      case 37: // left arrow
        return dispatch(moveLeft())
      case 40: // down arrow
        return dispatch(moveDown())
      case 39: // right arrow
        return dispatch(moveRight())
      case 13: // enter
        if (allItemsCollected && playerOnFinalSquare && user && !isSavingMission) {
          dispatch(setIsSavingMission(true));
          return addCompletedMission({ mission }).unwrap()
            .then(() => {
              dispatch(startMission({ nextMission: true }))
            })
            .catch(error => {
              console.error('addCompletedMission request did not work.', { error })
            }).finally(() => {
              dispatch(setIsSavingMission(false));
            });
        }
        return dispatch(collectItem())
    }
  }