From fc1e9751ebe8e441654128c976e11dc49029efc2 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Sun, 25 May 2025 17:25:41 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20props=20=E4=B9=9F=E6=8C=AA=E5=88=B0?= =?UTF-8?q?=20client-modules=EF=BC=8C=E5=B9=B6=E4=BD=BF=20image=20?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E4=B8=8E=E6=A0=B7=E6=9D=BF=E8=A7=A3=E8=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/render/elements/props.ts | 61 +++++++++++++++++++ packages/render-vue/src/elements.tsx | 17 +----- packages/render-vue/src/map.ts | 10 +-- packages/render-vue/src/props.ts | 41 ------------- 4 files changed, 67 insertions(+), 62 deletions(-) create mode 100644 packages-user/client-modules/src/render/elements/props.ts diff --git a/packages-user/client-modules/src/render/elements/props.ts b/packages-user/client-modules/src/render/elements/props.ts new file mode 100644 index 0000000..512330e --- /dev/null +++ b/packages-user/client-modules/src/render/elements/props.ts @@ -0,0 +1,61 @@ +import { BaseProps, TagDefine } from '@motajs/render-vue'; +import { Transform } from '@motajs/render-core'; +import { + ILayerGroupRenderExtends, + FloorLayer, + ILayerRenderExtends, + ELayerEvent, + ELayerGroupEvent +} from './layer'; +import { EAnimateEvent } from './animate'; +import { EIconEvent, EWinskinEvent } from './misc'; + +export interface AnimateProps extends BaseProps {} + +export interface IconProps extends BaseProps { + /** 图标 id 或数字 */ + icon: AllNumbers | AllIds; + /** 显示图标的第几帧 */ + frame?: number; + /** 是否开启动画,开启后 frame 参数无效 */ + animate?: boolean; +} + +export interface WinskinProps extends BaseProps { + /** winskin 的图片 id */ + image: ImageIds; + /** 边框大小 */ + borderSize?: number; +} + +export interface LayerGroupProps extends BaseProps { + cellSize?: number; + blockSize?: number; + floorId?: FloorIds; + bindThisFloor?: boolean; + camera?: Transform; + ex?: readonly ILayerGroupRenderExtends[]; + layers?: readonly FloorLayer[]; +} + +export interface LayerProps extends BaseProps { + layer?: FloorLayer; + mapWidth?: number; + mapHeight?: number; + cellSize?: number; + background?: AllNumbers; + floorImage?: FloorAnimate[]; + ex?: readonly ILayerRenderExtends[]; +} + +declare module 'vue/jsx-runtime' { + namespace JSX { + export interface IntrinsicElements { + layer: TagDefine; + 'layer-group': TagDefine; + animation: TagDefine; + icon: TagDefine; + winskin: TagDefine; + } + } +} diff --git a/packages/render-vue/src/elements.tsx b/packages/render-vue/src/elements.tsx index 5b0563a..a5f4067 100644 --- a/packages/render-vue/src/elements.tsx +++ b/packages/render-vue/src/elements.tsx @@ -8,7 +8,6 @@ import { } from 'vue'; import EventEmitter from 'eventemitter3'; import { - AnimateProps, BaseProps, BezierProps, CirclesProps, @@ -18,10 +17,7 @@ import { CustomProps, DamageProps, EllipseProps, - IconProps, ImageProps, - LayerGroupProps, - LayerProps, LineProps, PathProps, QuadraticProps, @@ -29,8 +25,7 @@ import { RectRProps, ShaderProps, SpriteProps, - TextProps, - WinskinProps + TextProps } from './props'; import { ERenderItemEvent, @@ -40,13 +35,8 @@ import { EShaderEvent } from '@motajs/render-core'; import { - EIconEvent, EImageEvent, ETextEvent, - EWinskinEvent, - ELayerEvent, - ELayerGroupEvent, - EAnimateEvent, EGraphicItemEvent } from '@motajs/render-elements'; @@ -97,10 +87,7 @@ declare module 'vue/jsx-runtime' { image: TagDefine; comment: TagDefine; custom: TagDefine; - layer: TagDefine; - 'layer-group': TagDefine; damage: TagDefine; - animation: TagDefine; 'g-rect': TagDefine; 'g-circle': TagDefine; 'g-ellipse': TagDefine; @@ -109,8 +96,6 @@ declare module 'vue/jsx-runtime' { 'g-quad': TagDefine; 'g-path': TagDefine; 'g-rectr': TagDefine; - icon: TagDefine; - winskin: TagDefine; } } } diff --git a/packages/render-vue/src/map.ts b/packages/render-vue/src/map.ts index fce54a3..60f338b 100644 --- a/packages/render-vue/src/map.ts +++ b/packages/render-vue/src/map.ts @@ -157,13 +157,13 @@ tagMap.register('text', (_0, _1, props) => { return new Text(text, type); } }); +const emptyImage = document.createElement('canvas'); +emptyImage.width = 1; +emptyImage.height = 1; tagMap.register('image', (_0, _1, props) => { - if (!props) return new Image(core.material.images.images['bg.webp']); + if (!props) return new Image(emptyImage); else { - const { - image = core.material.images.images['bg.webp'], - type = 'static' - } = props; + const { image = emptyImage, type = 'static' } = props; return new Image(image, type); } }); diff --git a/packages/render-vue/src/props.ts b/packages/render-vue/src/props.ts index d1cae74..f4f5a24 100644 --- a/packages/render-vue/src/props.ts +++ b/packages/render-vue/src/props.ts @@ -9,9 +9,6 @@ import { CustomContainerRenderFn } from '@motajs/render-core'; import { - FloorLayer, - ILayerGroupRenderExtends, - ILayerRenderExtends, BezierParams, CircleParams, EllipseParams, @@ -125,28 +122,6 @@ export interface CommentProps extends BaseProps { text?: string; } -export interface LayerGroupProps extends BaseProps { - cellSize?: number; - blockSize?: number; - floorId?: FloorIds; - bindThisFloor?: boolean; - camera?: Transform; - ex?: readonly ILayerGroupRenderExtends[]; - layers?: readonly FloorLayer[]; -} - -export interface LayerProps extends BaseProps { - layer?: FloorLayer; - mapWidth?: number; - mapHeight?: number; - cellSize?: number; - background?: AllNumbers; - floorImage?: FloorAnimate[]; - ex?: readonly ILayerRenderExtends[]; -} - -export interface AnimateProps extends BaseProps {} - export interface DamageProps extends BaseProps { mapWidth?: number; mapHeight?: number; @@ -255,19 +230,3 @@ export interface RectRProps extends GraphicPropsBase { */ ellipse?: RectREllipseParams; } - -export interface IconProps extends BaseProps { - /** 图标 id 或数字 */ - icon: AllNumbers | AllIds; - /** 显示图标的第几帧 */ - frame?: number; - /** 是否开启动画,开启后 frame 参数无效 */ - animate?: boolean; -} - -export interface WinskinProps extends BaseProps { - /** winskin 的图片 id */ - image: ImageIds; - /** 边框大小 */ - borderSize?: number; -}