style: 将jsx元素的props拆分出来,提高可读性

This commit is contained in:
unanmed 2024-12-28 19:48:33 +08:00
parent 8b5f94b65b
commit fa7b415c31
2 changed files with 57 additions and 46 deletions

View File

@ -14,24 +14,16 @@ import { FloorChange } from '@/plugin/fallback';
import { createApp } from './renderer'; import { createApp } from './renderer';
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { Textbox } from './components'; import { Textbox } from './components';
import { ILayerGroupRenderExtends, ILayerRenderExtends } from './preset';
import { Props } from './utils';
let main: MotaRenderer; let main: MotaRenderer;
Mota.require('var', 'loading').once('coreInit', () => { Mota.require('var', 'loading').once('coreInit', () => {
main = new MotaRenderer(); main = new MotaRenderer();
const Com = defineComponent(props => { const App = defineComponent(props => {
return () => ( const layerGroupExtends: ILayerGroupRenderExtends[] = [
<container
id="map-draw"
hd
antiAliasing={false}
width={core._PX_}
height={core._PY_}
>
<layer-group
id="layer-main"
ex={[
new FloorDamageExtends(), new FloorDamageExtends(),
new FloorItemDetail(), new FloorItemDetail(),
new LayerGroupFilter(), new LayerGroupFilter(),
@ -39,46 +31,50 @@ Mota.require('var', 'loading').once('coreInit', () => {
new LayerGroupHalo(), new LayerGroupHalo(),
new LayerGroupAnimate(), new LayerGroupAnimate(),
new FloorViewport() new FloorViewport()
]} ];
> const eventExtends: ILayerRenderExtends[] = [
<layer layer="bg" zIndex={10}></layer>
<layer layer="bg2" zIndex={20}></layer>
<layer
layer="event"
zIndex={30}
ex={[
new HeroRenderer(), new HeroRenderer(),
new LayerDoorAnimate(), new LayerDoorAnimate(),
new LayerShadowExtends() new LayerShadowExtends()
]} ];
></layer> const mapDrawProps: Props<'container'> = {
width: core._PX_,
height: core._PY_
};
const mainTextboxProps: Props<typeof Textbox> = {
text: '',
hidden: true,
width: 480,
height: 150,
y: 330,
zIndex: 30,
fillStyle: '#fff',
titleFill: 'gold',
font: '16px normal',
titleFont: '700 20px normal',
winskin: 'winskin2.png',
interval: 25,
lineHeight: 6
};
return () => (
<container id="map-draw" {...mapDrawProps}>
<layer-group id="layer-main" ex={layerGroupExtends}>
<layer layer="bg" zIndex={10}></layer>
<layer layer="bg2" zIndex={20}></layer>
<layer layer="event" zIndex={30} ex={eventExtends}></layer>
<layer layer="fg" zIndex={40}></layer> <layer layer="fg" zIndex={40}></layer>
<layer layer="fg2" zIndex={50}></layer> <layer layer="fg2" zIndex={50}></layer>
<PopText id="pop-main" zIndex={80}></PopText> <PopText id="pop-main" zIndex={80}></PopText>
</layer-group> </layer-group>
<Textbox <Textbox id="main-textbox" {...mainTextboxProps}></Textbox>
id="main-textbox"
text=""
hidden
width={480}
height={150}
y={330}
zIndex={30}
fillStyle={'#fff'}
titleFill={'gold'}
font="16px normal"
titleFont="700 20px normal"
winskin="winskin2.png"
interval={25}
lineHeight={6}
></Textbox>
<FloorChange id="floor-change" zIndex={50}></FloorChange> <FloorChange id="floor-change" zIndex={50}></FloorChange>
</container> </container>
); );
}); });
main.hide(); main.hide();
createApp(Com).mount(main); createApp(App).mount(main);
// render(<Com></Com>, main); // render(<Com></Com>, main);
console.log(main); console.log(main);

View File

@ -1,6 +1,21 @@
import { Ticker, TimingFn } from 'mutate-animate'; import { Ticker, TimingFn } from 'mutate-animate';
import { RenderAdapter } from './adapter'; import { RenderAdapter } from './adapter';
import { FloorViewport } from './preset/viewport'; import { FloorViewport } from './preset/viewport';
import { JSX } from 'vue/jsx-runtime';
import { Component, DefineComponent, DefineSetupFnComponent } from 'vue';
export type Props<
T extends
| keyof JSX.IntrinsicElements
| DefineSetupFnComponent<any>
| DefineComponent
> = T extends keyof JSX.IntrinsicElements
? JSX.IntrinsicElements[T]
: T extends DefineSetupFnComponent<any>
? InstanceType<T>['$props']
: T extends DefineComponent
? InstanceType<T>['$props']
: unknown;
export function disableViewport() { export function disableViewport() {
const adapter = RenderAdapter.get<FloorViewport>('viewport'); const adapter = RenderAdapter.get<FloorViewport>('viewport');