mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-04-11 15:47:06 +08:00
refactor: 把渲染系统迁移到 monorepo
This commit is contained in:
parent
8cc0c76846
commit
1556e2c3ea
@ -14,6 +14,8 @@
|
||||
"lines": "tsx script/lines.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@motajs/render": "workspace:*",
|
||||
"@motajs/common": "workspace:*",
|
||||
"@ant-design/icons-vue": "^6.1.0",
|
||||
"@emotion/css": "^11.13.0",
|
||||
"@vueuse/core": "^10.11.1",
|
||||
@ -62,6 +64,7 @@
|
||||
"fontmin": "^0.9.9",
|
||||
"form-data": "^4.0.0",
|
||||
"fs-extra": "^10.1.0",
|
||||
"glob": "^11.0.1",
|
||||
"globals": "^15.14.0",
|
||||
"less": "^4.2.0",
|
||||
"postcss-preset-env": "^9.6.0",
|
||||
|
6
packages/client/package.json
Normal file
6
packages/client/package.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"name": "@motajs/render",
|
||||
"dependencies": {
|
||||
"@motajs/render": "workspace:*"
|
||||
}
|
||||
}
|
1
packages/client/src/index.ts
Normal file
1
packages/client/src/index.ts
Normal file
@ -0,0 +1 @@
|
||||
export * as Render from '@motajs/render';
|
3
packages/common/package.json
Normal file
3
packages/common/package.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"name": "@motajs/common"
|
||||
}
|
1
packages/common/src/index.ts
Normal file
1
packages/common/src/index.ts
Normal file
@ -0,0 +1 @@
|
||||
export * from './logger';
|
101
packages/common/src/logger.json
Normal file
101
packages/common/src/logger.json
Normal file
@ -0,0 +1,101 @@
|
||||
{
|
||||
"error": {
|
||||
"1": "Unexpected error when posting danmaku. Error info: $1",
|
||||
"2": "Unexpected loading error in loading resource '$1/$2''. Error info: $3",
|
||||
"3": "Syntax error in parsing CSS: Unexpected ':'. Col: $1. CSS string: '$2'",
|
||||
"4": "Syntax error in parsing CSS: Unexpected ';'. Col: $1. CSS string: '$2'",
|
||||
"5": "Syntax error in parsing CSS: Missing property name after '-'. Col: $1. CSS string: '$2'",
|
||||
"6": "Syntax error in parsing CSS: Unexpected end of css, expecting ':'. Col: $1. CSS string: '$2'",
|
||||
"7": "Syntax error in parsing CSS: Unexpected end of css, expecting property value. Col: $1. CSS string: '$2'",
|
||||
"8": "Post danmaku with not allowed css. Info: $1",
|
||||
"9": "Cannot initialize shader program. Error info: $1",
|
||||
"10": "Cannot compile $1 shader. Error info: $2",
|
||||
"11": "Cache depth cannot larger than 31.",
|
||||
"12": "Cannot move while status is not 'moving'. Call 'readyMove' first.",
|
||||
"13": "Cannot compile $1 shader. Error info: $2",
|
||||
"14": "",
|
||||
"15": "",
|
||||
"16": "Cannot find log message for $1 code $2.",
|
||||
"17": "Cannot use shader program for shader element that does not belong to it.",
|
||||
"18": "Cannot delete shader program for shader element that does not belong to it.",
|
||||
"19": "Cannot create MotaRenderer instance for nonexistent canvas.",
|
||||
"20": "Cannot create render element for tag '$1', since there's no registration for it.",
|
||||
"21": "Incorrect render prop type is delivered. key: '$1', expected type: '$2', delivered type: '$3'",
|
||||
"22": "Incorrect props for custom tag. Please ensure you have delivered 'item' prop and other required props.",
|
||||
"23": "Cannot get reader when fetching '$1'.",
|
||||
"24": "Cannot decode source type of '$1', since there is no registered decoder for that type.",
|
||||
"25": "Unknown audio type. Header: '$1'",
|
||||
"26": "Uncaught error when fetching stream data from '$1'. Error info: $2.",
|
||||
"1101": "Shadow extension needs 'floor-hero' extension as dependency.",
|
||||
"1201": "Floor-damage extension needs 'floor-binder' extension as dependency.",
|
||||
"1301": "Portal extension need 'floor-binder' extension as dependency.",
|
||||
"1401": "Halo extension needs 'floor-binder' extension as dependency."
|
||||
},
|
||||
"warn": {
|
||||
"1": "Resource with type of 'none' is loaded.",
|
||||
"2": "Repeat load of resource '$1/$2'.",
|
||||
"3": "Unknown danmaku tag: $1",
|
||||
"4": "Ignored a mismatched ']' in danmaku.",
|
||||
"5": "Repeat post danmaku.",
|
||||
"6": "Registered special danmaku element: $1.",
|
||||
"7": "Unknown special danmaku element: '$1'.",
|
||||
"8": "Incomplete render data is put. None will be filled to the lacked data.",
|
||||
"9": "Data transfered is partially (or totally) out of range. Overflowed data will be ignored.",
|
||||
"10": "Cannot resolve big image of enemy '$1;.",
|
||||
"11": "Cannot resolve material $1. Material not exists.",
|
||||
"12": "Cannot mark buffable with a non-number status. Key: '$1'.",
|
||||
"13": "Cannot set buff of non-number status. Key: '$1'.",
|
||||
"14": "Cannot add status of non-number status. Key: '$1'.",
|
||||
"15": "Cannot get item of a non-item block on loc: $1,$2,$3.",
|
||||
"16": "Override repeated state key: '$1'.",
|
||||
"17": "Floor-damage extension needs 'floor-binder' extension as dependency.",
|
||||
"18": "Uncaught error in posting like info for danmaku. Danmaku id: $1.",
|
||||
"19": "Repeat light id: '$1'.",
|
||||
"20": "Cannot apply animation to camera operation that does not belong to it.",
|
||||
"21": "Cannot apply transition to camera operation that does not belong to it.",
|
||||
"22": "There is already an active camera for delivered render item. Consider using 'Camera.for' or diable the active camera to avoid some exceptions.",
|
||||
"23": "Render item with id of '$1' has already exists. Please avoid repeat id since it may cause issues when use 'getElementById'.",
|
||||
"24": "Uniform block can only be used in glsl version es 300.",
|
||||
"25": "Cannot activate weather since there's no weather with id of '$1'.",
|
||||
"26": "Cannot set attribute when only element number specified. Use 'pointer' or 'pointerI' instead.",
|
||||
"27": "Cannot vertex attribute integer point when specified as float. Use 'set' or 'pointer' instead.",
|
||||
"28": "Redefinition of shader $1: '$2'",
|
||||
"29": "Cannot define new texture since texture index is larger than max texture count.",
|
||||
"30": "Cannot use indices named $1 since no definition for it. Please define it in advance.",
|
||||
"31": "Cannot use indices since the indices instance is not belong to the program.",
|
||||
"32": "Sub-image exceeds texture dimensions, auto adjusting size.",
|
||||
"33": "Cannot modify MotaOffscreenCanvas2D that is freezed.",
|
||||
"34": "Repeated render tag registration: '$1'.",
|
||||
"35": "Cannot append child on plain render item, please ensure you have overrided 'appendChild' method in your own element.",
|
||||
"36": "Cannot remove child on plain render item, please ensure you have overrided 'removeChild' method in your own element.",
|
||||
"37": "Cannot execute 'requestSort' on plain render item, please ensure you have overrided 'requestSort' method in your own element.",
|
||||
"38": "Using plain text in jsx is strongly not recommended, since you can hardly modify its attributes. Consider using Text element instead.",
|
||||
"39": "Plain text is not supported outside Text element.",
|
||||
"40": "Cannot return canvas that is not provided by this pool.",
|
||||
"41": "Width of text content components must be positive. receive: $1",
|
||||
"42": "Repeated Textbox id: '$1'.",
|
||||
"43": "Cannot set icon of '$1', since it does not exists. Please ensure you have delivered correct icon id or number.",
|
||||
"44": "Unexpected end when loading stream audio, reason: '$1'",
|
||||
"45": "Audio route with id of '$1' has already existed. New route will override old route.",
|
||||
"46": "Cannot pipe new StreamReader object when stream is loading.",
|
||||
"47": "Audio stream decoder for audio type '$1' has already existed.",
|
||||
"48": "Sample rate in stream audio must be constant.",
|
||||
"49": "Repeated patch for '$1', key: '$2'.",
|
||||
"50": "Unknown audio extension name: '$1'",
|
||||
"51": "Cannot decode sound '$1', since audio file may not supported by 2.b.",
|
||||
"52": "Cannot play sound '$1', since there is no added data named it.",
|
||||
"53": "Cannot $1 audio route '$2', since there is not added route named it.",
|
||||
"54": "Missing start tag for '$1', index: $2.",
|
||||
"55": "Unchildable tag '$1' should follow with param.",
|
||||
"56": "Method '$1' has been deprecated. Consider using '$2' instead.",
|
||||
"57": "Repeated UI controller on item '$1', new controller will not work.",
|
||||
"58": "Fail to set ellipse round rect, since length of 'ellipse' property should only be 2, 4, 6 or 8. delivered: $1",
|
||||
"59": "Unknown icon '$1' in parsing text content.",
|
||||
"60": "Repeated Tip id: '$1'.",
|
||||
"61": "Unexpected recursive call of $1.update in render function. Please ensure you have to do this, if you do, ignore this warn.",
|
||||
"62": "Recursive fallback fonts in '$1'.",
|
||||
"63": "Uncaught promise error in waiting box component. Error reason: $1",
|
||||
"1001": "Item-detail extension needs 'floor-binder' and 'floor-damage' extension as dependency.",
|
||||
"1101": "Cannot add new effect to point effect instance, for there's no more reserve space for it. Please increase the max count of the instance."
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
import { debounce } from 'lodash-es';
|
||||
import logInfo from '../../data/logger.json';
|
||||
import logInfo from './logger.json';
|
||||
|
||||
export const enum LogLevel {
|
||||
/** 输出所有,包括日志 */
|
||||
@ -44,13 +44,14 @@ const hideTipText = debounce(() => {
|
||||
logTip.style.display = 'none';
|
||||
}, 5000);
|
||||
|
||||
const nums = new Set(['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']);
|
||||
const nums = new Set('1234567890');
|
||||
|
||||
const logError = logInfo.error as Record<number, string>;
|
||||
const logWarn = logInfo.warn as Record<number, string>;
|
||||
export interface ILoggerInfo {
|
||||
error: Record<number, string>;
|
||||
warn: Record<number, string>;
|
||||
}
|
||||
|
||||
export class Logger {
|
||||
level: LogLevel = LogLevel.LOG;
|
||||
enabled: boolean = true;
|
||||
|
||||
private catching: boolean = false;
|
||||
@ -58,9 +59,10 @@ export class Logger {
|
||||
|
||||
private catchStack: LoggerCatchInfo[][] = [];
|
||||
|
||||
constructor(logLevel: LogLevel) {
|
||||
this.level = logLevel;
|
||||
}
|
||||
constructor(
|
||||
public readonly level: LogLevel,
|
||||
public readonly info: ILoggerInfo
|
||||
) {}
|
||||
|
||||
private parseInfo(text: string, ...params: string[]) {
|
||||
let pointer = -1;
|
||||
@ -95,26 +97,18 @@ export class Logger {
|
||||
return str;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置该日志类的输出等级
|
||||
* @param level 要设置为的输出等级
|
||||
*/
|
||||
setLogLevel(level: LogLevel) {
|
||||
this.level = level;
|
||||
}
|
||||
|
||||
/**
|
||||
* 输出报错信息
|
||||
* @param code 错误代码,每个错误都应当使用唯一的错误代码
|
||||
* @param params 参数
|
||||
*/
|
||||
error(code: number, ...params: string[]) {
|
||||
const info = logError[code];
|
||||
const info = this.info.error[code];
|
||||
if (!info) {
|
||||
logger.error(16, 'error', code.toString());
|
||||
return;
|
||||
}
|
||||
const text = this.parseInfo(logError[code], ...params);
|
||||
const text = this.parseInfo(info[code], ...params);
|
||||
if (this.catching) {
|
||||
this.catchedInfo.push({
|
||||
level: LogLevel.ERROR,
|
||||
@ -139,12 +133,12 @@ export class Logger {
|
||||
* @param text 警告信息
|
||||
*/
|
||||
warn(code: number, ...params: string[]) {
|
||||
const info = logWarn[code];
|
||||
const info = this.info.warn[code];
|
||||
if (!info) {
|
||||
logger.error(16, 'warn', code.toString());
|
||||
return;
|
||||
}
|
||||
const text = this.parseInfo(logWarn[code], ...params);
|
||||
const text = this.parseInfo(info[code], ...params);
|
||||
if (this.catching) {
|
||||
this.catchedInfo.push({
|
||||
level: LogLevel.ERROR,
|
||||
@ -206,4 +200,4 @@ export class Logger {
|
||||
}
|
||||
}
|
||||
|
||||
export const logger = new Logger(LogLevel.LOG);
|
||||
export const logger = new Logger(LogLevel.LOG, logInfo);
|
6
packages/render-core/package.json
Normal file
6
packages/render-core/package.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"name": "@motajs/render-core",
|
||||
"dependencies": {
|
||||
"@motajs/common": "workspace:*"
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
import { EventEmitter } from 'eventemitter3';
|
||||
import { logger } from '../common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
|
||||
interface OffscreenCanvasEvent {
|
||||
/** 当被动触发resize时(例如core.domStyle.scale变化、窗口大小变化)时触发,使用size函数并不会触发 */
|
@ -1,4 +1,4 @@
|
||||
import { MotaOffscreenCanvas2D } from '../fx/canvas2d';
|
||||
import { MotaOffscreenCanvas2D } from './canvas2d';
|
||||
import { ActionType, EventProgress, ActionEventMap } from './event';
|
||||
import {
|
||||
ERenderItemEvent,
|
@ -1,9 +1,9 @@
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import { logger } from '../common/logger';
|
||||
import { MotaOffscreenCanvas2D } from '../fx/canvas2d';
|
||||
import { logger } from '@motajs/common';
|
||||
import { MotaOffscreenCanvas2D } from './canvas2d';
|
||||
import { ERenderItemEvent, RenderItem, RenderItemPosition } from './item';
|
||||
import { Transform } from './transform';
|
||||
import { isWebGL2Supported } from '../fx/webgl';
|
||||
import { isWebGL2Supported } from './utils';
|
||||
|
||||
export interface IGL2ProgramPrefix {
|
||||
readonly VERTEX: string;
|
@ -1,11 +1,7 @@
|
||||
export * from './preset';
|
||||
export * from './renderer';
|
||||
export * from './style';
|
||||
export * from './adapter';
|
||||
export * from './cache';
|
||||
export * from './camera';
|
||||
export * from './canvas2d';
|
||||
export * from './container';
|
||||
export * from './frame';
|
||||
export * from './event';
|
||||
export * from './gl2';
|
||||
export * from './item';
|
||||
export * from './render';
|
@ -1,9 +1,9 @@
|
||||
import { isNil } from 'lodash-es';
|
||||
import { EventEmitter } from 'eventemitter3';
|
||||
import { MotaOffscreenCanvas2D } from '../fx/canvas2d';
|
||||
import { MotaOffscreenCanvas2D } from './canvas2d';
|
||||
import { Ticker, TickerFn } from 'mutate-animate';
|
||||
import { ITransformUpdatable, Transform } from './transform';
|
||||
import { logger } from '../common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
import { ElementNamespace, ComponentInternalInstance } from 'vue';
|
||||
import { transformCanvas } from './utils';
|
||||
import {
|
@ -1,5 +1,5 @@
|
||||
import { logger } from '../common/logger';
|
||||
import { MotaOffscreenCanvas2D } from '../fx/canvas2d';
|
||||
import { logger } from '@motajs/common';
|
||||
import { MotaOffscreenCanvas2D } from './canvas2d';
|
||||
import { Container } from './container';
|
||||
import {
|
||||
ActionType,
|
@ -1,4 +1,4 @@
|
||||
import { MotaOffscreenCanvas2D } from '../fx/canvas2d';
|
||||
import { MotaOffscreenCanvas2D } from './canvas2d';
|
||||
import { EGL2Event, GL2, GL2Program, IGL2ProgramPrefix } from './gl2';
|
||||
|
||||
const SHADER_PREFIX: IGL2ProgramPrefix = {
|
@ -4,7 +4,7 @@ import {
|
||||
RenderItem,
|
||||
RenderItemPosition
|
||||
} from './item';
|
||||
import { MotaOffscreenCanvas2D } from '../fx/canvas2d';
|
||||
import { MotaOffscreenCanvas2D } from './canvas2d';
|
||||
import { Transform } from './transform';
|
||||
|
||||
export interface ESpriteEvent extends ERenderItemEvent {}
|
@ -1,9 +1,9 @@
|
||||
import { TimingFn } from 'mutate-animate';
|
||||
import { RenderAdapter } from './adapter';
|
||||
import { FloorViewport } from './preset/viewport';
|
||||
// import { RenderAdapter } from './adapter';
|
||||
// import { FloorViewport } from './preset/viewport';
|
||||
import { JSX } from 'vue/jsx-runtime';
|
||||
import { DefineComponent, DefineSetupFnComponent } from 'vue';
|
||||
import { MotaOffscreenCanvas2D } from '../fx/canvas2d';
|
||||
import { MotaOffscreenCanvas2D } from './canvas2d';
|
||||
import { Transform } from './transform';
|
||||
|
||||
export type Props<
|
||||
@ -31,16 +31,22 @@ export type ElementLocator = [
|
||||
export type ElementAnchor = [x: number, y: number];
|
||||
export type ElementScale = [x: number, y: number];
|
||||
|
||||
export function disableViewport() {
|
||||
const adapter = RenderAdapter.get<FloorViewport>('viewport');
|
||||
if (!adapter) return;
|
||||
adapter.sync('disable');
|
||||
const { gl, gl2 } = checkSupport();
|
||||
|
||||
function checkSupport() {
|
||||
const canvas = document.createElement('canvas');
|
||||
const canvas2 = document.createElement('canvas');
|
||||
const gl = canvas.getContext('webgl');
|
||||
const gl2 = canvas2.getContext('webgl2');
|
||||
return { gl: !!gl, gl2: !!gl2 };
|
||||
}
|
||||
|
||||
export function enableViewport() {
|
||||
const adapter = RenderAdapter.get<FloorViewport>('viewport');
|
||||
if (!adapter) return;
|
||||
adapter.sync('enable');
|
||||
export function isWebGLSupported() {
|
||||
return gl;
|
||||
}
|
||||
|
||||
export function isWebGL2Supported() {
|
||||
return gl2;
|
||||
}
|
||||
|
||||
/**
|
8
packages/render-elements/package.json
Normal file
8
packages/render-elements/package.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "@motajs/render-elements",
|
||||
"dependencies": {
|
||||
"@motajs/common": "workspace:*",
|
||||
"@motajs/render-core": "workspace:*",
|
||||
"@motajs/render-style": "workspace:*"
|
||||
}
|
||||
}
|
@ -1,10 +1,13 @@
|
||||
import { RenderAdapter } from '../adapter';
|
||||
import {
|
||||
RenderAdapter,
|
||||
transformCanvas,
|
||||
ERenderItemEvent,
|
||||
RenderItem,
|
||||
Transform,
|
||||
MotaOffscreenCanvas2D
|
||||
} from '@motajs/render-core';
|
||||
import { HeroRenderer } from './hero';
|
||||
import { ILayerGroupRenderExtends, LayerGroup } from './layer';
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { ERenderItemEvent, RenderItem } from '../item';
|
||||
import { Transform } from '../transform';
|
||||
import { transformCanvas } from '../utils';
|
||||
|
||||
export class LayerGroupAnimate implements ILayerGroupRenderExtends {
|
||||
static animateList: Set<LayerGroupAnimate> = new Set();
|
@ -1,9 +1,9 @@
|
||||
import { EventEmitter } from '@/core/common/eventEmitter';
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { EventEmitter } from 'eventemitter3';
|
||||
import { logger } from '@motajs/common';
|
||||
import { MotaOffscreenCanvas2D } from '@motajs/render-core';
|
||||
|
||||
interface BlockCacherEvent {
|
||||
split: () => void;
|
||||
split: [];
|
||||
}
|
||||
|
||||
interface BlockData {
|
||||
@ -303,7 +303,10 @@ export interface ICanvasCacheItem extends IBlockCacheable {
|
||||
}
|
||||
|
||||
export class CanvasCacheItem implements ICanvasCacheItem {
|
||||
constructor(public canvas: MotaOffscreenCanvas2D, public symbol: number) {}
|
||||
constructor(
|
||||
public canvas: MotaOffscreenCanvas2D,
|
||||
public symbol: number
|
||||
) {}
|
||||
|
||||
destroy(): void {
|
||||
this.canvas.delete();
|
@ -1,7 +1,6 @@
|
||||
import { EventEmitter } from '../common/eventEmitter';
|
||||
import { logger } from '../common/logger';
|
||||
import { MotaOffscreenCanvas2D } from '../fx/canvas2d';
|
||||
import { SizedCanvasImageSource } from './preset/misc';
|
||||
import { logger } from '@motajs/common';
|
||||
import { MotaOffscreenCanvas2D } from '@motajs/render-core';
|
||||
import { SizedCanvasImageSource } from './types';
|
||||
|
||||
// 经过测试(https://www.measurethat.net/Benchmarks/Show/30741/1/drawimage-img-vs-canvas-vs-bitmap-cropping-fix-loading)
|
||||
// 得出结论,ImageBitmap和Canvas的绘制性能不如Image,于是直接画Image就行,所以缓存基本上就是存Image
|
||||
@ -62,9 +61,7 @@ export interface AutotileRenderable extends RenderableDataBase {
|
||||
bigImage: false;
|
||||
}
|
||||
|
||||
interface TextureCacheEvent {}
|
||||
|
||||
class TextureCache extends EventEmitter<TextureCacheEvent> {
|
||||
class TextureCache {
|
||||
tileset!: Record<string, HTMLImageElement>;
|
||||
material: Record<ImageMapKeys, HTMLImageElement>;
|
||||
autotile!: AutotileCaches;
|
||||
@ -92,7 +89,6 @@ class TextureCache extends EventEmitter<TextureCacheEvent> {
|
||||
characterTurn2: Dir2[] = ['leftup', 'rightup', 'rightdown', 'leftdown'];
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
this.material = imageMap as Record<ImageMapKeys, HTMLImageElement>;
|
||||
|
||||
Mota.require('var', 'loading').once('loaded', () => {
|
@ -1,7 +1,6 @@
|
||||
import { Animation, TimingFn, Transition } from 'mutate-animate';
|
||||
import { RenderItem } from './item';
|
||||
import { logger } from '../common/logger';
|
||||
import { Transform } from './transform';
|
||||
import { RenderItem, Transform } from '@motajs/render-core';
|
||||
import { logger } from '@motajs/common';
|
||||
import EventEmitter from 'eventemitter3';
|
||||
|
||||
export interface ICameraTranslate {
|
@ -1,4 +1,13 @@
|
||||
import { logger } from '@/core/common/logger';
|
||||
import {
|
||||
ERenderItemEvent,
|
||||
RenderItem,
|
||||
MotaOffscreenCanvas2D,
|
||||
Transform,
|
||||
transformCanvas
|
||||
} from '@motajs/render-core';
|
||||
import { logger } from '@motajs/common';
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import { isNil } from 'lodash-es';
|
||||
import { LayerGroupFloorBinder } from './floor';
|
||||
import {
|
||||
calNeedRenderOf,
|
||||
@ -7,21 +16,29 @@ import {
|
||||
LayerGroup
|
||||
} from './layer';
|
||||
import { BlockCacher, CanvasCacheItem, ICanvasCacheItem } from './block';
|
||||
// todo: 改成接口形式
|
||||
import type {
|
||||
DamageEnemy,
|
||||
EnemyCollection,
|
||||
MapDamage
|
||||
} from '@/game/enemy/damage';
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { isNil } from 'lodash-es';
|
||||
import { getDamageColor } from '@/plugin/utils';
|
||||
import { ERenderItemEvent, RenderItem } from '../item';
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import { Transform } from '../transform';
|
||||
import { transformCanvas } from '../utils';
|
||||
|
||||
const ensureFloorDamage = Mota.require('fn', 'ensureFloorDamage');
|
||||
|
||||
/**
|
||||
* 根据伤害大小获取颜色
|
||||
* @param damage 伤害大小
|
||||
*/
|
||||
export function getDamageColor(damage: number): string {
|
||||
if (typeof damage !== 'number') return '#f00';
|
||||
if (damage === 0) return '#2f2';
|
||||
if (damage < 0) return '#7f7';
|
||||
if (damage < core.status.hero.hp / 3) return '#fff';
|
||||
if (damage < (core.status.hero.hp * 2) / 3) return '#ff4';
|
||||
if (damage < core.status.hero.hp) return '#f93';
|
||||
return '#f22';
|
||||
}
|
||||
|
||||
interface EFloorDamageEvent {
|
||||
update: [floor: FloorIds];
|
||||
}
|
@ -7,9 +7,9 @@ import {
|
||||
LayerGroup,
|
||||
LayerMovingRenderable
|
||||
} from './layer';
|
||||
import { texture } from '../cache';
|
||||
import { texture } from './cache';
|
||||
import { sleep } from 'mutate-animate';
|
||||
import { RenderAdapter } from '../adapter';
|
||||
import { RenderAdapter } from '@motajs/render-core';
|
||||
|
||||
const hook = Mota.require('var', 'hook');
|
||||
|
@ -1,5 +1,5 @@
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import { RenderItem } from './item';
|
||||
import { RenderItem } from '@motajs/render-core';
|
||||
|
||||
export interface IAnimateFrame {
|
||||
updateFrameAnimate(frame: number, time: number): void;
|
@ -1,8 +1,11 @@
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { ERenderItemEvent, RenderItem } from '../item';
|
||||
import { Transform } from '../transform';
|
||||
import {
|
||||
Transform,
|
||||
ERenderItemEvent,
|
||||
RenderItem,
|
||||
MotaOffscreenCanvas2D
|
||||
} from '@motajs/render-core';
|
||||
import { logger } from '@motajs/common';
|
||||
import { clamp, isNil } from 'lodash-es';
|
||||
import { logger } from '@/core/common/logger';
|
||||
|
||||
export type CircleParams = [
|
||||
cx?: number,
|
@ -1,9 +1,9 @@
|
||||
import { RenderAdapter } from '@motajs/render-core';
|
||||
import { logger } from '@motajs/common';
|
||||
import { ILayerRenderExtends, Layer, LayerMovingRenderable } from './layer';
|
||||
import { SizedCanvasImageSource } from './misc';
|
||||
import { RenderAdapter } from '../adapter';
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { SizedCanvasImageSource } from './types';
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import { texture } from '../cache';
|
||||
import { texture } from './cache';
|
||||
import { TimingFn } from 'mutate-animate';
|
||||
import { isNil } from 'lodash-es';
|
||||
|
@ -1,9 +1,14 @@
|
||||
export * from './animate';
|
||||
export * from './block';
|
||||
export * from './cache';
|
||||
export * from './camera';
|
||||
export * from './damage';
|
||||
export * from './floor';
|
||||
export * from './frame';
|
||||
export * from './graphics';
|
||||
export * from './hero';
|
||||
export * from './layer';
|
||||
export * from './misc';
|
||||
export * from './types';
|
||||
export * from './utils';
|
||||
export * from './viewport';
|
||||
export * from './graphics';
|
@ -1,15 +1,18 @@
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { Container, EContainerEvent } from '../container';
|
||||
import { Sprite } from '../sprite';
|
||||
import {
|
||||
Container,
|
||||
EContainerEvent,
|
||||
MotaOffscreenCanvas2D,
|
||||
Sprite,
|
||||
RenderItem,
|
||||
Transform,
|
||||
RenderAdapter
|
||||
} from '@motajs/render-core';
|
||||
import { logger } from '@motajs/common';
|
||||
import { TimingFn } from 'mutate-animate';
|
||||
import { RenderItem } from '../item';
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { RenderableData, texture } from '../cache';
|
||||
import { RenderableData, texture } from './cache';
|
||||
import { BlockCacher, CanvasCacheItem, ICanvasCacheItem } from './block';
|
||||
import { Transform } from '../transform';
|
||||
import { LayerFloorBinder, LayerGroupFloorBinder } from './floor';
|
||||
import { RenderAdapter } from '../adapter';
|
||||
import { IAnimateFrame, renderEmits } from '../frame';
|
||||
import { IAnimateFrame, renderEmits } from './frame';
|
||||
|
||||
export interface ILayerGroupRenderExtends {
|
||||
/** 拓展的唯一标识符 */
|
@ -1,12 +1,16 @@
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { ERenderItemEvent, RenderItem, RenderItemPosition } from '../item';
|
||||
import { Transform } from '../transform';
|
||||
import { AutotileRenderable, RenderableData } from '../cache';
|
||||
import { texture } from '../cache';
|
||||
import {
|
||||
ERenderItemEvent,
|
||||
RenderItem,
|
||||
RenderItemPosition,
|
||||
Transform,
|
||||
MotaOffscreenCanvas2D
|
||||
} from '@motajs/render-core';
|
||||
import { Font } from '@motajs/render-style';
|
||||
import { logger } from '@motajs/common';
|
||||
import { isNil } from 'lodash-es';
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { IAnimateFrame, renderEmits } from '../frame';
|
||||
import { Font } from '../style/font';
|
||||
import { IAnimateFrame, renderEmits } from './frame';
|
||||
import { AutotileRenderable, RenderableData, texture } from './cache';
|
||||
import { SizedCanvasImageSource } from './types';
|
||||
|
||||
/** 文字的安全填充,会填充在文字的上侧和下侧,防止削顶和削底 */
|
||||
const SAFE_PAD = 1;
|
||||
@ -158,11 +162,6 @@ export class Text extends RenderItem<ETextEvent> {
|
||||
}
|
||||
}
|
||||
|
||||
export type SizedCanvasImageSource = Exclude<
|
||||
CanvasImageSource,
|
||||
VideoFrame | SVGElement
|
||||
>;
|
||||
|
||||
export interface EImageEvent extends ERenderItemEvent {}
|
||||
|
||||
export class Image extends RenderItem<EImageEvent> {
|
4
packages/render-elements/src/types.ts
Normal file
4
packages/render-elements/src/types.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export type SizedCanvasImageSource = Exclude<
|
||||
CanvasImageSource,
|
||||
VideoFrame | SVGElement
|
||||
>;
|
14
packages/render-elements/src/utils.ts
Normal file
14
packages/render-elements/src/utils.ts
Normal file
@ -0,0 +1,14 @@
|
||||
import { RenderAdapter } from '@motajs/render-core';
|
||||
import { FloorViewport } from './viewport';
|
||||
|
||||
export function disableViewport() {
|
||||
const adapter = RenderAdapter.get<FloorViewport>('viewport');
|
||||
if (!adapter) return;
|
||||
adapter.sync('disable');
|
||||
}
|
||||
|
||||
export function enableViewport() {
|
||||
const adapter = RenderAdapter.get<FloorViewport>('viewport');
|
||||
if (!adapter) return;
|
||||
adapter.sync('enable');
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
import { RenderAdapter } from '@motajs/render-core';
|
||||
import { HeroRenderer } from './hero';
|
||||
import { ILayerGroupRenderExtends, LayerGroup } from './layer';
|
||||
import { LayerGroupFloorBinder } from './floor';
|
||||
import { hyper, TimingFn } from 'mutate-animate';
|
||||
import { RenderAdapter } from '../adapter';
|
||||
|
||||
export class FloorViewport implements ILayerGroupRenderExtends {
|
||||
id: string = 'viewport';
|
6
packages/render-style/package.json
Normal file
6
packages/render-style/package.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"name": "@motajs/render-style",
|
||||
"dependencies": {
|
||||
"@motajs/common": "workspace:*"
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
|
||||
export interface IFontConfig {
|
||||
/** 字体类型 */
|
9
packages/render-vue/package.json
Normal file
9
packages/render-vue/package.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "@motajs/render-vue",
|
||||
"dependencies": {
|
||||
"@motajs/common": "workspace:*",
|
||||
"@motajs/render-core": "workspace:*",
|
||||
"@motajs/render-elements": "workspace:*",
|
||||
"@motajs/render-style": "workspace:*"
|
||||
}
|
||||
}
|
@ -32,20 +32,24 @@ import {
|
||||
TextProps,
|
||||
WinskinProps
|
||||
} from './props';
|
||||
import { ERenderItemEvent, RenderItem } from '../item';
|
||||
import { ESpriteEvent } from '../sprite';
|
||||
import { EContainerEvent } from '../container';
|
||||
import {
|
||||
ERenderItemEvent,
|
||||
RenderItem,
|
||||
ESpriteEvent,
|
||||
EContainerEvent,
|
||||
EShaderEvent
|
||||
} from '@motajs/render-core';
|
||||
import {
|
||||
EIconEvent,
|
||||
EImageEvent,
|
||||
ETextEvent,
|
||||
EWinskinEvent
|
||||
} from '../preset/misc';
|
||||
import { ELayerEvent, ELayerGroupEvent } from '../preset/layer';
|
||||
import { EAnimateEvent } from '../preset/animate';
|
||||
import { EDamageEvent } from '../preset/damage';
|
||||
import { EShaderEvent } from '../shader';
|
||||
import { EGraphicItemEvent } from '../preset/graphics';
|
||||
EWinskinEvent,
|
||||
ELayerEvent,
|
||||
ELayerGroupEvent,
|
||||
EAnimateEvent,
|
||||
EDamageEvent,
|
||||
EGraphicItemEvent
|
||||
} from '@motajs/render-elements';
|
||||
|
||||
export type WrapEventEmitterEvents<T extends EventEmitter.ValidEventTypes> =
|
||||
T extends string | symbol
|
14
packages/render-vue/src/index.ts
Normal file
14
packages/render-vue/src/index.ts
Normal file
@ -0,0 +1,14 @@
|
||||
import { ERenderItemEvent } from '@motajs/render-core';
|
||||
import { TagDefine } from './elements';
|
||||
import { BaseProps } from './props';
|
||||
|
||||
export type DefaultProps<
|
||||
P extends BaseProps = BaseProps,
|
||||
E extends ERenderItemEvent = ERenderItemEvent
|
||||
> = TagDefine<P, E>;
|
||||
|
||||
export * from './elements';
|
||||
export * from './map';
|
||||
export * from './props';
|
||||
export * from './renderer';
|
||||
export * from './use';
|
@ -1,20 +1,26 @@
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { ERenderItemEvent, RenderItem, RenderItemPosition } from '../item';
|
||||
import { ElementNamespace, VNodeProps } from 'vue';
|
||||
import { Container, ContainerCustom } from '../container';
|
||||
import { MotaRenderer } from '../render';
|
||||
import { Sprite } from '../sprite';
|
||||
import { logger } from '@motajs/common';
|
||||
import {
|
||||
ERenderItemEvent,
|
||||
RenderItem,
|
||||
RenderItemPosition,
|
||||
Container,
|
||||
ContainerCustom,
|
||||
MotaRenderer,
|
||||
Sprite,
|
||||
Shader
|
||||
} from '@motajs/render-core';
|
||||
import {
|
||||
Comment,
|
||||
ETextEvent,
|
||||
Icon,
|
||||
Image,
|
||||
Text,
|
||||
Winskin
|
||||
} from '../preset/misc';
|
||||
import { Shader } from '../shader';
|
||||
import { Animate, Damage, EDamageEvent, Layer, LayerGroup } from '../preset';
|
||||
import {
|
||||
Winskin,
|
||||
Animate,
|
||||
Damage,
|
||||
EDamageEvent,
|
||||
Layer,
|
||||
LayerGroup,
|
||||
BezierCurve,
|
||||
Circle,
|
||||
Ellipse,
|
||||
@ -23,7 +29,8 @@ import {
|
||||
QuadraticCurve,
|
||||
Rect,
|
||||
RectR
|
||||
} from '../preset/graphics';
|
||||
} from '@motajs/render-elements';
|
||||
import { ElementNamespace, VNodeProps } from 'vue';
|
||||
|
||||
type OnItemCreate<
|
||||
E extends ERenderItemEvent = ERenderItemEvent,
|
@ -1,12 +1,17 @@
|
||||
import { RenderFunction, RenderItem, RenderItemPosition } from '../item';
|
||||
import { Transform } from '../transform';
|
||||
import {
|
||||
RenderFunction,
|
||||
RenderItem,
|
||||
RenderItemPosition,
|
||||
Transform,
|
||||
ElementAnchor,
|
||||
ElementLocator,
|
||||
ElementScale,
|
||||
CustomContainerRenderFn
|
||||
} from '@motajs/render-core';
|
||||
import {
|
||||
FloorLayer,
|
||||
ILayerGroupRenderExtends,
|
||||
ILayerRenderExtends
|
||||
} from '../preset/layer';
|
||||
import type { EnemyCollection } from '@/game/enemy/damage';
|
||||
import {
|
||||
ILayerRenderExtends,
|
||||
BezierParams,
|
||||
CircleParams,
|
||||
EllipseParams,
|
||||
@ -15,10 +20,10 @@ import {
|
||||
QuadParams,
|
||||
RectRCircleParams,
|
||||
RectREllipseParams
|
||||
} from '../preset/graphics';
|
||||
import { ElementAnchor, ElementLocator, ElementScale } from '../utils';
|
||||
import { CustomContainerRenderFn } from '../container';
|
||||
import { Font } from '../style/font';
|
||||
} from '@motajs/render-elements';
|
||||
import { Font } from '@motajs/render-style';
|
||||
// todo: 改成接口
|
||||
import type { EnemyCollection } from '@/game/enemy/damage';
|
||||
|
||||
export interface CustomProps {
|
||||
_item: (props: BaseProps) => RenderItem;
|
@ -1,20 +1,13 @@
|
||||
import { logger } from '@motajs/common';
|
||||
import { ERenderItemEvent, RenderItem } from '@motajs/render-core';
|
||||
import { ETextEvent, Text, Comment } from '@motajs/render-elements';
|
||||
import {
|
||||
ComponentInternalInstance,
|
||||
createRenderer,
|
||||
ElementNamespace,
|
||||
VNodeProps
|
||||
} from 'vue';
|
||||
import { ERenderItemEvent, RenderItem } from '../item';
|
||||
import { tagMap } from './map';
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { Comment, ETextEvent, Text } from '../preset/misc';
|
||||
import { BaseProps } from './props';
|
||||
import { TagDefine } from './elements';
|
||||
|
||||
export type DefaultProps<
|
||||
P extends BaseProps = BaseProps,
|
||||
E extends ERenderItemEvent = ERenderItemEvent
|
||||
> = TagDefine<P, E>;
|
||||
|
||||
export const { createApp, render } = createRenderer<RenderItem, RenderItem>({
|
||||
patchProp: function (
|
||||
@ -103,8 +96,3 @@ export const { createApp, render } = createRenderer<RenderItem, RenderItem>({
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
export * from './elements';
|
||||
export * from './map';
|
||||
export * from './props';
|
||||
export * from './use';
|
@ -1,7 +1,8 @@
|
||||
import { gameKey, Hotkey } from '@/core/main/custom/hotkey';
|
||||
import { Animation, Ticker, Transition } from 'mutate-animate';
|
||||
import { ERenderItemEvent, RenderItem } from '@motajs/render-core';
|
||||
// todo: 改为 monorepo
|
||||
import { gameKey, Hotkey } from '@/core/main/custom/hotkey';
|
||||
import { onMounted, onUnmounted } from 'vue';
|
||||
import { ERenderItemEvent, RenderItem } from '../item';
|
||||
import EventEmitter from 'eventemitter3';
|
||||
|
||||
const ticker = new Ticker();
|
9
packages/render/package.json
Normal file
9
packages/render/package.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "@motajs/render",
|
||||
"dependencies": {
|
||||
"@motajs/render-core": "workspace:*",
|
||||
"@motajs/render-elements": "workspace:*",
|
||||
"@motajs/render-style": "workspace:*",
|
||||
"@motajs/render-vue": "workspace:*"
|
||||
}
|
||||
}
|
4
packages/render/src/index.ts
Normal file
4
packages/render/src/index.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export * from '@motajs/render-core';
|
||||
export * from '@motajs/render-elements';
|
||||
export * from '@motajs/render-style';
|
||||
export * from '@motajs/render-vue';
|
155
pnpm-lock.yaml
155
pnpm-lock.yaml
@ -147,6 +147,9 @@ importers:
|
||||
fs-extra:
|
||||
specifier: ^10.1.0
|
||||
version: 10.1.0
|
||||
glob:
|
||||
specifier: ^11.0.1
|
||||
version: 11.0.1
|
||||
globals:
|
||||
specifier: ^15.14.0
|
||||
version: 15.14.0
|
||||
@ -190,6 +193,14 @@ importers:
|
||||
specifier: ^8.18.0
|
||||
version: 8.18.0
|
||||
|
||||
packages/common: {}
|
||||
|
||||
packages/render-core:
|
||||
dependencies:
|
||||
'@motajs/common':
|
||||
specifier: workspace:*
|
||||
version: link:../common
|
||||
|
||||
packages:
|
||||
|
||||
'@algolia/autocomplete-core@1.17.7':
|
||||
@ -1689,6 +1700,10 @@ packages:
|
||||
'@iconify/types@2.0.0':
|
||||
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
|
||||
|
||||
'@isaacs/cliui@8.0.2':
|
||||
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
'@jridgewell/gen-mapping@0.3.5':
|
||||
resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
@ -2383,6 +2398,10 @@ packages:
|
||||
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
ansi-regex@6.1.0:
|
||||
resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
ansi-styles@3.2.1:
|
||||
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
|
||||
engines: {node: '>=4'}
|
||||
@ -2391,6 +2410,10 @@ packages:
|
||||
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
ansi-styles@6.2.1:
|
||||
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
ant-design-vue@3.2.20:
|
||||
resolution: {integrity: sha512-YWpMfGaGoRastIXEYfCoJiaRiDHk4chqtYhlKQM5GqPt6NfvrM1Vg2e60yHtjxlZjed91wCMm0rAmyUr7Hwzdg==}
|
||||
engines: {node: '>=12.22.0'}
|
||||
@ -2811,6 +2834,9 @@ packages:
|
||||
duplexify@3.7.1:
|
||||
resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==}
|
||||
|
||||
eastasianwidth@0.2.0:
|
||||
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
|
||||
|
||||
electron-to-chromium@1.5.11:
|
||||
resolution: {integrity: sha512-R1CccCDYqndR25CaXFd6hp/u9RaaMcftMkphmvuepXr5b1vfLkRml6aWVeBhXJ7rbevHkKEMJtz8XqPf7ffmew==}
|
||||
|
||||
@ -2820,6 +2846,9 @@ packages:
|
||||
emoji-regex@8.0.0:
|
||||
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
|
||||
|
||||
emoji-regex@9.2.2:
|
||||
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
|
||||
|
||||
encoding@0.1.13:
|
||||
resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==}
|
||||
|
||||
@ -3048,6 +3077,10 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
hasBin: true
|
||||
|
||||
foreground-child@3.3.1:
|
||||
resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
form-data@4.0.0:
|
||||
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
|
||||
engines: {node: '>= 6'}
|
||||
@ -3129,6 +3162,11 @@ packages:
|
||||
resolution: {integrity: sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==}
|
||||
engines: {node: '>= 0.10'}
|
||||
|
||||
glob@11.0.1:
|
||||
resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==}
|
||||
engines: {node: 20 || >=22}
|
||||
hasBin: true
|
||||
|
||||
glob@7.2.3:
|
||||
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
|
||||
deprecated: Glob versions prior to v9 are no longer supported
|
||||
@ -3395,6 +3433,10 @@ packages:
|
||||
isexe@2.0.0:
|
||||
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
||||
|
||||
jackspeak@4.1.0:
|
||||
resolution: {integrity: sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==}
|
||||
engines: {node: 20 || >=22}
|
||||
|
||||
jju@1.4.0:
|
||||
resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
|
||||
|
||||
@ -3507,6 +3549,10 @@ packages:
|
||||
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
||||
hasBin: true
|
||||
|
||||
lru-cache@11.0.2:
|
||||
resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==}
|
||||
engines: {node: 20 || >=22}
|
||||
|
||||
lru-cache@5.1.1:
|
||||
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
|
||||
|
||||
@ -3598,6 +3644,10 @@ packages:
|
||||
resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
|
||||
engines: {node: '>=4'}
|
||||
|
||||
minimatch@10.0.1:
|
||||
resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==}
|
||||
engines: {node: 20 || >=22}
|
||||
|
||||
minimatch@3.0.8:
|
||||
resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==}
|
||||
|
||||
@ -3647,6 +3697,10 @@ packages:
|
||||
resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
minipass@7.1.2:
|
||||
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
|
||||
engines: {node: '>=16 || 14 >=14.17'}
|
||||
|
||||
minisearch@7.1.1:
|
||||
resolution: {integrity: sha512-b3YZEYCEH4EdCAtYP7OlDyx7FdPwNzuNwLQ34SfJpM9dlbBZzeXndGavTrC+VCiRWomL21SWfMc6SCKO/U2ZNw==}
|
||||
|
||||
@ -3789,6 +3843,9 @@ packages:
|
||||
resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
package-json-from-dist@1.0.1:
|
||||
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
|
||||
|
||||
pako@1.0.11:
|
||||
resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
|
||||
|
||||
@ -3828,6 +3885,10 @@ packages:
|
||||
path-parse@1.0.7:
|
||||
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
|
||||
|
||||
path-scurry@2.0.0:
|
||||
resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==}
|
||||
engines: {node: 20 || >=22}
|
||||
|
||||
path-type@4.0.0:
|
||||
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
|
||||
engines: {node: '>=8'}
|
||||
@ -4289,6 +4350,10 @@ packages:
|
||||
signal-exit@3.0.7:
|
||||
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
|
||||
|
||||
signal-exit@4.1.0:
|
||||
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
simple-yenc@1.0.4:
|
||||
resolution: {integrity: sha512-5gvxpSd79e9a3V4QDYUqnqxeD4HGlhCakVpb6gMnDD7lexJggSBJRBO5h52y/iJrdXRilX9UCuDaIJhSWm5OWw==}
|
||||
|
||||
@ -4373,6 +4438,10 @@ packages:
|
||||
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
string-width@5.1.2:
|
||||
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
string_decoder@1.1.1:
|
||||
resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
|
||||
|
||||
@ -4386,6 +4455,10 @@ packages:
|
||||
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
strip-ansi@7.1.0:
|
||||
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
strip-indent@4.0.0:
|
||||
resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==}
|
||||
engines: {node: '>=12'}
|
||||
@ -4797,6 +4870,14 @@ packages:
|
||||
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
wrap-ansi@7.0.0:
|
||||
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
wrap-ansi@8.1.0:
|
||||
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
wrappy@1.0.2:
|
||||
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
||||
|
||||
@ -6387,6 +6468,15 @@ snapshots:
|
||||
|
||||
'@iconify/types@2.0.0': {}
|
||||
|
||||
'@isaacs/cliui@8.0.2':
|
||||
dependencies:
|
||||
string-width: 5.1.2
|
||||
string-width-cjs: string-width@4.2.3
|
||||
strip-ansi: 7.1.0
|
||||
strip-ansi-cjs: strip-ansi@6.0.1
|
||||
wrap-ansi: 8.1.0
|
||||
wrap-ansi-cjs: wrap-ansi@7.0.0
|
||||
|
||||
'@jridgewell/gen-mapping@0.3.5':
|
||||
dependencies:
|
||||
'@jridgewell/set-array': 1.2.1
|
||||
@ -7179,6 +7269,8 @@ snapshots:
|
||||
|
||||
ansi-regex@5.0.1: {}
|
||||
|
||||
ansi-regex@6.1.0: {}
|
||||
|
||||
ansi-styles@3.2.1:
|
||||
dependencies:
|
||||
color-convert: 1.9.3
|
||||
@ -7187,6 +7279,8 @@ snapshots:
|
||||
dependencies:
|
||||
color-convert: 2.0.1
|
||||
|
||||
ansi-styles@6.2.1: {}
|
||||
|
||||
ant-design-vue@3.2.20(vue@3.5.13(typescript@5.5.4)):
|
||||
dependencies:
|
||||
'@ant-design/colors': 6.0.0
|
||||
@ -7631,12 +7725,16 @@ snapshots:
|
||||
readable-stream: 2.3.8
|
||||
stream-shift: 1.0.3
|
||||
|
||||
eastasianwidth@0.2.0: {}
|
||||
|
||||
electron-to-chromium@1.5.11: {}
|
||||
|
||||
emoji-regex-xs@1.0.0: {}
|
||||
|
||||
emoji-regex@8.0.0: {}
|
||||
|
||||
emoji-regex@9.2.2: {}
|
||||
|
||||
encoding@0.1.13:
|
||||
dependencies:
|
||||
iconv-lite: 0.6.3
|
||||
@ -7958,6 +8056,11 @@ snapshots:
|
||||
- bluebird
|
||||
- supports-color
|
||||
|
||||
foreground-child@3.3.1:
|
||||
dependencies:
|
||||
cross-spawn: 7.0.6
|
||||
signal-exit: 4.1.0
|
||||
|
||||
form-data@4.0.0:
|
||||
dependencies:
|
||||
asynckit: 0.4.0
|
||||
@ -8055,6 +8158,15 @@ snapshots:
|
||||
to-absolute-glob: 2.0.2
|
||||
unique-stream: 2.3.1
|
||||
|
||||
glob@11.0.1:
|
||||
dependencies:
|
||||
foreground-child: 3.3.1
|
||||
jackspeak: 4.1.0
|
||||
minimatch: 10.0.1
|
||||
minipass: 7.1.2
|
||||
package-json-from-dist: 1.0.1
|
||||
path-scurry: 2.0.0
|
||||
|
||||
glob@7.2.3:
|
||||
dependencies:
|
||||
fs.realpath: 1.0.0
|
||||
@ -8289,6 +8401,10 @@ snapshots:
|
||||
|
||||
isexe@2.0.0: {}
|
||||
|
||||
jackspeak@4.1.0:
|
||||
dependencies:
|
||||
'@isaacs/cliui': 8.0.2
|
||||
|
||||
jju@1.4.0: {}
|
||||
|
||||
js-tokens@4.0.0: {}
|
||||
@ -8396,6 +8512,8 @@ snapshots:
|
||||
dependencies:
|
||||
js-tokens: 4.0.0
|
||||
|
||||
lru-cache@11.0.2: {}
|
||||
|
||||
lru-cache@5.1.1:
|
||||
dependencies:
|
||||
yallist: 3.1.1
|
||||
@ -8515,6 +8633,10 @@ snapshots:
|
||||
|
||||
min-indent@1.0.1: {}
|
||||
|
||||
minimatch@10.0.1:
|
||||
dependencies:
|
||||
brace-expansion: 2.0.1
|
||||
|
||||
minimatch@3.0.8:
|
||||
dependencies:
|
||||
brace-expansion: 1.1.11
|
||||
@ -8569,6 +8691,8 @@ snapshots:
|
||||
|
||||
minipass@5.0.0: {}
|
||||
|
||||
minipass@7.1.2: {}
|
||||
|
||||
minisearch@7.1.1: {}
|
||||
|
||||
minizlib@2.1.2:
|
||||
@ -8724,6 +8848,8 @@ snapshots:
|
||||
dependencies:
|
||||
aggregate-error: 3.1.0
|
||||
|
||||
package-json-from-dist@1.0.1: {}
|
||||
|
||||
pako@1.0.11: {}
|
||||
|
||||
pako@2.1.0: {}
|
||||
@ -8753,6 +8879,11 @@ snapshots:
|
||||
|
||||
path-parse@1.0.7: {}
|
||||
|
||||
path-scurry@2.0.0:
|
||||
dependencies:
|
||||
lru-cache: 11.0.2
|
||||
minipass: 7.1.2
|
||||
|
||||
path-type@4.0.0: {}
|
||||
|
||||
pathe@1.1.2: {}
|
||||
@ -9277,6 +9408,8 @@ snapshots:
|
||||
|
||||
signal-exit@3.0.7: {}
|
||||
|
||||
signal-exit@4.1.0: {}
|
||||
|
||||
simple-yenc@1.0.4: {}
|
||||
|
||||
slash@2.0.0: {}
|
||||
@ -9352,6 +9485,12 @@ snapshots:
|
||||
is-fullwidth-code-point: 3.0.0
|
||||
strip-ansi: 6.0.1
|
||||
|
||||
string-width@5.1.2:
|
||||
dependencies:
|
||||
eastasianwidth: 0.2.0
|
||||
emoji-regex: 9.2.2
|
||||
strip-ansi: 7.1.0
|
||||
|
||||
string_decoder@1.1.1:
|
||||
dependencies:
|
||||
safe-buffer: 5.1.2
|
||||
@ -9369,6 +9508,10 @@ snapshots:
|
||||
dependencies:
|
||||
ansi-regex: 5.0.1
|
||||
|
||||
strip-ansi@7.1.0:
|
||||
dependencies:
|
||||
ansi-regex: 6.1.0
|
||||
|
||||
strip-indent@4.0.0:
|
||||
dependencies:
|
||||
min-indent: 1.0.1
|
||||
@ -9827,6 +9970,18 @@ snapshots:
|
||||
|
||||
word-wrap@1.2.5: {}
|
||||
|
||||
wrap-ansi@7.0.0:
|
||||
dependencies:
|
||||
ansi-styles: 4.3.0
|
||||
string-width: 4.2.3
|
||||
strip-ansi: 6.0.1
|
||||
|
||||
wrap-ansi@8.1.0:
|
||||
dependencies:
|
||||
ansi-styles: 6.2.1
|
||||
string-width: 5.1.2
|
||||
strip-ansi: 7.1.0
|
||||
|
||||
wrappy@1.0.2: {}
|
||||
|
||||
ws@8.18.0: {}
|
||||
|
7
pnpm-workspace.yaml
Normal file
7
pnpm-workspace.yaml
Normal file
@ -0,0 +1,7 @@
|
||||
packages:
|
||||
- 'packages/*'
|
||||
- 'packages/*/*'
|
||||
|
||||
ignore:
|
||||
- 'packages/**/dist'
|
||||
- 'packages/**/node_modules'
|
@ -1,4 +1,4 @@
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
|
||||
export const enum PatchClass {
|
||||
Actions,
|
||||
|
@ -1,6 +1,6 @@
|
||||
import axios, { AxiosRequestConfig, ResponseType } from 'axios';
|
||||
import { Disposable } from './disposable';
|
||||
import { logger } from './logger';
|
||||
import { logger } from '@motajs/common';
|
||||
import JSZip from 'jszip';
|
||||
import { EventEmitter } from './eventEmitter';
|
||||
|
||||
|
@ -1,21 +1,17 @@
|
||||
import { mat4 } from 'gl-matrix';
|
||||
import { logger } from '../common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
import {
|
||||
WebGLColorArray,
|
||||
createProgram,
|
||||
isWebGL2Supported
|
||||
} from './webgl';
|
||||
import { ILayerRenderExtends, Layer } from '../render/preset/layer';
|
||||
import { HeroRenderer } from '../render/preset/hero';
|
||||
import { Sprite } from '../render/sprite';
|
||||
import { ILayerRenderExtends, Layer, HeroRenderer, Sprite } from '@motajs/render';
|
||||
|
||||
/**
|
||||
* 最大光源数量,必须设置,且光源数不能超过这个值,这个值决定了会预留多少的缓冲区,因此最好尽可能小,同时游戏过程中不可修改
|
||||
* 这个值越大,对显卡尤其是显存的要求会越大,不过考虑到各种设备的性能差异,不建议超过10
|
||||
*/
|
||||
const MAX_LIGHT_NUM = 5;
|
||||
/** 阴影层的Z值 */
|
||||
const Z_INDEX = 55;
|
||||
// 我也不知道这个数怎么来的,试出来是这个,别动就行
|
||||
const FOVY = Math.PI / 2;
|
||||
const ignore: Set<AllNumbers> = new Set([660, 661]);
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { ensureArray, tip } from '@/plugin/utils';
|
||||
import { sleep } from 'mutate-animate';
|
||||
import { logger } from '../common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
|
||||
const { gl, gl2 } = checkSupport();
|
||||
|
||||
|
@ -56,25 +56,13 @@ import EnemyTarget from '@/panel/enemyTarget.vue';
|
||||
import KeyboardPanel from '@/panel/keyboard.vue';
|
||||
import { MCGenerator } from './main/layout';
|
||||
import { ResourceController } from './loader/controller';
|
||||
import { logger } from './common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
import { Danmaku } from './main/custom/danmaku';
|
||||
import * as Shadow from './fx/shadow';
|
||||
import { MotaRenderer } from './render/render';
|
||||
import { Container } from './render/container';
|
||||
import { Sprite } from './render/sprite';
|
||||
import { Image, Text } from './render/preset/misc';
|
||||
import { RenderItem } from './render/item';
|
||||
import { texture } from './render/cache';
|
||||
import { RenderAdapter } from './render/adapter';
|
||||
import { Layer } from './render/preset/layer';
|
||||
import { LayerGroupFloorBinder } from './render/preset/floor';
|
||||
import { Render } from '@motajs/client';
|
||||
import { HeroKeyMover } from './main/action/move';
|
||||
import { Camera } from './render/camera';
|
||||
import * as Animation from 'mutate-animate';
|
||||
import './render/index';
|
||||
import * as RenderUtils from './render/utils';
|
||||
import '@/module';
|
||||
import { MotaOffscreenCanvas2D } from './fx/canvas2d';
|
||||
|
||||
// ----- 类注册
|
||||
Mota.register('class', 'CustomToolbar', CustomToolbar);
|
||||
@ -143,21 +131,7 @@ Mota.register('module', 'UIComponents', {
|
||||
Mota.register('module', 'MCGenerator', MCGenerator);
|
||||
Mota.register('module', 'Shadow', Shadow);
|
||||
Mota.register('module', 'Effect', {});
|
||||
Mota.register('module', 'Render', {
|
||||
texture,
|
||||
MotaRenderer,
|
||||
Container,
|
||||
Sprite,
|
||||
Text,
|
||||
Image,
|
||||
RenderItem,
|
||||
RenderAdapter,
|
||||
Layer,
|
||||
LayerGroupFloorBinder,
|
||||
Camera,
|
||||
MotaOffscreenCanvas2D,
|
||||
Utils: RenderUtils
|
||||
});
|
||||
Mota.register('module', 'Render', Render);
|
||||
Mota.register('module', 'Action', {
|
||||
HeroKeyMover
|
||||
});
|
||||
|
@ -1,6 +1,6 @@
|
||||
import BoxAnimate from '@/components/boxAnimate.vue';
|
||||
import { EventEmitter } from '@/core/common/eventEmitter';
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
import { ResponseBase } from '@/core/interface';
|
||||
import {
|
||||
deleteWith,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import {
|
||||
IGameUI,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { Props } from '@/core/render';
|
||||
import { Props } from '@motajs/render';
|
||||
import { IGameUI, IUIInstance, UIComponent, UIProps } from './shared';
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import { markRaw, mergeProps } from 'vue';
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { Props } from '@/core/render';
|
||||
import { Props } from '@motajs/render';
|
||||
import { DefineComponent, DefineSetupFnComponent, Ref, ShallowRef } from 'vue';
|
||||
|
||||
export type UIComponent = DefineSetupFnComponent<any> | DefineComponent;
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { backDir, has } from '@/plugin/game/utils';
|
||||
import { loading } from '../game';
|
||||
import type { LayerDoorAnimate } from '@/core/render/preset/floor';
|
||||
import type { LayerDoorAnimate } from '@motajs/render';
|
||||
import { getSkillLevel } from '@/plugin/game/skillTree';
|
||||
|
||||
/**
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
import { EventEmitter } from 'eventemitter3';
|
||||
import { cloneDeep, isNil } from 'lodash-es';
|
||||
import { ItemState } from './item';
|
||||
|
@ -1,17 +1,17 @@
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import { backDir, checkCanMoveExtended, toDir } from './utils';
|
||||
import { loading } from '../game';
|
||||
import type { RenderAdapter } from '@/core/render/adapter';
|
||||
import type { HeroRenderer } from '@/core/render/preset/hero';
|
||||
import type { FloorViewport } from '@/core/render/preset/viewport';
|
||||
import type { HeroKeyMover } from '@/core/main/action/move';
|
||||
import type {
|
||||
RenderAdapter,
|
||||
HeroRenderer,
|
||||
FloorViewport,
|
||||
FloorLayer,
|
||||
Layer,
|
||||
LayerGroup,
|
||||
LayerMovingRenderable
|
||||
} from '@/core/render/preset/layer';
|
||||
import type { LayerFloorBinder } from '@/core/render/preset/floor';
|
||||
LayerMovingRenderable,
|
||||
LayerFloorBinder
|
||||
} from '@motajs/render';
|
||||
import type { HeroKeyMover } from '@/core/main/action/move';
|
||||
import { BluePalace, MiscData } from '../mechanism/misc';
|
||||
import { sleep } from 'mutate-animate';
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Undoable } from '@/core/interface';
|
||||
import { EventEmitter } from 'eventemitter3';
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
|
||||
type ToJSONFunction<T> = (data: T) => string;
|
||||
type FromJSONFunction<T> = (data: string) => T;
|
||||
|
@ -18,26 +18,15 @@ import type { Ref } from 'vue';
|
||||
import type * as battle from './enemy/battle';
|
||||
import type * as hero from './state/hero';
|
||||
import type * as damage from './enemy/damage';
|
||||
import type { Logger } from '@/core/common/logger';
|
||||
import type { Logger } from '@motajs/common';
|
||||
import type { Danmaku } from '@/core/main/custom/danmaku';
|
||||
import type * as misc from './mechanism/misc';
|
||||
import type { texture } from '@/core/render/cache';
|
||||
import type { MotaRenderer } from '@/core/render/render';
|
||||
import type { Container } from '@/core/render/container';
|
||||
import type { Sprite } from '@/core/render/sprite';
|
||||
import type { Image, Text } from '@/core/render/preset/misc';
|
||||
import type { RenderItem } from '@/core/render/item';
|
||||
import type { RenderAdapter } from '@/core/render/adapter';
|
||||
import type { Render } from '@motajs/client';
|
||||
import type { ItemState } from './state/item';
|
||||
import type { Layer } from '@/core/render/preset/layer';
|
||||
import type { LayerGroupFloorBinder } from '@/core/render/preset/floor';
|
||||
import type { HeroKeyMover } from '@/core/main/action/move';
|
||||
import type { BlockMover, HeroMover, ObjectMoverBase } from './state/move';
|
||||
import type { Camera } from '@/core/render/camera';
|
||||
import type * as Animation from 'mutate-animate';
|
||||
import type * as RenderUtils from '@/core/render/utils';
|
||||
import type { WeatherController } from '@/module/weather/weather';
|
||||
import type { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
|
||||
interface ClassInterface {
|
||||
// 渲染进程与游戏进程通用
|
||||
@ -100,21 +89,7 @@ interface ModuleInterface {
|
||||
HeroSkill: typeof misc.HeroSkill;
|
||||
};
|
||||
Effect: {};
|
||||
Render: {
|
||||
texture: typeof texture;
|
||||
MotaRenderer: typeof MotaRenderer;
|
||||
Container: typeof Container;
|
||||
Sprite: typeof Sprite;
|
||||
Text: typeof Text;
|
||||
Image: typeof Image;
|
||||
RenderItem: typeof RenderItem;
|
||||
RenderAdapter: typeof RenderAdapter;
|
||||
Layer: typeof Layer;
|
||||
LayerGroupFloorBinder: typeof LayerGroupFloorBinder;
|
||||
Camera: typeof Camera;
|
||||
MotaOffscreenCanvas2D: typeof MotaOffscreenCanvas2D;
|
||||
Utils: typeof RenderUtils;
|
||||
};
|
||||
Render: typeof Render;
|
||||
State: {
|
||||
ItemState: typeof ItemState;
|
||||
HeroMover: typeof HeroMover;
|
||||
|
@ -1,7 +1,7 @@
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import { audioPlayer, AudioPlayer, AudioRoute, AudioStatus } from './player';
|
||||
import { guessTypeByExt, isAudioSupport } from './support';
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
import { StreamLoader } from '../loader';
|
||||
import { linear, sleep, Transition } from 'mutate-animate';
|
||||
import { VolumeEffect } from './effect';
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
import { OggVorbisDecoderWebWorker } from '@wasm-audio-decoders/ogg-vorbis';
|
||||
import { OggOpusDecoderWebWorker } from 'ogg-opus-decoder';
|
||||
import { AudioType, isAudioSupport } from './support';
|
||||
|
@ -15,7 +15,7 @@ import {
|
||||
VolumeEffect
|
||||
} from './effect';
|
||||
import { isNil } from 'lodash-es';
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
import { sleep } from 'mutate-animate';
|
||||
import { AudioDecoder } from './decoder';
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import { audioPlayer, AudioPlayer } from './player';
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
import { VolumeEffect } from './effect';
|
||||
|
||||
type LocationArray = [number, number, number];
|
||||
|
@ -1,7 +1,7 @@
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import { IStreamController, IStreamReader } from '../loader';
|
||||
import { IAudioInput, IAudioOutput } from './effect';
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
import { AudioType } from './support';
|
||||
import CodecParser, { CodecFrame, MimeType, OggPage } from 'codec-parser';
|
||||
import { isNil } from 'lodash-es';
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
import EventEmitter from 'eventemitter3';
|
||||
|
||||
export interface IStreamController<T = void> {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { DefaultProps, ElementLocator, Font, useKey } from '@/core/render';
|
||||
import { DefaultProps, ElementLocator, Font, useKey } from '@motajs/render';
|
||||
import { computed, defineComponent, reactive, ref } from 'vue';
|
||||
import { Background, Selection } from './misc';
|
||||
import { TextContent, TextContentExpose, TextContentProps } from './textbox';
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { DefaultProps, ElementLocator, GraphicPropsBase } from '@/core/render';
|
||||
import { DefaultProps, ElementLocator, GraphicPropsBase } from '@motajs/render';
|
||||
import { computed, defineComponent, onMounted, Ref, ref, watch } from 'vue';
|
||||
import { SetupComponentOptions } from './types';
|
||||
|
||||
|
@ -4,15 +4,15 @@ import {
|
||||
onTick,
|
||||
PathProps,
|
||||
Sprite
|
||||
} from '@/core/render';
|
||||
} from '@motajs/render';
|
||||
import { computed, defineComponent, ref, SetupContext, watch } from 'vue';
|
||||
import { SetupComponentOptions } from './types';
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { MotaOffscreenCanvas2D } from '@motajs/render';
|
||||
import { TextboxProps, TextContent, TextContentProps } from './textbox';
|
||||
import { Scroll, ScrollExpose, ScrollProps } from './scroll';
|
||||
import { transitioned } from '../use';
|
||||
import { hyper } from 'mutate-animate';
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
import { GameUI, IUIMountable } from '@/core/system';
|
||||
|
||||
interface ProgressProps extends DefaultProps {
|
||||
|
@ -10,7 +10,7 @@ import {
|
||||
} from 'vue';
|
||||
import { SetupComponentOptions } from './types';
|
||||
import { clamp } from 'lodash-es';
|
||||
import { DefaultProps, ElementLocator, Font } from '@/core/render';
|
||||
import { DefaultProps, ElementLocator, Font } from '@motajs/render';
|
||||
|
||||
/** 圆角矩形页码距离容器的边框大小,与 pageSize 相乘 */
|
||||
const RECT_PAD = 0.1;
|
||||
|
@ -17,12 +17,14 @@ import {
|
||||
ElementLocator,
|
||||
RenderItem,
|
||||
Sprite,
|
||||
Transform
|
||||
} from '@/core/render';
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
Transform,
|
||||
MotaOffscreenCanvas2D,
|
||||
IActionEvent,
|
||||
IWheelEvent,
|
||||
MouseType
|
||||
} from '@motajs/render';
|
||||
import { hyper, linear, Transition } from 'mutate-animate';
|
||||
import { clamp } from 'lodash-es';
|
||||
import { IActionEvent, IWheelEvent, MouseType } from '@/core/render/event';
|
||||
import { transitioned } from '../use';
|
||||
|
||||
export const enum ScrollDirection {
|
||||
|
@ -1,4 +1,11 @@
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import {
|
||||
ElementLocator,
|
||||
Font,
|
||||
Sprite,
|
||||
DefaultProps,
|
||||
Text,
|
||||
MotaOffscreenCanvas2D
|
||||
} from '@motajs/render';
|
||||
import {
|
||||
computed,
|
||||
defineComponent,
|
||||
@ -12,13 +19,10 @@ import {
|
||||
VNode,
|
||||
watch
|
||||
} from 'vue';
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { Sprite } from '@/core/render/sprite';
|
||||
import { DefaultProps } from '@/core/render/renderer';
|
||||
import { logger } from '@motajs/common';
|
||||
import { isNil } from 'lodash-es';
|
||||
import { SetupComponentOptions } from './types';
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import { Text } from '@/core/render/preset';
|
||||
import {
|
||||
ITextContentConfig,
|
||||
TextContentTyper,
|
||||
@ -27,7 +31,6 @@ import {
|
||||
WordBreak,
|
||||
TextAlign
|
||||
} from './textboxTyper';
|
||||
import { ElementLocator, Font } from '@/core/render';
|
||||
|
||||
export interface TextContentProps
|
||||
extends DefaultProps,
|
||||
|
@ -1,12 +1,12 @@
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { logger } from '@motajs/common';
|
||||
import {
|
||||
AutotileRenderable,
|
||||
Font,
|
||||
onTick,
|
||||
RenderableData,
|
||||
texture
|
||||
} from '@/core/render';
|
||||
texture,
|
||||
MotaOffscreenCanvas2D
|
||||
} from '@motajs/render';
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import { isNil } from 'lodash-es';
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
import { DefaultProps, ElementLocator, Font, texture } from '@/core/render';
|
||||
import { DefaultProps, ElementLocator, Font, texture } from '@motajs/render';
|
||||
import { logger } from '@motajs/common';
|
||||
import { computed, defineComponent, onUnmounted, ref } from 'vue';
|
||||
import { SetupComponentOptions } from './types';
|
||||
import { transitioned } from '../use';
|
||||
import { hyper } from 'mutate-animate';
|
||||
import { debounce } from 'lodash-es';
|
||||
import { logger } from '@/core/common/logger';
|
||||
|
||||
export interface TipProps extends DefaultProps {
|
||||
loc: ElementLocator;
|
||||
|
@ -1,5 +1,4 @@
|
||||
import { MotaRenderer } from '@/core/render';
|
||||
import { createApp } from '@/core/render';
|
||||
import { MotaRenderer, createApp } from '@motajs/render';
|
||||
import { defineComponent } from 'vue';
|
||||
import { UIController } from '@/core/system';
|
||||
import { mainSceneUI } from './ui/main';
|
||||
|
@ -10,7 +10,7 @@ import {
|
||||
Props,
|
||||
LayerGroup,
|
||||
Font
|
||||
} from '@/core/render';
|
||||
} from '@motajs/render';
|
||||
import { WeatherController } from '@/module/weather';
|
||||
import { FloorChange } from '@/plugin/fallback';
|
||||
import { LayerGroupFilter } from '@/plugin/fx/gameCanvas';
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { ElementLocator } from '@/core/render';
|
||||
import { ElementLocator } from '@motajs/render';
|
||||
import { GameUI, UIComponentProps } from '@/core/system';
|
||||
import { defineComponent } from 'vue';
|
||||
import {
|
||||
|
@ -1,11 +1,16 @@
|
||||
import { GameUI, UIComponentProps } from '@/core/system';
|
||||
import { computed, defineComponent, ref, watch } from 'vue';
|
||||
import { SetupComponentOptions, TextContent } from '../components';
|
||||
import { DefaultProps, ElementLocator, Sprite, Font } from '@/core/render';
|
||||
import {
|
||||
DefaultProps,
|
||||
ElementLocator,
|
||||
Sprite,
|
||||
Font,
|
||||
MotaOffscreenCanvas2D
|
||||
} from '@motajs/render';
|
||||
import { transitionedColor } from '../use';
|
||||
import { linear } from 'mutate-animate';
|
||||
import { Scroll } from '../components/scroll';
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { getArea, MinimapDrawer } from '@/plugin/ui/fly';
|
||||
import {
|
||||
NumpadToolbar,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { DefaultProps, ElementLocator, Font } from '@/core/render';
|
||||
import { DefaultProps, ElementLocator, Font } from '@motajs/render';
|
||||
import { computed, defineComponent, ref } from 'vue';
|
||||
import { SetupComponentOptions } from '../components';
|
||||
import {
|
||||
|
@ -1,8 +1,12 @@
|
||||
import { Shader, ShaderProgram } from '@/core/render/shader';
|
||||
import {
|
||||
Shader,
|
||||
ShaderProgram,
|
||||
MotaRenderer,
|
||||
Container,
|
||||
IShaderUniform,
|
||||
UniformType
|
||||
} from '@motajs/render';
|
||||
import { IWeather } from './weather';
|
||||
import { MotaRenderer } from '@/core/render/render';
|
||||
import { Container } from '@/core/render/container';
|
||||
import { IShaderUniform, UniformType } from '@/core/render/gl2';
|
||||
|
||||
const rainVs = /* glsl */ `
|
||||
in vec2 a_rainVertex;
|
||||
|
@ -1,10 +1,15 @@
|
||||
import { Shader, ShaderProgram } from '@/core/render/shader';
|
||||
import {
|
||||
Shader,
|
||||
ShaderProgram,
|
||||
MotaRenderer,
|
||||
Container,
|
||||
GL2Program,
|
||||
IShaderUniform,
|
||||
UniformType,
|
||||
Transform,
|
||||
MotaOffscreenCanvas2D
|
||||
} from '@motajs/render';
|
||||
import { IWeather } from './weather';
|
||||
import { MotaRenderer } from '@/core/render/render';
|
||||
import { Container } from '@/core/render/container';
|
||||
import { GL2Program, IShaderUniform, UniformType } from '@/core/render/gl2';
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { Transform } from '@/core/render/transform';
|
||||
|
||||
const snowVs = /* glsl */ `
|
||||
in vec2 a_snowVertex;
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { RenderItem } from '@/core/render';
|
||||
import { logger } from '@motajs/common';
|
||||
import { RenderItem } from '@motajs/render';
|
||||
import { Ticker } from 'mutate-animate';
|
||||
|
||||
export interface IWeather {
|
||||
|
@ -1,6 +1,9 @@
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { RenderItem, RenderItemPosition } from '@/core/render/item';
|
||||
import { Transform } from '@/core/render/transform';
|
||||
import {
|
||||
MotaOffscreenCanvas2D,
|
||||
RenderItem,
|
||||
RenderItemPosition,
|
||||
Transform
|
||||
} from '@motajs/render';
|
||||
import { IStateDamageable } from '@/game/state/interface';
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import { Ticker } from 'mutate-animate';
|
||||
|
@ -1,15 +1,14 @@
|
||||
import { IStateDamageable } from '@/game/state/interface';
|
||||
import { BarrageBoss, BossSprite, Hitbox } from './barrage';
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import {
|
||||
Container,
|
||||
HeroRenderer,
|
||||
LayerGroup,
|
||||
MotaRenderer,
|
||||
RenderItem,
|
||||
Shader,
|
||||
Transform
|
||||
} from '@/core/render';
|
||||
Transform,
|
||||
MotaOffscreenCanvas2D
|
||||
} from '@motajs/render';
|
||||
import { Pop } from '../fx/pop';
|
||||
import { SplittableBall } from './palaceBossProjectile';
|
||||
import { PointEffect } from '../fx/pointShader';
|
||||
|
@ -1,5 +1,4 @@
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { Transform } from '@/core/render';
|
||||
import { Transform, MotaOffscreenCanvas2D } from '@motajs/render';
|
||||
import { IStateDamageable } from '@/game/state/interface';
|
||||
import { Hitbox, Projectile } from './barrage';
|
||||
import type { PalaceBoss } from './palaceBoss';
|
||||
@ -223,7 +222,7 @@ export class SplittableBall extends Projectile<PalaceBoss> {
|
||||
}
|
||||
}
|
||||
|
||||
ai(boss: PalaceBoss, time: number, frame: number, dt: number): void {
|
||||
ai(boss: PalaceBoss, time: number, _frame: number, dt: number): void {
|
||||
if (this.splitData?.split) {
|
||||
if (time > this.splitData.time) {
|
||||
this.split(boss);
|
||||
@ -256,7 +255,7 @@ export class SplittableBall extends Projectile<PalaceBoss> {
|
||||
this.setPosition(x + this.vx * p, y + this.vy * p);
|
||||
}
|
||||
|
||||
render(canvas: MotaOffscreenCanvas2D, transform: Transform): void {
|
||||
render(canvas: MotaOffscreenCanvas2D, _transform: Transform): void {
|
||||
if (!this.color) return;
|
||||
const texture = SplittableBall.ball.get(this.color);
|
||||
if (!texture) return;
|
||||
|
@ -1,12 +1,15 @@
|
||||
import { Shader } from '@/core/render/shader';
|
||||
import {
|
||||
Shader,
|
||||
MotaRenderer,
|
||||
LayerGroup,
|
||||
RenderItem,
|
||||
MotaOffscreenCanvas2D,
|
||||
Container,
|
||||
HeroRenderer
|
||||
} from '@motajs/render';
|
||||
import { PointEffect } from '../fx/pointShader';
|
||||
import { BarrageBoss, BossSprite, Hitbox } from './barrage';
|
||||
import { MotaRenderer } from '@/core/render/render';
|
||||
import { LayerGroup } from '@/core/render/preset/layer';
|
||||
import { RenderItem } from '@/core/render/item';
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { Animation, hyper, power, sleep, Transition } from 'mutate-animate';
|
||||
import { Container } from '@/core/render/container';
|
||||
import {
|
||||
ArrowProjectile,
|
||||
AttackProjectile,
|
||||
@ -19,7 +22,6 @@ import {
|
||||
ThunderProjectile
|
||||
} from './towerBossProjectile';
|
||||
import { IStateDamageable } from '@/game/state/interface';
|
||||
import { HeroRenderer } from '@/core/render/preset/hero';
|
||||
import { Pop } from '../fx/pop';
|
||||
import { WeatherController } from '@/module';
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
import { hyper, power, TimingFn } from 'mutate-animate';
|
||||
import { Hitbox, Projectile } from './barrage';
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { Transform } from '@/core/render/transform';
|
||||
import { MotaOffscreenCanvas2D, Transform } from '@motajs/render';
|
||||
import type { TowerBoss } from './towerBoss';
|
||||
import { IStateDamageable } from '@/game/state/interface';
|
||||
import { PointEffect, PointEffectType } from '../fx/pointShader';
|
||||
|
@ -1,11 +1,14 @@
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { CameraAnimation } from '@/core/render/camera';
|
||||
import { Container } from '@/core/render/container';
|
||||
import { LayerGroup } from '@/core/render/preset/layer';
|
||||
import { MotaRenderer } from '@/core/render/render';
|
||||
import { Shader } from '@/core/render/shader';
|
||||
import { Sprite } from '@/core/render/sprite';
|
||||
import { disableViewport, enableViewport } from '@/core/render/utils';
|
||||
import { MotaOffscreenCanvas2D } from '@motajs/render';
|
||||
import {
|
||||
CameraAnimation,
|
||||
Container,
|
||||
LayerGroup,
|
||||
MotaRenderer,
|
||||
Shader,
|
||||
Sprite,
|
||||
disableViewport,
|
||||
enableViewport
|
||||
} from '@motajs/render';
|
||||
import type { HeroMover, MoveStep } from '@/game/state/move';
|
||||
import EventEmitter from 'eventemitter3';
|
||||
|
||||
|
@ -1,10 +1,14 @@
|
||||
import { Animation, hyper, linear, power, sleep } from 'mutate-animate';
|
||||
import { Chase, ChaseData, IChaseController } from './chase';
|
||||
import { completeAchievement } from '../ui/achievement';
|
||||
import { Camera, CameraAnimation, ICameraScale } from '@/core/render/camera';
|
||||
import { LayerGroup } from '@/core/render/preset/layer';
|
||||
import { MotaRenderer } from '@/core/render/render';
|
||||
import { Sprite } from '@/core/render/sprite';
|
||||
import {
|
||||
Camera,
|
||||
CameraAnimation,
|
||||
ICameraScale,
|
||||
LayerGroup,
|
||||
MotaRenderer,
|
||||
Sprite
|
||||
} from '@motajs/render';
|
||||
import { PointEffect, PointEffectType } from '../fx/pointShader';
|
||||
import { bgmController } from '@/module';
|
||||
|
||||
|
@ -1,7 +1,10 @@
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { wrapInstancedComponent } from '@/core/render';
|
||||
import { RenderItem, RenderItemPosition } from '@/core/render/item';
|
||||
import { Transform } from '@/core/render/transform';
|
||||
import {
|
||||
wrapInstancedComponent,
|
||||
MotaOffscreenCanvas2D,
|
||||
RenderItem,
|
||||
RenderItemPosition,
|
||||
Transform
|
||||
} from '@motajs/render';
|
||||
|
||||
// 渲染端的向后兼容用,会充当两个版本间过渡的作用
|
||||
class Change extends RenderItem {
|
||||
|
@ -1,9 +1,9 @@
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { LayerGroupFloorBinder } from '@/core/render/preset/floor';
|
||||
import { logger } from '@motajs/common';
|
||||
import {
|
||||
LayerGroupFloorBinder,
|
||||
ILayerGroupRenderExtends,
|
||||
LayerGroup
|
||||
} from '@/core/render/preset/layer';
|
||||
} from '@motajs/render';
|
||||
|
||||
const filterMap: [FloorIds[], string][] = [];
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { logger } from '@motajs/common';
|
||||
import { MotaOffscreenCanvas2D } from '@motajs/render';
|
||||
import { mainSetting } from '@/core/main/setting';
|
||||
import { LayerGroupFloorBinder } from '@/core/render/preset/floor';
|
||||
import {
|
||||
LayerGroupFloorBinder,
|
||||
ILayerGroupRenderExtends,
|
||||
LayerGroup
|
||||
} from '@/core/render/preset/layer';
|
||||
import { Sprite } from '@/core/render/sprite';
|
||||
import { Transform } from '@/core/render/transform';
|
||||
LayerGroup,
|
||||
Sprite,
|
||||
Transform
|
||||
} from '@motajs/render';
|
||||
|
||||
const gameListener = Mota.require('var', 'gameListener');
|
||||
|
||||
|
@ -1,15 +1,13 @@
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { logger } from '@motajs/common';
|
||||
import { mainSetting } from '@/core/main/setting';
|
||||
import {
|
||||
Damage,
|
||||
DamageRenderable,
|
||||
FloorDamageExtends
|
||||
} from '@/core/render/preset/damage';
|
||||
import { LayerGroupFloorBinder } from '@/core/render/preset/floor';
|
||||
import {
|
||||
FloorDamageExtends,
|
||||
LayerGroupFloorBinder,
|
||||
ILayerGroupRenderExtends,
|
||||
LayerGroup
|
||||
} from '@/core/render/preset/layer';
|
||||
} from '@motajs/render';
|
||||
|
||||
interface ItemDetailData {
|
||||
x: number;
|
||||
|
@ -1,7 +1,5 @@
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { UniformType } from '@/core/render/gl2';
|
||||
import { Shader, ShaderProgram } from '@/core/render/shader';
|
||||
import { Transform } from '@/core/render/transform';
|
||||
import { logger } from '@motajs/common';
|
||||
import { UniformType, Shader, ShaderProgram, Transform } from '@motajs/render';
|
||||
|
||||
export const enum PointEffectType {
|
||||
/**
|
||||
|
@ -1,7 +1,11 @@
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { wrapInstancedComponent } from '@/core/render';
|
||||
import { RenderItem, RenderItemPosition } from '@/core/render/item';
|
||||
import { Transform } from '@/core/render/transform';
|
||||
import {
|
||||
wrapInstancedComponent,
|
||||
RenderItem,
|
||||
RenderItemPosition,
|
||||
Transform,
|
||||
MotaOffscreenCanvas2D
|
||||
} from '@motajs/render';
|
||||
|
||||
import { TimingFn } from 'mutate-animate';
|
||||
|
||||
interface PopData {
|
||||
@ -61,7 +65,7 @@ export class Pop extends RenderItem {
|
||||
|
||||
protected render(
|
||||
canvas: MotaOffscreenCanvas2D,
|
||||
transform: Transform
|
||||
_transform: Transform
|
||||
): void {
|
||||
const ctx = canvas.ctx;
|
||||
const toDelete = new Set<PopData>();
|
||||
|
@ -1,12 +1,12 @@
|
||||
import { logger } from '@/core/common/logger';
|
||||
import { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
|
||||
import { logger } from '@motajs/common';
|
||||
import { MotaOffscreenCanvas2D } from '@motajs/render';
|
||||
import { mainSetting, MotaSettingItem } from '@/core/main/setting';
|
||||
import { LayerGroupFloorBinder } from '@/core/render/preset/floor';
|
||||
import {
|
||||
LayerGroupFloorBinder,
|
||||
ILayerGroupRenderExtends,
|
||||
LayerGroup
|
||||
} from '@/core/render/preset/layer';
|
||||
import { Sprite } from '@/core/render/sprite';
|
||||
LayerGroup,
|
||||
Sprite
|
||||
} from '@motajs/render';
|
||||
import type { BluePalace } from '@/game/mechanism/misc';
|
||||
|
||||
/** 最大粒子数 */
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user