Files

117 lines
2.3 KiB
Vue

<script setup lang="ts">
import goStore, { oauth2_register_discord, setup_websocket, heron_cookie_login } from "@/netcode";
await setup_websocket()
useHead
({
title
: 'Héron Realms',
})
const heron_session = useCookie('heron_session')
const route = useRoute()
onMounted(async () => {
const code = route.query.code
if (!code) { return }
if (Array.isArray(code)) { return }
await setup_websocket()
oauth2_register_discord(code)
history.pushState(
{},
'',
'/'
)
})
onMounted(async () => {
if (!heron_session.value) { return }
heron_cookie_login(heron_session.value)
})
function keyDownHandler(e: KeyboardEvent) {
if (e.repeat) { return }
console.log(e.code)
if (e.code != "AltLeft") { return }
goStore.zoomKeyPressed = true
e.preventDefault()
return false
}
function keyUpHandler(e: KeyboardEvent) {
if (e.repeat) { return }
if (e.code != "AltLeft") { return }
goStore.zoomKeyPressed = false
e.preventDefault()
return false
}
function contextMenuHandler(e: MouseEvent) {
e.preventDefault()
}
function mouseDownHandler(e: MouseEvent) {
if (e.button !== 2) { return }
goStore.zoomKeyPressed = true
e.preventDefault()
return false
}
function mouseUpHandler(e: MouseEvent) {
if (e.button !== 2) { return }
goStore.zoomKeyPressed = false
e.preventDefault()
return false
}
function follow_mouse(e: MouseEvent) {
goStore.clientMouseX = e.clientX
goStore.clientMouseY = e.clientY
}
onMounted(() => {
window.addEventListener("contextmenu", contextMenuHandler)
window.addEventListener("mousedown", mouseDownHandler)
window.addEventListener("mouseup", mouseUpHandler)
document.addEventListener("mousemove", follow_mouse)
})
onUnmounted(() => {
window.removeEventListener("contextmenu", contextMenuHandler)
window.removeEventListener("mousedown", mouseDownHandler)
window.removeEventListener("mouseup", mouseUpHandler)
document.removeEventListener("mousemove", follow_mouse)
})
onDeactivated
</script>
<template>
<div class="root_dom_div">
<CardOverlay v-if="goStore.zoomKeyPressed" :card_id="goStore.hoveredCard" />
<NuxtPage />
</div>
</template>
<style>
html {
text-align: center;
}
body {
margin: 0;
height: 100vh;
}
#__nuxt {
height: 100%;
user-select: none;
}
.root_dom_div {
height: 100%;
}
</style>