diff --git a/src/components/Device.vue b/src/components/Device.vue index 6316d65..2396a0a 100644 --- a/src/components/Device.vue +++ b/src/components/Device.vue @@ -190,6 +190,12 @@ async function onMenuSelect(key: string) { return; } + if (store.controledDevice) { + message.error("请先关闭当前控制设备"); + store.hideLoading(); + return; + } + localStore.set("screenSize", { sizeW: store.screenSizeW, sizeH: store.screenSizeH, @@ -309,7 +315,7 @@ async function refreshDevices() { - 可用设备 + 可用设备 -import { onActivated, ref } from "vue"; +import { Ref, onActivated, ref } from "vue"; import { NDialog } from "naive-ui"; import { useGlobalStore } from "../store/global"; import { onBeforeRouteLeave, useRouter } from "vue-router"; @@ -17,6 +17,8 @@ const maskRef = ref(null); const store = useGlobalStore(); const router = useRouter(); +const renderedButtons: Ref = ref([]); + onBeforeRouteLeave(() => { if (maskRef.value && store.controledDevice) { unlistenToKeyEvent(); @@ -37,6 +39,7 @@ onActivated(async () => { [size.width - ml, size.height - mt] ); + refreshKeyMappingButton(); applyShortcuts(maskRef.value, store.curKeyMappingConfig); listenToKeyEvent(); } @@ -46,8 +49,29 @@ function toStartServer() { router.replace({ name: "device" }); } -// TODO 3. 根据配置渲染按钮 -// 配置文件读取到store中,不要每次都io读取 +function refreshKeyMappingButton() { + const curKeyMappingConfig = store.curKeyMappingConfig; + const relativeSize = curKeyMappingConfig.relativeSize; + const maskSizeW = maskRef?.value?.clientWidth; + const maskSizeH = maskRef?.value?.clientHeight; + if (maskSizeW && maskSizeH) { + const relativePosToMaskPos = (x: number, y: number) => { + return { + x: Math.round((x / relativeSize.w) * maskSizeW), + y: Math.round((y / relativeSize.h) * maskSizeH), + }; + }; + const buttons: any = []; + for (let keyObject of curKeyMappingConfig.list) { + const { x, y } = relativePosToMaskPos(keyObject.posX, keyObject.posY); + keyObject.x = x; + keyObject.y = y; + buttons.push(keyObject); + } + renderedButtons.value = buttons; + console.log(renderedButtons.value); + } +}