From 6ed43b3d296e36b94b57e37ab27441cc932ad1b5 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Wed, 9 Jul 2025 18:20:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20lockControl=20=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E4=B8=8B=E7=9A=84=E7=82=B9=E5=87=BB=E5=93=8D=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/render/components/textbox.tsx | 6 ++- .../client-modules/src/render/ui/main.tsx | 52 ++++++++++++++++++- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/packages-user/client-modules/src/render/components/textbox.tsx b/packages-user/client-modules/src/render/components/textbox.tsx index cd108e5..f827f59 100644 --- a/packages-user/client-modules/src/render/components/textbox.tsx +++ b/packages-user/client-modules/src/render/components/textbox.tsx @@ -32,6 +32,8 @@ import { } from './textboxTyper'; import { SetupComponentOptions } from '@motajs/system-ui'; +//#region TextContent + export interface TextContentProps extends DefaultProps, Partial { @@ -225,6 +227,8 @@ export const TextContent = defineComponent< }; }, textContentOptions); +//#region Textbox + export interface TextboxProps extends TextContentProps, DefaultProps { /** 背景颜色 */ backColor?: CanvasStyle; @@ -377,7 +381,7 @@ export const Textbox = defineComponent< }); }; - // ----- store + //#region store /** 结束打字机 */ const storeEmits: TextboxStoreEmits = { diff --git a/packages-user/client-modules/src/render/ui/main.tsx b/packages-user/client-modules/src/render/ui/main.tsx index 443da7e..bfc37c2 100644 --- a/packages-user/client-modules/src/render/ui/main.tsx +++ b/packages-user/client-modules/src/render/ui/main.tsx @@ -1,7 +1,7 @@ import { LayerShadowExtends } from '../legacy/shadow'; -import { Props, Font } from '@motajs/render'; +import { Props, Font, IActionEvent } from '@motajs/render'; import { WeatherController } from '../../weather'; -import { defineComponent, onMounted, reactive, ref } from 'vue'; +import { defineComponent, onMounted, onUnmounted, reactive, ref } from 'vue'; import { Textbox, Tip } from '../components'; import { GameUI } from '@motajs/system-ui'; import { @@ -75,6 +75,7 @@ const MainScene = defineComponent(() => { const map = ref(); const hideStatus = ref(false); + const locked = ref(false); const weather = new WeatherController('main'); onMounted(() => { @@ -163,12 +164,50 @@ const MainScene = defineComponent(() => { } }; + const updateDataFallback = () => { + // 更新 locked 状态 + locked.value = core.status.lockControl; + }; + + /** + * 对于 registerAction 的 fallback + */ + const clickData = (ev: IActionEvent) => { + const bx = Math.floor(ev.offsetX / 32); + const by = Math.floor(ev.offsetY / 32); + core.doRegisteredAction('onup', bx, by, ev.offsetX, ev.offsetY); + }; + + /** + * 对于 registerAction 的 fallback + */ + const downData = (ev: IActionEvent) => { + const bx = Math.floor(ev.offsetX / 32); + const by = Math.floor(ev.offsetY / 32); + core.doRegisteredAction('ondown', bx, by, ev.offsetX, ev.offsetY); + }; + + /** + * 对于 registerAction 的 fallback + */ + const moveData = (ev: IActionEvent) => { + const bx = Math.floor(ev.offsetX / 32); + const by = Math.floor(ev.offsetY / 32); + core.doRegisteredAction('onmove', bx, by, ev.offsetX, ev.offsetY); + }; + const loaded = ref(true); onLoaded(() => { loaded.value = true; }); hook.on('statusBarUpdate', updateStatus); + hook.on('statusBarUpdate', updateDataFallback); + + onUnmounted(() => { + hook.off('statusBarUpdate', updateStatus); + hook.off('statusBarUpdate', updateDataFallback); + }); return () => ( @@ -198,6 +237,15 @@ const MainScene = defineComponent(() => { pad={[12, 6]} corner={16} /> + {loaded.value && (