You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.4 KiB
TypeScript

import { ref } from 'vue'
export default function useInput() {
let inputX = ref(0)
let inputY = ref(0)
let digging = ref(false)
let paused = ref(false)
function handleKeyDown(event: KeyboardEvent) {
switch (event.key) {
case 'ArrowUp':
inputY.value = -1
break
case 'ArrowDown':
inputY.value = 1
break
case 'ArrowRight':
inputX.value = 1
break
case 'ArrowLeft':
inputX.value = -1
break
case 'p':
paused.value = !paused.value
break
case ' ':
digging.value = true
break
}
}
function handleKeyUp(event: KeyboardEvent) {
switch (event.key) {
// Arrow Keys
case 'ArrowUp':
inputY.value = inputY.value === -1 ? 0 : 1
break
case 'ArrowDown':
inputY.value = inputY.value === 1 ? 0 : 1
break
case 'ArrowRight':
inputX.value = inputX.value === 1 ? 0 : -1
break
case 'ArrowLeft':
inputX.value = inputX.value === -1 ? 0 : 1
break
case ' ':
digging.value = false
break
}
}
document.removeEventListener('keydown', handleKeyDown)
document.removeEventListener('keyup', handleKeyUp)
document.addEventListener('keydown', handleKeyDown)
document.addEventListener('keyup', handleKeyUp)
return {
inputX,
inputY,
digging,
paused,
}
}