feat: render 包单独构建 & fix: 画布高清问题

This commit is contained in:
AncTe committed 2025-05-26 11:02:58 +08:00
1 parent e4a6a136ed
commit 226b841124
29 files changed
+1462 -1208

No files matched your search

@@ -1,4 +1,4 @@
import { DefaultProps, ElementLocator, Font, useKey } from '@motajs/render';
import { DefaultProps, ElementLocator, Font } from '@motajs/render';
import { computed, defineComponent, reactive, ref } from 'vue';
import { Background, Selection } from './misc';
import { TextContent, TextContentExpose, TextContentProps } from './textbox';
@@ -6,6 +6,7 @@ import { SetupComponentOptions } from './types';
import { TextAlign } from './textboxTyper';
import { Page, PageExpose } from './page';
import { GameUI, IUIMountable } from '@motajs/system-ui';
import { useKey } from '../use';
export interface ConfirmBoxProps extends DefaultProps, TextContentProps {
text: string;
@@ -1,10 +1,10 @@
import { DefaultProps } from '@motajs/render-vue';
import Scroll from 'packages/legacy-ui/src/components/scroll.vue';
import { computed, defineComponent, ref, SlotsType, VNode } from 'vue';
import { Selection } from './misc';
import { ElementLocator } from '@motajs/render-core';
import { Font } from '@motajs/render-style';
import { SetupComponentOptions } from '@motajs/system-ui';
import { Scroll } from './scroll';
export interface ListProps extends DefaultProps {
/** 列表内容,第一项表示 id,第二项表示显示的内容 */
@@ -64,7 +64,7 @@ export const List = defineComponent<ListProps, ListEmits, keyof ListEmits>(
};
return () => (
<Scroll>
<Scroll loc={props.loc}>
{props.list.map((v, i) => {
const [key, value] = v;
const loc: ElementLocator = [
@@ -70,9 +70,12 @@ export * from './animate';
export * from './block';
export * from './cache';
export * from './camera';
export * from './damage';
export * from './frame';
export * from './hero';
export * from './itemDetail';
export * from './layer';
export * from './misc';
export * from './viewport';
export * from './props';
export * from './utils';
export * from './viewport';
@@ -570,11 +570,11 @@ export class Layer extends Container<ELayerEvent> {
static readonly FRAME_ALL = 15;
/** 静态层,包含除大怪物及正在移动的内容外的内容 */
protected staticMap: MotaOffscreenCanvas2D = this.requireCanvas();
protected staticMap = this.requireCanvas(true, false);
/** 移动层,包含大怪物及正在移动的内容 */
protected movingMap: MotaOffscreenCanvas2D = this.requireCanvas();
protected movingMap = this.requireCanvas(true, false);
/** 背景图层 */
protected backMap: MotaOffscreenCanvas2D = this.requireCanvas();
protected backMap = this.requireCanvas(true, false);
/** 最终渲染至的Sprite */
main: Sprite = new Sprite('absolute', false, true);
@@ -9,9 +9,21 @@ import {
} from './layer';
import { EAnimateEvent } from './animate';
import { EIconEvent, EWinskinEvent } from './misc';
import { IEnemyCollection } from '@motajs/types';
import { CanvasStyle } from '@motajs/render-elements';
export interface AnimateProps extends BaseProps {}
export interface DamageProps extends BaseProps {
mapWidth?: number;
mapHeight?: number;
cellSize?: number;
enemy?: IEnemyCollection;
font?: string;
strokeStyle?: CanvasStyle;
strokeWidth?: number;
}
export interface IconProps extends BaseProps {
/** 图标 id 或数字 */
icon: AllNumbers | AllIds;
@@ -47,3 +47,4 @@ export * from './components';
export * from './ui';
export * from './use';
export * from './elements';
export * from './renderer';
@@ -1,4 +1,4 @@
import { GameUI, UIComponentProps } from '@motajs/system-ui';
import { GameUI } from '@motajs/system-ui';
import { computed, defineComponent, ref, watch } from 'vue';
import { SetupComponentOptions, TextContent } from '../components';
import {
@@ -40,7 +40,7 @@ export interface ILeftHeroStatus {
magicDef: number;
}
interface StatusBarProps<T> extends DefaultProps, UIComponentProps {
interface StatusBarProps<T> extends DefaultProps {
loc: ElementLocator;
status: T;
hidden: boolean;
@@ -1,3 +1,4 @@
import { Hotkey, gameKey } from '@motajs/system-action';
import { loading } from '@user/data-base';
import { TimingFn, Transition } from 'mutate-animate';
import {
@@ -67,6 +68,25 @@ export function onLoaded(hook: () => void) {
}
}
type KeyUsing = [Hotkey, symbol];
/**
* 在组件中定义按键操作
* @param noScope 是否不创建新作用域
*/
export function useKey(noScope: boolean = false): KeyUsing {
if (noScope) {
return [gameKey, gameKey.scope];
} else {
const sym = Symbol();
gameKey.use(sym);
onUnmounted(() => {
gameKey.dispose();
});
return [gameKey, sym];
}
}
export interface ITransitionedController<T> {
readonly ref: Ref<T>;
readonly value: T;