refactor: 将 render-core, render-elements, render-assets, render-style 合并

This commit is contained in:
AncTe committed 2026-03-08 16:50:44 +08:00
1 parent 93fb788bef
commit 744a21e042
105 files changed
+149 -192

No files matched your search

@@ -9,7 +9,7 @@ import {
openReplay,
openStatistics
} from './ui';
import { ElementLocator } from '@motajs/render-core';
import { ElementLocator } from '@motajs/render';
export function createAction() {
gameKey
@@ -1,4 +1,4 @@
import { DefaultProps, ElementLocator, Font } from '@motajs/render';
import { ElementLocator, Font } from '@motajs/render';
import { computed, defineComponent, reactive, ref } from 'vue';
import { Background, Selection } from './misc';
import { TextContent, TextContentProps } from './textbox';
@@ -7,6 +7,7 @@ import { Page, PageExpose } from './page';
import { GameUI, IUIMountable, SetupComponentOptions } from '@motajs/system-ui';
import { useKey } from '../use';
import { sleep } from 'mutate-animate';
import { DefaultProps } from '@motajs/render-vue';
export interface ConfirmBoxProps extends DefaultProps, TextContentProps {
/** 确认框的提示文本内容 */
@@ -3,8 +3,7 @@ import { SetupComponentOptions } from '@motajs/system-ui';
import { clamp, isNil } from 'lodash-es';
import { computed, defineComponent, onMounted, ref, watch } from 'vue';
import { Scroll, ScrollExpose } from './scroll';
import { Font } from '@motajs/render-style';
import { MotaOffscreenCanvas2D } from '@motajs/render-core';
import { MotaOffscreenCanvas2D, Font } from '@motajs/render';
import {
HALF_STATUS_WIDTH,
STATUS_BAR_HEIGHT,
@@ -1,4 +1,5 @@
import { DefaultProps, ElementLocator, GraphicPropsBase } from '@motajs/render';
import { ElementLocator } from '@motajs/render';
import { DefaultProps, GraphicPropsBase } from '@motajs/render-vue';
import { SetupComponentOptions } from '@motajs/system-ui';
import {
computed,
@@ -1,15 +1,15 @@
import { DefaultProps } from '@motajs/render-vue';
import { computed, defineComponent, onUnmounted, ref, watch } from 'vue';
import { TextContent, TextContentProps } from './textbox';
import { RectRCircleParams } from '@motajs/render-elements';
import {
Container,
ElementLocator,
MotaRenderer,
RenderItem,
Transform
} from '@motajs/render-core';
import { Font } from '@motajs/render-style';
Transform,
Font,
RectRCircleParams
} from '@motajs/render';
import { transitionedColor, useKey } from '../use';
import { linear } from 'mutate-animate';
import { Background, Selection } from './misc';
@@ -1,8 +1,7 @@
import { DefaultProps } from '@motajs/render-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 { ElementLocator, Font } from '@motajs/render';
import { SetupComponentOptions } from '@motajs/system-ui';
import { Scroll } from './scroll';
@@ -1,12 +1,6 @@
import {
DefaultProps,
ElementLocator,
onTick,
PathProps,
Sprite
} from '@motajs/render';
import { ElementLocator, Sprite, MotaOffscreenCanvas2D } from '@motajs/render';
import { DefaultProps, PathProps, onTick } from '@motajs/render-vue';
import { computed, defineComponent, ref, SetupContext, watch } from 'vue';
import { MotaOffscreenCanvas2D } from '@motajs/render';
import { TextContent, TextContentProps } from './textbox';
import { Scroll, ScrollExpose, ScrollProps } from './scroll';
import { transitioned } from '../use';
@@ -9,8 +9,9 @@ import {
watch
} from 'vue';
import { clamp, isNil } from 'lodash-es';
import { DefaultProps, ElementLocator, Font } from '@motajs/render';
import { ElementLocator, Font } from '@motajs/render';
import { SetupComponentOptions } from '@motajs/system-ui';
import { DefaultProps } from '@motajs/render-vue';
/** 圆角矩形页码距离容器的边框大小,与 pageSize 相乘 */
const RECT_PAD = 0.1;
@@ -12,7 +12,6 @@ import {
} from 'vue';
import {
Container,
DefaultProps,
ElementLocator,
RenderItem,
Sprite,
@@ -31,6 +30,7 @@ import { hyper, linear, Transition } from 'mutate-animate';
import { clamp } from 'lodash-es';
import { transitioned } from '../use';
import { SetupComponentOptions } from '@motajs/system-ui';
import { DefaultProps } from '@motajs/render-vue';
export const enum ScrollDirection {
Horizontal,
@@ -2,7 +2,6 @@ import {
ElementLocator,
Font,
Sprite,
DefaultProps,
Text,
MotaOffscreenCanvas2D
} from '@motajs/render';
@@ -32,6 +31,7 @@ import {
} from './textboxTyper';
import { SetupComponentOptions } from '@motajs/system-ui';
import { texture } from '../elements';
import { DefaultProps } from '@motajs/render-vue';
// todo: TextContent 应该改成渲染元素?
@@ -1,8 +1,9 @@
import { logger } from '@motajs/common';
import { Font, onTick, MotaOffscreenCanvas2D } from '@motajs/render';
import { Font, MotaOffscreenCanvas2D } from '@motajs/render';
import EventEmitter from 'eventemitter3';
import { isNil } from 'lodash-es';
import { RenderableData, AutotileRenderable, texture } from '../elements';
import { onTick } from '@motajs/render-vue';
/** 文字的安全填充,会填充在文字的上侧和下侧,防止削顶和削底 */
const SAFE_PAD = 1;
@@ -1,8 +1,4 @@
import {
ElementLocator,
MotaOffscreenCanvas2D,
Sprite
} from '@motajs/render-core';
import { ElementLocator, MotaOffscreenCanvas2D, Sprite } from '@motajs/render';
import { SpriteProps } from '@motajs/render-vue';
import { defineComponent, ref, watch } from 'vue';
import { SetupComponentOptions } from '@motajs/system-ui';
@@ -1,4 +1,4 @@
import { DefaultProps, ElementLocator, Font } from '@motajs/render';
import { ElementLocator, Font } from '@motajs/render';
import { logger } from '@motajs/common';
import { computed, defineComponent, onUnmounted, ref } from 'vue';
import { transitioned } from '../use';
@@ -6,6 +6,7 @@ import { hyper } from 'mutate-animate';
import { debounce } from 'lodash-es';
import { texture } from '../elements';
import { SetupComponentOptions } from '@motajs/system-ui';
import { DefaultProps } from '@motajs/render-vue';
export interface TipProps extends DefaultProps {
/** 显示的位置 */
@@ -5,7 +5,7 @@ import {
RenderItem,
Transform,
MotaOffscreenCanvas2D
} from '@motajs/render-core';
} from '@motajs/render';
import { HeroRenderer } from './hero';
import { ILayerGroupRenderExtends, LayerGroup } from './layer';
@@ -1,6 +1,6 @@
import { EventEmitter } from 'eventemitter3';
import { logger } from '@motajs/common';
import { MotaOffscreenCanvas2D, RenderItem } from '@motajs/render-core';
import { MotaOffscreenCanvas2D, RenderItem } from '@motajs/render';
interface BlockCacherEvent {
split: [];
@@ -1,6 +1,5 @@
import { logger } from '@motajs/common';
import { MotaOffscreenCanvas2D } from '@motajs/render-core';
import { SizedCanvasImageSource } from '@motajs/render-assets';
import { MotaOffscreenCanvas2D, SizedCanvasImageSource } from '@motajs/render';
// 经过测试(https://www.measurethat.net/Benchmarks/Show/30741/1/drawimage-img-vs-canvas-vs-bitmap-cropping-fix-loading)
// 得出结论,ImageBitmap和Canvas的绘制性能不如Image,于是直接画Image就行,所以缓存基本上就是存Image
@@ -1,5 +1,5 @@
import { Animation, TimingFn, Transition } from 'mutate-animate';
import { RenderItem, Transform } from '@motajs/render-core';
import { RenderItem, Transform } from '@motajs/render';
import { logger } from '@motajs/common';
import EventEmitter from 'eventemitter3';
@@ -4,7 +4,7 @@ import {
MotaOffscreenCanvas2D,
Transform,
transformCanvas
} from '@motajs/render-core';
} from '@motajs/render';
import { logger } from '@motajs/common';
import EventEmitter from 'eventemitter3';
import { isNil } from 'lodash-es';
@@ -1,5 +1,5 @@
import EventEmitter from 'eventemitter3';
import { RenderItem } from '@motajs/render-core';
import { RenderItem } from '@motajs/render';
export interface IAnimateFrame {
updateFrameAnimate(frame: number, time: number): void;
@@ -1,5 +1,4 @@
import { RenderAdapter } from '@motajs/render-core';
import { SizedCanvasImageSource } from '@motajs/render-assets';
import { SizedCanvasImageSource, RenderAdapter } from '@motajs/render';
import { logger } from '@motajs/common';
import { ILayerRenderExtends, Layer, LayerMovingRenderable } from './layer';
import EventEmitter from 'eventemitter3';
@@ -6,7 +6,7 @@ import {
RenderItem,
Transform,
RenderAdapter
} from '@motajs/render-core';
} from '@motajs/render';
import { logger } from '@motajs/common';
import { sleep, TimingFn } from 'mutate-animate';
import { RenderableData, texture } from './cache';
@@ -4,9 +4,9 @@ import {
RenderItem,
RenderItemPosition,
MotaOffscreenCanvas2D,
Transform
} from '@motajs/render-core';
import { SizedCanvasImageSource } from '@motajs/render-assets';
Transform,
SizedCanvasImageSource
} from '@motajs/render';
import { isNil } from 'lodash-es';
import { RenderableData, AutotileRenderable, texture } from './cache';
import { IAnimateFrame, renderEmits } from './frame';
@@ -1,6 +1,5 @@
import { BaseProps, TagDefine } from '@motajs/render-vue';
import { ERenderItemEvent, Transform } from '@motajs/render-core';
import { CanvasStyle } from '@motajs/render-assets';
import { ERenderItemEvent, Transform, CanvasStyle } from '@motajs/render';
import {
ILayerGroupRenderExtends,
FloorLayer,
@@ -1,4 +1,4 @@
import { RenderAdapter } from '@motajs/render-core';
import { RenderAdapter } from '@motajs/render';
import { FloorViewport } from './viewport';
export function disableViewport() {
@@ -1,4 +1,4 @@
import { RenderAdapter } from '@motajs/render-core';
import { RenderAdapter } from '@motajs/render';
import { HeroRenderer } from './hero';
import { ILayerGroupRenderExtends, LayerGroup } from './layer';
import { LayerGroupFloorBinder } from './layer';
@@ -1,4 +1,4 @@
import { Shader, ShaderProgram } from '@motajs/render-core';
import { Shader, ShaderProgram } from '@motajs/render';
export abstract class EffectBase<T> {
/** 当前使用的程序 */
@@ -2,7 +2,7 @@ import {
ITransformUpdatable,
ShaderProgram,
Transform3D
} from '@motajs/render-core';
} from '@motajs/render';
import { EffectBase } from './base';
export class Image3DEffect
@@ -1,4 +1,4 @@
import { createApp, Font } from '@motajs/render';
import { Font } from '@motajs/render';
import { defineComponent } from 'vue';
import { DEFAULT_FONT, MAIN_HEIGHT, MAIN_WIDTH } from './shared';
import { hook, loading } from '@user/data-base';
@@ -10,6 +10,7 @@ import { sceneController } from './scene';
import { GameTitleUI } from './ui/title';
import { createWeather } from './weather';
import { createMainExtension } from './commonIns';
import { createApp } from '@motajs/render-vue';
export function createGameRenderer() {
const App = defineComponent(_props => {
@@ -1,10 +1,10 @@
import {
wrapInstancedComponent,
MotaOffscreenCanvas2D,
RenderItem,
RenderItemPosition,
Transform
} from '@motajs/render';
import { wrapInstancedComponent } from '@motajs/render-vue';
// 渲染端的向后兼容用,会充当两个版本间过渡的作用
class Change extends RenderItem {
@@ -1,4 +1,4 @@
import { MotaOffscreenCanvas2D, RenderItem } from '@motajs/render-core';
import { MotaOffscreenCanvas2D, RenderItem } from '@motajs/render';
import { ILayerState } from '@user/data-state';
import { IMapRenderer } from './types';
import { ElementNamespace, ComponentInternalInstance } from 'vue';
@@ -13,11 +13,7 @@ import { IMapRenderer, IMapRendererTicker, IMovingBlock } from '../types';
import { isNil } from 'lodash-es';
import { IHookController, logger } from '@motajs/common';
import { BlockCls, IMaterialFramedData } from '@user/client-base';
import {
ITexture,
ITextureSplitter,
TextureRowSplitter
} from '@motajs/render-assets';
import { ITexture, ITextureSplitter, TextureRowSplitter } from '@motajs/render';
import { IMapHeroRenderer } from './types';
import { TimingFn } from 'mutate-animate';
@@ -7,7 +7,7 @@ import {
IMapVertexBlock
} from '../types';
import { IMapTextArea, IMapTextRenderable, IOnMapTextRenderer } from './types';
import { ITransformUpdatable, Transform } from '@motajs/render-core';
import { ITransformUpdatable, Transform } from '@motajs/render';
export class OnMapTextRenderer
implements IOnMapTextRenderer, ITransformUpdatable<Transform>
@@ -116,6 +116,7 @@ export class OnMapTextRenderer
(e * renderWidth) / 2,
(f * renderHeight) / 2
);
// 由于 WebGL 坐标系与 Canvas2D 坐标系不一样,所以还需要变换一下
ctx.scale(1, -1);
// draw text in each block
@@ -1,11 +1,11 @@
import { ITexture } from '@motajs/render-assets';
import { ITexture, Font } from '@motajs/render';
import {
FaceDirection,
HeroAnimateDirection,
IHeroState,
IMapLayer
} from '@user/data-state';
import { Font } from '@motajs/render-style';
import { IMapRenderResult } from '../types';
export interface IMapExtensionManager {
@@ -2,8 +2,9 @@ import {
ITextureAnimater,
ITextureRenderable,
SizedCanvasImageSource,
TextureColumnAnimater
} from '@motajs/render-assets';
TextureColumnAnimater,
Transform
} from '@motajs/render';
import {
AutotileProcessor,
BlockCls,
@@ -45,7 +46,6 @@ import {
DYNAMIC_RESERVE,
MOVING_TOLERANCE
} from '../shared';
import { Transform } from '@motajs/render-core';
import { MapViewport } from './viewport';
import { INSTANCED_COUNT } from './constant';
import { StaticBlockStatus } from './status';
@@ -1,9 +1,9 @@
import { IDirtyMark, IDirtyTracker } from '@motajs/common';
import {
ITextureRenderable,
SizedCanvasImageSource
} from '@motajs/render-assets';
import { Transform } from '@motajs/render-core';
SizedCanvasImageSource,
Transform
} from '@motajs/render';
import {
IAutotileProcessor,
IMaterialFramedData,
@@ -21,7 +21,7 @@ import { DYNAMIC_RESERVE, MAP_BLOCK_HEIGHT, MAP_BLOCK_WIDTH } from '../shared';
import { BlockSplitter } from './block';
import { clamp, isNil } from 'lodash-es';
import { BlockCls, IMaterialFramedData } from '@user/client-base';
import { IRect } from '@motajs/render-assets';
import { IRect } from '@motajs/render';
import { INSTANCED_COUNT } from './constant';
export interface IMapDataGetter {
@@ -1,4 +1,4 @@
import { Transform } from '@motajs/render-core';
import { Transform } from '@motajs/render';
import {
IBlockData,
IMapRenderArea,
@@ -1,4 +1,4 @@
import { MotaRenderer } from '@motajs/render-core';
import { MotaRenderer } from '@motajs/render';
import { MAIN_WIDTH, MAIN_HEIGHT } from './shared';
export const mainRenderer = new MotaRenderer({
@@ -1,5 +1,4 @@
import { ElementLocator } from '@motajs/render-core';
import { Font } from '@motajs/render-style';
import { ElementLocator, Font } from '@motajs/render';
// 本文件为 UI 配置文件,你可以修改下面的每个常量来控制 UI 的显示参数,每个常量都有注释说明
@@ -3,8 +3,7 @@ import {
Font,
IActionEvent,
MotaOffscreenCanvas2D,
Sprite,
onTick
Sprite
} from '@motajs/render';
// import { WeatherController } from '../weather';
import { defineComponent, onUnmounted, reactive, ref } from 'vue';
@@ -33,6 +32,7 @@ import { FloorChange } from '../legacy/fallback';
import { mainUIController } from './controller';
import { isNil } from 'lodash-es';
import { mainMapExtension, mainMapRenderer } from '../commonIns';
import { onTick } from '@motajs/render-vue';
const MainScene = defineComponent(() => {
//#region 基本定义
@@ -1,6 +1,5 @@
import { ElementLocator, IWheelEvent } from '@motajs/render-core';
import { ElementLocator, IWheelEvent, Font } from '@motajs/render';
import { DefaultProps } from '@motajs/render-vue';
import { Font } from '@motajs/render';
import {
GameUI,
IUIMountable,
@@ -1,12 +1,7 @@
import { GameUI, SetupComponentOptions } from '@motajs/system-ui';
import { computed, ComputedRef, defineComponent, shallowReactive } from 'vue';
import { TextContent } from '../components';
import {
DefaultProps,
ElementLocator,
Font,
SizedCanvasImageSource
} from '@motajs/render';
import { ElementLocator, Font, SizedCanvasImageSource } from '@motajs/render';
import { MixedToolbar, ReplayingStatus } from './toolbar';
import { openViewMap } from './viewmap';
import { mainUIController } from './controller';
@@ -16,6 +11,7 @@ import {
STATUS_BAR_HEIGHT,
STATUS_BAR_WIDTH
} from '../shared';
import { DefaultProps } from '@motajs/render-vue';
export interface ILeftHeroStatus {
/** 楼层 id */
@@ -20,7 +20,7 @@ import {
TITLE_X,
TITLE_Y
} from '../shared';
import { ElementLocator } from '@motajs/render-core';
import { ElementLocator, Font } from '@motajs/render';
import {
ITransitionedController,
transitioned,
@@ -28,7 +28,6 @@ import {
useKey
} from '../use';
import { hyper, linear, sleep } from 'mutate-animate';
import { Font } from '@motajs/render-style';
import { ExitFullscreen, Fullscreen, SoundVolume } from '../components';
import { mainSetting, triggerFullscreen } from '@motajs/legacy-ui';
import { saveLoad } from './save';
@@ -1,4 +1,4 @@
import { DefaultProps, ElementLocator, Font } from '@motajs/render';
import { ElementLocator, Font } from '@motajs/render';
import { computed, defineComponent, ref } from 'vue';
import {
DoubleArrow,
@@ -25,6 +25,7 @@ import { mainUIController } from './controller';
import { MAIN_HEIGHT, FULL_LOC, POP_BOX_WIDTH, CENTER_LOC } from '../shared';
import { openReplay, openSettings } from './settings';
import { openViewMap } from './viewmap';
import { DefaultProps } from '@motajs/render-vue';
interface ToolbarProps extends DefaultProps {
loc?: ElementLocator;
@@ -3,8 +3,9 @@ import {
IActionEvent,
IActionEventBase,
IWheelEvent,
MotaOffscreenCanvas2D
} from '@motajs/render-core';
MotaOffscreenCanvas2D,
Font
} from '@motajs/render';
import { BaseProps } from '@motajs/render-vue';
import {
GameUI,
@@ -22,7 +23,7 @@ import {
shallowRef,
watch
} from 'vue';
import { FloorSelector } from '../components/floorSelect';
import { FloorSelector } from '../components';
import {
ILayerGroupRenderExtends,
FloorDamageExtends,
@@ -31,7 +32,6 @@ import {
LayerGroup,
LayerGroupFloorBinder
} from '../elements';
import { Font } from '@motajs/render-style';
import { clamp, mean } from 'lodash-es';
import { calculateStatisticsOne, StatisticsDataOneFloor } from './statistics';
import { Tip, TipExpose } from '../components';
@@ -1,4 +1,4 @@
import { ElementLocator } from '@motajs/render-core';
import { ElementLocator } from '@motajs/render';
export interface IGridLayoutData {
/** 有多少列 */
@@ -1,4 +1,4 @@
import { RenderItem } from '@motajs/render-core';
import { RenderItem } from '@motajs/render';
import { IWeather, IWeatherController, IWeatherInstance } from './types';
import { logger } from '@motajs/common';
import { isNil } from 'lodash-es';
@@ -1,5 +1,5 @@
import { CloudLike } from './cloudLike';
import { SizedCanvasImageSource } from '@motajs/render-assets';
import { SizedCanvasImageSource } from '@motajs/render';
export class CloudWeather extends CloudLike {
getImage(): SizedCanvasImageSource | null {
@@ -1,6 +1,9 @@
import { MotaOffscreenCanvas2D, Sprite } from '@motajs/render-core';
import {
MotaOffscreenCanvas2D,
Sprite,
SizedCanvasImageSource
} from '@motajs/render';
import { Weather } from '../weather';
import { SizedCanvasImageSource } from '@motajs/render-assets';
export abstract class CloudLike extends Weather<Sprite> {
/** 不透明度 */
@@ -1,6 +1,5 @@
import { MotaOffscreenCanvas2D } from '@motajs/render-core';
import { MotaOffscreenCanvas2D, SizedCanvasImageSource } from '@motajs/render';
import { CloudLike } from './cloudLike';
import { SizedCanvasImageSource } from '@motajs/render-assets';
export class FogWeather extends CloudLike {
/** 雾天气的图像比较小,因此将四个进行合并 */
@@ -1,4 +1,4 @@
import { MotaOffscreenCanvas2D, Sprite } from '@motajs/render-core';
import { MotaOffscreenCanvas2D, Sprite } from '@motajs/render';
import { Weather } from '../weather';
import { clamp } from 'lodash-es';
@@ -1,4 +1,4 @@
import { RenderItem } from '@motajs/render-core';
import { RenderItem } from '@motajs/render';
export interface IWeather<T extends RenderItem = RenderItem> {
/** 天气的等级,-1 表示未创建 */
@@ -1,4 +1,4 @@
import { RenderItem } from '@motajs/render-core';
import { RenderItem } from '@motajs/render';
import { IWeather } from './types';
export abstract class Weather<T extends RenderItem> implements IWeather<T> {