48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
export function setupCloseListener () {
|
|
window.appState.isQuitting = false
|
|
|
|
const handleClose = async () => {
|
|
await windows95.saveState()
|
|
window.appState.isQuitting = true
|
|
windows95.quit()
|
|
}
|
|
|
|
window.onbeforeunload = (event) => {
|
|
if (window.appState.isQuitting) return
|
|
if (window.appState.isResetting) return
|
|
|
|
handleClose()
|
|
event.preventDefault()
|
|
event.returnValue = false
|
|
}
|
|
}
|
|
|
|
export function setupEscListener () {
|
|
document.onkeydown = function (evt) {
|
|
evt = evt || window.event
|
|
if (evt.keyCode === 27) {
|
|
if (window.appState.cursorCaptured) {
|
|
window.appState.cursorCaptured = false
|
|
window.emulator.mouse_set_status(false)
|
|
document.exitPointerLock()
|
|
} else {
|
|
window.appState.cursorCaptured = true
|
|
window.emulator.lock_mouse()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function onDocumentClick () {
|
|
if (!window.appState.cursorCaptured) {
|
|
window.appState.cursorCaptured = true
|
|
window.emulator.mouse_set_status(true)
|
|
window.emulator.lock_mouse()
|
|
}
|
|
}
|
|
|
|
export function setupClickListener () {
|
|
document.removeEventListener('click', onDocumentClick)
|
|
document.addEventListener('click', onDocumentClick)
|
|
}
|