made hud draggable

This commit is contained in:
Ano-sys
2025-05-04 17:15:08 +02:00
parent f1674377eb
commit 794d245226
2 changed files with 35 additions and 3 deletions
+1
View File
@@ -32,6 +32,7 @@
line-height: 1.2; line-height: 1.2;
margin-bottom: 4px; margin-bottom: 4px;
font-family: monospace; font-family: monospace;
user-select: none;
} }
.hud-inner-btn{ .hud-inner-btn{
+34 -3
View File
@@ -1,9 +1,40 @@
<script setup> <script setup>
import { ref } from 'vue' import { ref, reactive, onMounted, onBeforeUnmount } from 'vue'
import HUDRow from "@/components/HUDRow.vue"; import HUDRow from "@/components/HUDRow.vue";
const collapsed = ref(false) const collapsed = ref(false)
const pos = reactive({ x: 20, y: 20 })
const dragging = ref(false)
const dragOffset = { x: 0, y: 0 }
function onMouseDown(e){
dragging.value = true
dragOffset.x = e.clientX - pos.x
dragOffset.y = e.clientY - pos.y
e.preventDefault()
}
function onMouseMove(e){
if(!dragging.value) return
pos.x = e.clientX - dragOffset.x
pos.y = e.clientY - dragOffset.y
}
function onMouseUp(){
dragging.value = false
}
onMounted(() => {
window.addEventListener('mousemove', onMouseMove)
window.addEventListener('mouseup', onMouseUp)
})
onBeforeUnmount(() => {
window.removeEventListener('mousemove', onMouseMove)
window.removeEventListener('mouseup', onMouseUp)
})
function toggleHUD() { function toggleHUD() {
collapsed.value = !collapsed.value collapsed.value = !collapsed.value
} }
@@ -17,7 +48,7 @@
function button_switch(e){ function button_switch(e){
log("Pressed Button: " + e.id); log("Pressed Button: " + e.id);
let buttonString = e.id == "LocationButton" ? "CameraButton" : "LocationButton"; let buttonString = e.id === "LocationButton" ? "CameraButton" : "LocationButton";
let btn = document.getElementById(buttonString); let btn = document.getElementById(buttonString);
btn.classList.remove("btn-success"); btn.classList.remove("btn-success");
@@ -56,7 +87,7 @@
<template> <template>
<div class="container"> <div class="container">
<div class="container hud" id="Control"> <div class="container hud" id="Control" :style="{ top: pos.y + 'px', left: pos.x + 'px', position: 'absolute', cursor: dragging ? 'grabbing' : 'grab' }" @mousedown="onMouseDown">
<div class="hud-header" @click="toggleHUD"> <div class="hud-header" @click="toggleHUD">
<span>{{ HUD_name }}</span> <span>{{ HUD_name }}</span>