mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-04-11 15:47:06 +08:00
fix: 迁移过程中产生的所有报错
This commit is contained in:
parent
0679bbb1a5
commit
4fda246a9a
@ -1,3 +1,8 @@
|
||||
{
|
||||
"name": "@user/client-modules"
|
||||
"name": "@user/client-modules",
|
||||
"dependencies": {
|
||||
"@motajs/render": "workspace:*",
|
||||
"@motajs/legacy-ui": "workspace:*",
|
||||
"@user/legacy-plugin-client": "workspace:*"
|
||||
}
|
||||
}
|
1
packages-user/client-modules/src/action/index.ts
Normal file
1
packages-user/client-modules/src/action/index.ts
Normal file
@ -0,0 +1 @@
|
||||
export * from './move';
|
@ -258,7 +258,7 @@ export class BgmController<
|
||||
export const bgmController = new BgmController<BgmIds>(audioPlayer);
|
||||
|
||||
export function loadAllBgm() {
|
||||
const loading = Mota.require('var', 'loading');
|
||||
const { loading } = Mota.require('@user/data-base');
|
||||
loading.once('coreInit', () => {
|
||||
const data = data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d;
|
||||
for (const bgm of data.main.bgms) {
|
||||
|
@ -7,8 +7,4 @@ export function patchAll() {
|
||||
patchAudio();
|
||||
patchWeather();
|
||||
patchUI();
|
||||
const loading = Mota.require('var', 'loading');
|
||||
loading.once('coreInit', () => {
|
||||
Patch.patchAll();
|
||||
});
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ import { patchAll } from './fallback';
|
||||
|
||||
patchAll();
|
||||
|
||||
export * from './action';
|
||||
export * from './weather';
|
||||
export * from './audio';
|
||||
export * from './loader';
|
||||
|
@ -8,17 +8,21 @@ import {
|
||||
import { logger } from '@motajs/common';
|
||||
import EventEmitter from 'eventemitter3';
|
||||
import { isNil } from 'lodash-es';
|
||||
import { LayerGroupFloorBinder } from './floor';
|
||||
import {
|
||||
BlockCacher,
|
||||
CanvasCacheItem,
|
||||
ICanvasCacheItem,
|
||||
calNeedRenderOf,
|
||||
ILayerGroupRenderExtends,
|
||||
Layer,
|
||||
LayerGroup
|
||||
} from './layer';
|
||||
import { BlockCacher, CanvasCacheItem, ICanvasCacheItem } from './block';
|
||||
LayerGroup,
|
||||
LayerGroupFloorBinder,
|
||||
tagMap
|
||||
} from '@motajs/render';
|
||||
import { IDamageEnemy, IEnemyCollection, MapDamage } from '@motajs/types';
|
||||
import { UserEnemyInfo } from '@user/data-state';
|
||||
|
||||
const ensureFloorDamage = Mota.require('fn', 'ensureFloorDamage');
|
||||
const { ensureFloorDamage } = Mota.require('@user/data-state');
|
||||
|
||||
/**
|
||||
* 根据伤害大小获取颜色
|
||||
@ -323,7 +327,7 @@ export class Damage extends RenderItem<EDamageEvent> {
|
||||
const y = enemy.y!;
|
||||
const { damage } = enemy.calDamage();
|
||||
const cri = enemy.calCritical(1)[0]?.atkDelta ?? Infinity;
|
||||
const real = enemy.getRealInfo();
|
||||
const real = enemy.getRealInfo() as UserEnemyInfo;
|
||||
|
||||
const dam1: DamageRenderable = {
|
||||
align: 'left',
|
||||
@ -587,4 +591,9 @@ export class Damage extends RenderItem<EDamageEvent> {
|
||||
}
|
||||
}
|
||||
|
||||
// 注册为内部元素
|
||||
tagMap.register<EDamageEvent, Damage>('damage', (_0, _1, _props) => {
|
||||
return new Damage();
|
||||
});
|
||||
|
||||
// const adapter = new RenderAdapter<Damage>('damage');
|
@ -3,7 +3,7 @@ import { defineComponent } from 'vue';
|
||||
import { UIController } from '@motajs/system-ui';
|
||||
import { mainSceneUI } from './ui/main';
|
||||
import { MAIN_HEIGHT, MAIN_WIDTH } from './shared';
|
||||
import { TextboxStore } from './components';
|
||||
import { hook } from '@user/data-base';
|
||||
|
||||
export function create() {
|
||||
const main = new MotaRenderer();
|
||||
@ -23,21 +23,17 @@ export function create() {
|
||||
main.hide();
|
||||
createApp(App).mount(main);
|
||||
|
||||
Mota.require('var', 'hook').on('reset', () => {
|
||||
hook.on('reset', () => {
|
||||
main.show();
|
||||
});
|
||||
|
||||
Mota.require('var', 'hook').on('restart', () => {
|
||||
hook.on('restart', () => {
|
||||
main.hide();
|
||||
});
|
||||
|
||||
console.log(main);
|
||||
}
|
||||
|
||||
Mota.register('module', 'MainUI', {
|
||||
TextboxStore
|
||||
});
|
||||
|
||||
export * from './components';
|
||||
export * from './ui';
|
||||
export * from './use';
|
||||
|
@ -1,13 +1,13 @@
|
||||
import { logger } from '@motajs/common';
|
||||
import { mainSetting } from '@motajs/legacy-ui';
|
||||
import {
|
||||
Damage,
|
||||
DamageRenderable,
|
||||
FloorDamageExtends,
|
||||
LayerGroupFloorBinder,
|
||||
ILayerGroupRenderExtends,
|
||||
LayerGroup
|
||||
} from '@motajs/render';
|
||||
import { hook } from '@user/data-base';
|
||||
import { ItemState } from '@user/data-state';
|
||||
import { Damage, DamageRenderable, FloorDamageExtends } from './damage';
|
||||
|
||||
interface ItemDetailData {
|
||||
x: number;
|
||||
@ -21,8 +21,7 @@ interface ItemData {
|
||||
y: number;
|
||||
}
|
||||
|
||||
const ItemState = Mota.require('module', 'State').ItemState;
|
||||
Mota.require('var', 'hook').on('setBlock', (x, y, floorId, block) => {
|
||||
hook.on('setBlock', (x, y, floorId, block) => {
|
||||
FloorItemDetail.listened.forEach(v => {
|
||||
v.setBlock(block, x, y);
|
||||
});
|
||||
@ -199,8 +198,7 @@ export class FloorItemDetail implements ILayerGroupRenderExtends {
|
||||
return;
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
ItemState.item(id)?.itemEffectFn();
|
||||
ItemState.item(id)?.itemEffectFn?.();
|
||||
detail?.set(index, { x, y, diff });
|
||||
});
|
||||
});
|
@ -1,22 +1,23 @@
|
||||
import {
|
||||
Container,
|
||||
FloorDamageExtends,
|
||||
LayerGroupFloorBinder,
|
||||
FloorLayer,
|
||||
LayerGroup,
|
||||
FloorViewport,
|
||||
MotaRenderer
|
||||
} from '@motajs/render';
|
||||
import { FloorItemDetail } from '@/plugin/fx/itemDetail';
|
||||
import { hook } from '@user/data-base';
|
||||
import { MiscData } from '@user/data-state';
|
||||
import { FloorDamageExtends } from './damage';
|
||||
import { FloorItemDetail } from './itemDetail';
|
||||
|
||||
const loopMaps = Mota.require('module', 'Mechanism').MiscData.loopMaps;
|
||||
const loopMaps = MiscData.loopMaps;
|
||||
|
||||
let loopLayer: LayerGroup;
|
||||
let show: boolean = false;
|
||||
/** 循环式地图中,更新视角的委托ticker */
|
||||
let delegation: number = -1;
|
||||
|
||||
const hook = Mota.require('var', 'hook');
|
||||
hook.on('changingFloor', (floorId, heroLoc) => {
|
||||
enableLoopMapElement(floorId);
|
||||
});
|
@ -1,7 +1,6 @@
|
||||
import { LayerShadowExtends } from '@/core/fx/shadow';
|
||||
import { LayerShadowExtends } from '@motajs/legacy-ui';
|
||||
import {
|
||||
ILayerGroupRenderExtends,
|
||||
FloorDamageExtends,
|
||||
LayerGroupAnimate,
|
||||
FloorViewport,
|
||||
ILayerRenderExtends,
|
||||
@ -11,13 +10,14 @@ import {
|
||||
LayerGroup,
|
||||
Font
|
||||
} from '@motajs/render';
|
||||
import { WeatherController } from '@/module/weather';
|
||||
import { FloorChange } from '@/plugin/fallback';
|
||||
import { LayerGroupFilter } from '@/plugin/fx/gameCanvas';
|
||||
import { LayerGroupHalo } from '@/plugin/fx/halo';
|
||||
import { FloorItemDetail } from '@/plugin/fx/itemDetail';
|
||||
import { PopText } from '@/plugin/fx/pop';
|
||||
import { LayerGroupPortal } from '@/plugin/fx/portal';
|
||||
import { WeatherController } from '../../weather';
|
||||
import {
|
||||
FloorChange,
|
||||
LayerGroupFilter,
|
||||
LayerGroupHalo,
|
||||
LayerGroupPortal,
|
||||
PopText
|
||||
} from '@user/legacy-plugin-client';
|
||||
import { defineComponent, onMounted, reactive, ref } from 'vue';
|
||||
import { Textbox, Tip } from '../components';
|
||||
import { GameUI, UIController } from '@motajs/system-ui';
|
||||
@ -35,6 +35,11 @@ import {
|
||||
} from './statusBar';
|
||||
import { onLoaded } from '../use';
|
||||
import { ReplayingStatus } from './toolbar';
|
||||
import { getHeroStatusOn, HeroSkill, NightSpecial } from '@user/data-state';
|
||||
import { jumpIgnoreFloor } from '@user/legacy-plugin-data';
|
||||
import { hook } from '@user/data-base';
|
||||
import { FloorDamageExtends } from '../damage';
|
||||
import { FloorItemDetail } from '../itemDetail';
|
||||
|
||||
const MainScene = defineComponent(() => {
|
||||
const layerGroupExtends: ILayerGroupRenderExtends[] = [
|
||||
@ -112,8 +117,6 @@ const MainScene = defineComponent(() => {
|
||||
night: 0
|
||||
});
|
||||
|
||||
const { getHeroStatusOn } = Mota.requireAll('fn');
|
||||
|
||||
const updateStatus = () => {
|
||||
if (!core.status || !core.status.hero || !core.status.floorId) return;
|
||||
hideStatus.value = core.getFlag('hideStatusBar', false);
|
||||
@ -135,7 +138,6 @@ const MainScene = defineComponent(() => {
|
||||
leftStatus.exAtk = getHeroStatusOn('mana');
|
||||
leftStatus.magicDef = getHeroStatusOn('magicDef');
|
||||
|
||||
const { HeroSkill, NightSpecial } = Mota.require('module', 'Mechanism');
|
||||
rightStatus.autoSkill = HeroSkill.getAutoSkill();
|
||||
rightStatus.skillName = HeroSkill.getSkillName();
|
||||
rightStatus.skillDesc = HeroSkill.getSkillDesc();
|
||||
@ -148,7 +150,7 @@ const MainScene = defineComponent(() => {
|
||||
replayStatus.played = totalList.length - toReplay.length;
|
||||
replayStatus.total = totalList.length;
|
||||
if (HeroSkill.learnedSkill(HeroSkill.Jump)) {
|
||||
if (Mota.Plugin.require('skill_g').jumpIgnoreFloor.has(floor)) {
|
||||
if (jumpIgnoreFloor.has(floor)) {
|
||||
rightStatus.jumpCount = -2;
|
||||
} else {
|
||||
rightStatus.jumpCount = 3 - (flags[`jump_${floor}`] ?? 0);
|
||||
@ -168,7 +170,7 @@ const MainScene = defineComponent(() => {
|
||||
loaded.value = true;
|
||||
});
|
||||
|
||||
Mota.require('var', 'hook').on('statusBarUpdate', updateStatus);
|
||||
hook.on('statusBarUpdate', updateStatus);
|
||||
|
||||
return () => (
|
||||
<container id="main-scene" width={MAIN_WIDTH} height={MAIN_HEIGHT}>
|
||||
|
@ -14,7 +14,7 @@ import { mainUi } from '@motajs/legacy-ui';
|
||||
import { gameKey } from '@motajs/system-action';
|
||||
import { generateKeyboardEvent } from '@motajs/system-action';
|
||||
import { getVitualKeyOnce } from '@motajs/legacy-ui';
|
||||
import { getAllSavesData, getSaveData } from '@/module/utils';
|
||||
import { getAllSavesData, getSaveData } from '../../utils';
|
||||
|
||||
export interface SettingsProps extends Partial<ChoicesProps>, UIComponentProps {
|
||||
loc: ElementLocator;
|
||||
@ -410,7 +410,9 @@ export const DownloadSaveSelect = defineComponent<SettingsProps>(props => {
|
||||
{ text: '请等待处理完毕' }
|
||||
);
|
||||
core.download(
|
||||
`${core.firstData.name}_${core.formatDate2(new Date())}.h5save`,
|
||||
`${core.firstData.name}_${core.formatDate2(
|
||||
new Date()
|
||||
)}.h5save`,
|
||||
data
|
||||
);
|
||||
}
|
||||
@ -426,7 +428,9 @@ export const DownloadSaveSelect = defineComponent<SettingsProps>(props => {
|
||||
if (confirm) {
|
||||
const data = await getSaveData(core.saves.saveIndex);
|
||||
core.download(
|
||||
`${core.firstData.name}_${core.formatDate2(new Date())}.h5save`,
|
||||
`${core.firstData.name}_${core.formatDate2(
|
||||
new Date()
|
||||
)}.h5save`,
|
||||
data
|
||||
);
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ import {
|
||||
ReplayingStatus,
|
||||
ReplayingToolbar
|
||||
} from './toolbar';
|
||||
import { HeroSkill } from '@user/data-state';
|
||||
|
||||
export interface ILeftHeroStatus {
|
||||
hp: number;
|
||||
@ -275,7 +276,6 @@ export const RightStatusBar = defineComponent<StatusBarProps<IRightHeroStatus>>(
|
||||
};
|
||||
|
||||
const changeAutoSkill = () => {
|
||||
const { HeroSkill } = Mota.require('module', 'Mechanism');
|
||||
const auto = !s.autoSkill;
|
||||
HeroSkill.setAutoSkill(auto);
|
||||
core.status.route.push(`set:autoSkill:${auto}`);
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { loading } from '@user/data-base';
|
||||
import { TimingFn, Transition } from 'mutate-animate';
|
||||
import {
|
||||
ComponentInternalInstance,
|
||||
@ -59,7 +60,6 @@ export function onOrientationChange(hook: OrientationHook) {
|
||||
* @param hook 当游戏加载完成时执行的函数
|
||||
*/
|
||||
export function onLoaded(hook: () => void) {
|
||||
const loading = Mota.require('var', 'loading');
|
||||
if (!loading.loaded) {
|
||||
loading.once('loaded', hook);
|
||||
} else {
|
||||
|
@ -10,6 +10,7 @@ import {
|
||||
MotaOffscreenCanvas2D
|
||||
} from '@motajs/render';
|
||||
import { IWeather } from './weather';
|
||||
import { loading } from '@user/data-base';
|
||||
|
||||
const snowVs = /* glsl */ `
|
||||
in vec2 a_snowVertex;
|
||||
@ -105,7 +106,7 @@ void main() {
|
||||
/** 雨滴顶点坐标 */
|
||||
const vertex = new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]);
|
||||
|
||||
Mota.require('var', 'loading').once('coreInit', () => {
|
||||
loading.once('coreInit', () => {
|
||||
const shader = new SnowShader();
|
||||
const gl = shader.gl;
|
||||
shader.size(480, 480);
|
||||
|
@ -107,6 +107,8 @@ export interface GameEvent {
|
||||
];
|
||||
/** Emitted in lib/control.js */
|
||||
replayStatus: [replaying: boolean];
|
||||
/** Emitted in project/functions.js */
|
||||
loadData: [];
|
||||
}
|
||||
|
||||
export const hook = new EventEmitter<GameEvent>();
|
||||
|
@ -13,7 +13,8 @@ import {
|
||||
HaloFn,
|
||||
IEnemyCollection,
|
||||
IDamageEnemy,
|
||||
HaloType
|
||||
HaloType,
|
||||
IEnemyCollectionEvent
|
||||
} from '@motajs/types';
|
||||
|
||||
// todo: 光环划分优先级,从而可以实现光环的多级运算
|
||||
@ -52,13 +53,8 @@ specialValue
|
||||
.set(31, ['hpHalo'])
|
||||
.set(32, ['assimilateRange']);
|
||||
|
||||
interface EnemyCollectionEvent {
|
||||
extract: [];
|
||||
calculated: [];
|
||||
}
|
||||
|
||||
export class EnemyCollection
|
||||
extends EventEmitter<EnemyCollectionEvent>
|
||||
extends EventEmitter<IEnemyCollectionEvent>
|
||||
implements IEnemyCollection
|
||||
{
|
||||
floorId: FloorIds;
|
||||
|
@ -233,7 +233,7 @@ export function getSkillConsume(skill: number) {
|
||||
|
||||
export function openTree() {
|
||||
if (main.replayChecking) return;
|
||||
Mota.require('var', 'mainUi').open('skillTree');
|
||||
Mota.require('@motajs/legacy-ui').mainUi.open('skillTree');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -59,7 +59,7 @@ function getRealStatus(
|
||||
name: keyof HeroStatus | 'all' | (keyof HeroStatus)[],
|
||||
floorId: FloorIds = core.status.floorId
|
||||
): any {
|
||||
const { getSkillLevel } = Mota.Plugin.require('skillTree_g');
|
||||
const { getSkillLevel } = Mota.require('@user/legacy-plugin-data');
|
||||
if (name instanceof Array) {
|
||||
const res: any = {};
|
||||
name.forEach(v => {
|
||||
|
@ -11,7 +11,7 @@ import type {
|
||||
LayerMovingRenderable,
|
||||
LayerFloorBinder
|
||||
} from '@motajs/render';
|
||||
import type { HeroKeyMover } from '@/module/action/move';
|
||||
import type { HeroKeyMover } from '@user/client-modules';
|
||||
import { BluePalace, MiscData } from '../mechanism/misc';
|
||||
import { sleep } from '@motajs/common';
|
||||
|
||||
@ -939,7 +939,7 @@ export const heroMoveCollection: HeroMoveCollection = {
|
||||
loading.once('coreInit', () => {
|
||||
// 注册按键操作
|
||||
Mota.r(() => {
|
||||
const { HeroKeyMover } = Mota.require('@motajs/system-action');
|
||||
const { HeroKeyMover } = Mota.require('@user/client-modules');
|
||||
const { gameKey } = Mota.require('@motajs/system-action');
|
||||
const keyMover = new HeroKeyMover(gameKey, heroMover);
|
||||
heroMoveCollection.keyMover = keyMover;
|
||||
|
@ -16,6 +16,8 @@ import * as SystemAction from '@motajs/system-action';
|
||||
import * as SystemUI from '@motajs/system-ui';
|
||||
import * as ClientModules from '@user/client-modules';
|
||||
import * as LegacyPluginClient from '@user/legacy-plugin-client';
|
||||
import * as MutateAnimate from 'mutate-animate';
|
||||
import * as Vue from 'vue';
|
||||
|
||||
export function create() {
|
||||
Mota.register('@motajs/client', Client);
|
||||
@ -35,4 +37,6 @@ export function create() {
|
||||
Mota.register('@motajs/system-ui', SystemUI);
|
||||
Mota.register('@user/client-modules', ClientModules);
|
||||
Mota.register('@user/legacy-plugin-client', LegacyPluginClient);
|
||||
Mota.register('MutateAnimate', MutateAnimate);
|
||||
Mota.register('Vue', Vue);
|
||||
}
|
||||
|
@ -1,9 +1,15 @@
|
||||
import { patchAll } from '@user/data-fallback';
|
||||
import { createMota } from './mota';
|
||||
import { create } from './create';
|
||||
import { loading } from '@user/data-base';
|
||||
import { Patch } from '@motajs/legacy-common';
|
||||
|
||||
createMota();
|
||||
patchAll();
|
||||
create();
|
||||
|
||||
loading.once('coreInit', () => {
|
||||
Patch.patchAll();
|
||||
});
|
||||
|
||||
export * from './mota';
|
||||
|
@ -20,6 +20,9 @@ import type * as DataState from '@user/data-state';
|
||||
import type * as DataUtils from '@user/data-utils';
|
||||
import type * as LegacyPluginClient from '@user/legacy-plugin-client';
|
||||
import type * as LegacyPluginData from '@user/legacy-plugin-data';
|
||||
// ---------- 必要的第三方库
|
||||
import type * as MutateAnimate from 'mutate-animate';
|
||||
import type * as Vue from 'vue';
|
||||
|
||||
interface ModuleInterface {
|
||||
'@motajs/client': typeof Client;
|
||||
@ -44,6 +47,9 @@ interface ModuleInterface {
|
||||
'@user/data-utils': typeof DataUtils;
|
||||
'@user/legacy-plugin-client': typeof LegacyPluginClient;
|
||||
'@user/legacy-plugin-data': typeof LegacyPluginData;
|
||||
// ---------- 必要的第三方库
|
||||
MutateAnimate: typeof MutateAnimate;
|
||||
Vue: typeof Vue;
|
||||
}
|
||||
|
||||
export interface IMota {
|
||||
|
@ -1,6 +1,7 @@
|
||||
{
|
||||
"name": "@user/legacy-plugin-client",
|
||||
"dependencies": {
|
||||
"@user/client-modules": "workspace:*",
|
||||
"@user/data-state": "workspace:*"
|
||||
}
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
import { hook } from '@user/data-base';
|
||||
import { BarrageBoss } from './barrage';
|
||||
import { TowerBoss } from './towerBoss';
|
||||
|
||||
@ -15,7 +16,7 @@ export function getBoss<T extends BarrageBoss>(): T | null {
|
||||
return boss as T;
|
||||
}
|
||||
|
||||
Mota.require('var', 'hook').on('reset', () => {
|
||||
hook.on('reset', () => {
|
||||
if (boss) {
|
||||
boss.end();
|
||||
}
|
||||
|
@ -12,8 +12,10 @@ import {
|
||||
import { Pop } from '../fx/pop';
|
||||
import { SplittableBall } from './palaceBossProjectile';
|
||||
import { PointEffect } from '../fx/pointShader';
|
||||
import { loading } from '@user/data-base';
|
||||
import { clip } from '@user/legacy-plugin-data';
|
||||
|
||||
Mota.require('var', 'loading').once('coreInit', () => {
|
||||
loading.once('coreInit', () => {
|
||||
const shader = new Shader();
|
||||
shader.size(480, 480);
|
||||
shader.setHD(true);
|
||||
@ -102,7 +104,7 @@ export class PalaceBoss extends BarrageBoss {
|
||||
PalaceBoss.effect.end();
|
||||
core.status.hero.hp = this.heroHp;
|
||||
|
||||
Mota.Plugin.require('replay_g').clip('choices:0');
|
||||
clip('choices:0');
|
||||
}
|
||||
|
||||
ai(time: number, frame: number): void {}
|
||||
|
@ -23,9 +23,11 @@ import {
|
||||
} from './towerBossProjectile';
|
||||
import { IStateDamageable } from '@user/data-state';
|
||||
import { Pop } from '../fx/pop';
|
||||
import { WeatherController } from '@/module';
|
||||
import { WeatherController } from '@user/client-modules';
|
||||
import { loading } from '@user/data-base';
|
||||
import { clip } from '@user/legacy-plugin-data';
|
||||
|
||||
Mota.require('var', 'loading').once('coreInit', () => {
|
||||
loading.once('coreInit', () => {
|
||||
const shader = new Shader();
|
||||
shader.size(480, 480);
|
||||
shader.setHD(true);
|
||||
@ -198,7 +200,7 @@ export class TowerBoss extends BarrageBoss {
|
||||
TowerBoss.effect.end();
|
||||
core.status.hero.hp = this.heroHp;
|
||||
|
||||
Mota.Plugin.require('replay_g').clip('choices:0');
|
||||
clip('choices:0');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -9,7 +9,12 @@ import {
|
||||
disableViewport,
|
||||
enableViewport
|
||||
} from '@motajs/render';
|
||||
import type { HeroMover, MoveStep } from '@user/data-state';
|
||||
import { loading } from '@user/data-base';
|
||||
import {
|
||||
heroMoveCollection,
|
||||
type HeroMover,
|
||||
type MoveStep
|
||||
} from '@user/data-state';
|
||||
import EventEmitter from 'eventemitter3';
|
||||
|
||||
export interface IChaseController {
|
||||
@ -108,7 +113,7 @@ export class Chase extends EventEmitter<ChaseEvent> {
|
||||
const layer = render.getElementById('layer-main')! as LayerGroup;
|
||||
this.layer = layer;
|
||||
|
||||
const mover = Mota.require('module', 'State').heroMoveCollection.mover;
|
||||
const mover = heroMoveCollection.mover;
|
||||
this.heroMove = mover;
|
||||
|
||||
mover.on('stepEnd', this.onStepEnd);
|
||||
@ -345,7 +350,7 @@ export class Chase extends EventEmitter<ChaseEvent> {
|
||||
}
|
||||
}
|
||||
|
||||
Mota.require('var', 'loading').once('coreInit', () => {
|
||||
loading.once('coreInit', () => {
|
||||
const shader = new Shader();
|
||||
Chase.shader = shader;
|
||||
shader.size(480, 480);
|
||||
|
@ -10,7 +10,9 @@ import {
|
||||
Sprite
|
||||
} from '@motajs/render';
|
||||
import { PointEffect, PointEffectType } from '../fx/pointShader';
|
||||
import { bgmController } from '@/module';
|
||||
import { bgmController } from '@user/client-modules';
|
||||
import { loading } from '@user/data-base';
|
||||
import { chaseInit1, clip } from '@user/legacy-plugin-data';
|
||||
|
||||
const path: Partial<Record<FloorIds, LocArr[]>> = {
|
||||
MT16: [
|
||||
@ -107,7 +109,7 @@ let back: Sprite | undefined;
|
||||
let contrastId: number = 0;
|
||||
const effect = new PointEffect();
|
||||
|
||||
Mota.require('var', 'loading').once('loaded', () => {
|
||||
loading.once('loaded', () => {
|
||||
effect.create(Chase.shader, 40);
|
||||
});
|
||||
|
||||
@ -215,7 +217,7 @@ export function initChase(): IChaseController {
|
||||
para3(chase, ani);
|
||||
processScale(chase, ani, scale, camera);
|
||||
|
||||
Mota.Plugin.require('chase_g').chaseInit1();
|
||||
chaseInit1();
|
||||
|
||||
chase.on('end', () => {
|
||||
effect.end();
|
||||
@ -712,7 +714,7 @@ function para3(chase: Chase, ani: Animation) {
|
||||
});
|
||||
chase.onceLoc(21, 7, 'MT14', async () => {
|
||||
flags.finishChase1 = true;
|
||||
Mota.Plugin.require('replay_g').clip('choices:0');
|
||||
clip('choices:0');
|
||||
core.showStatusBar();
|
||||
ani.time(750).apply('rect', 0);
|
||||
chase.end(true);
|
||||
|
@ -4,6 +4,7 @@ import {
|
||||
ILayerGroupRenderExtends,
|
||||
LayerGroup
|
||||
} from '@motajs/render';
|
||||
import { loading } from '@user/data-base';
|
||||
|
||||
const filterMap: [FloorIds[], string][] = [];
|
||||
|
||||
@ -11,7 +12,7 @@ function getCanvasFilterByFloorId(floorId: FloorIds = core.status.floorId) {
|
||||
return filterMap.find(v => v[0].includes(floorId))?.[1] ?? '';
|
||||
}
|
||||
|
||||
Mota.require('var', 'loading').once('coreInit', () => {
|
||||
loading.once('coreInit', () => {
|
||||
filterMap.push(
|
||||
[['MT50', 'MT60', 'MT61'], 'contrast(120%)'], // 童心佬的滤镜(
|
||||
[
|
||||
|
@ -8,8 +8,7 @@ import {
|
||||
Sprite,
|
||||
Transform
|
||||
} from '@motajs/render';
|
||||
|
||||
const gameListener = Mota.require('var', 'gameListener');
|
||||
import { gameListener, hook } from '@user/data-base';
|
||||
|
||||
export class LayerGroupHalo implements ILayerGroupRenderExtends {
|
||||
id: string = 'halo';
|
||||
@ -130,7 +129,7 @@ function updateHalo(block: Block) {
|
||||
}
|
||||
}
|
||||
|
||||
Mota.require('var', 'hook').on('enemyExtract', col => {
|
||||
hook.on('enemyExtract', col => {
|
||||
LayerGroupHalo.sprites.forEach(v => {
|
||||
const floor = v.binder.getFloor();
|
||||
if (col.floorId === floor) {
|
||||
|
@ -1,6 +1,5 @@
|
||||
export * from './gameCanvas';
|
||||
export * from './halo';
|
||||
export * from './itemDetail';
|
||||
export * from './pointShader';
|
||||
export * from './pop';
|
||||
export * from './portal';
|
||||
|
@ -7,7 +7,7 @@ import {
|
||||
LayerGroup,
|
||||
Sprite
|
||||
} from '@motajs/render';
|
||||
import type { BluePalace } from '@user/data-state';
|
||||
import { BluePalace } from '@user/data-state';
|
||||
|
||||
/** 最大粒子数 */
|
||||
const MAX_PARTICLES = 10;
|
||||
@ -24,7 +24,7 @@ export class LayerGroupPortal implements ILayerGroupRenderExtends {
|
||||
portal!: Portal;
|
||||
|
||||
private onFloorChange = (floor: FloorIds) => {
|
||||
const data = Mota.require('module', 'Mechanism').BluePalace.portals;
|
||||
const data = BluePalace.portals;
|
||||
this.portal.cellSize = this.group.cellSize;
|
||||
this.portal.setData(data[floor] ?? []);
|
||||
};
|
||||
|
@ -3,4 +3,4 @@ export * from './chase';
|
||||
export * from './fx';
|
||||
|
||||
export * from './fallback';
|
||||
export * from './loopMap';
|
||||
export * from '../../client-modules/src/render/loopMap';
|
||||
|
@ -2,6 +2,7 @@
|
||||
"name": "@user/legacy-plugin-data",
|
||||
"dependencies": {
|
||||
"@user/data-state": "workspace:*",
|
||||
"@user/data-base": "workspace:*"
|
||||
"@user/data-base": "workspace:*",
|
||||
"@user/data-utils": "workspace:*"
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
import { has, ofDir } from '@/plugin/game/utils';
|
||||
import { has, ofDir } from '@user/data-utils';
|
||||
|
||||
export function init() {
|
||||
// 伤害弹出
|
||||
@ -11,11 +11,11 @@ export function init() {
|
||||
const damage = info?.damage;
|
||||
if (damage) {
|
||||
if (!main.replayChecking) {
|
||||
Mota.Plugin.require('pop_r').addPop(
|
||||
(x - core.bigmap.offsetX / 32) * 32 + 12,
|
||||
(y - core.bigmap.offsetY / 32) * 32 + 20,
|
||||
(-damage).toString()
|
||||
);
|
||||
// addPop(
|
||||
// (x - core.bigmap.offsetX / 32) * 32 + 12,
|
||||
// (y - core.bigmap.offsetY / 32) * 32 + 20,
|
||||
// (-damage).toString()
|
||||
// );
|
||||
}
|
||||
core.status.hero.hp -= damage;
|
||||
const type = [...info.type];
|
||||
|
@ -10,6 +10,7 @@ import type {
|
||||
} from '@motajs/render';
|
||||
import type { TimingFn } from 'mutate-animate';
|
||||
import { BlockMover, heroMoveCollection, MoveStep } from '@user/data-state';
|
||||
import { hook, loading } from '@user/data-base';
|
||||
|
||||
// 向后兼容用,会充当两个版本间过渡的作用
|
||||
|
||||
@ -24,8 +25,6 @@ interface Adapters {
|
||||
const adapters: Adapters = {};
|
||||
|
||||
export function initFallback() {
|
||||
const hook = Mota.require('var', 'hook');
|
||||
const loading = Mota.require('var', 'loading');
|
||||
let fallbackIds: number = 1e8;
|
||||
|
||||
if (!main.replayChecking && main.mode === 'play') {
|
||||
@ -90,7 +89,7 @@ export function initFallback() {
|
||||
// ----- 引入
|
||||
const { Camera, MotaRenderer: Renderer } =
|
||||
Mota.require('@motajs/render');
|
||||
const Animation = Mota.require('module', 'Animation');
|
||||
const Animation = Mota.require('MutateAnimate');
|
||||
|
||||
// ----- 勇士移动相关
|
||||
control.prototype.moveAction = async function (callback?: () => void) {
|
||||
@ -313,7 +312,7 @@ export function initFallback() {
|
||||
core.removeBlock(x, y);
|
||||
setTimeout(function () {
|
||||
core.status.replay.animate = false;
|
||||
Mota.require('var', 'hook').emit(
|
||||
hook.emit(
|
||||
'afterOpenDoor',
|
||||
block.event.id as AllIdsOf<'animates'>,
|
||||
x,
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { EnemyCollection, ensureFloorDamage } from '@user/data-state';
|
||||
import { formatDamage } from '../utils';
|
||||
import { formatDamage } from '@user/data-utils';
|
||||
|
||||
export function init() {
|
||||
core.control.updateDamage = function (
|
||||
@ -58,7 +58,7 @@ function renderThumbnailDamage(col: EnemyCollection) {
|
||||
py: 32 * (v.y! + 1) - 1,
|
||||
color: color
|
||||
});
|
||||
const setting = Mota.require('var', 'mainSetting');
|
||||
const setting = Mota.require('@motajs/legacy-ui').mainSetting;
|
||||
const criGem = setting.getValue('screen.criticalGem', false);
|
||||
const n = critical?.atkDelta ?? Infinity;
|
||||
const ratio = core.status.maps[col.floorId].ratio;
|
||||
|
@ -40,7 +40,7 @@ export function removeMaps(
|
||||
deleted = true;
|
||||
}
|
||||
if (deleted && !main.replayChecking) {
|
||||
Mota.Plugin.require('fly_r').splitArea();
|
||||
Mota.require('@motajs/legacy-ui').splitArea();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,9 +1,11 @@
|
||||
import { HeroSkill } from '@/game/mechanism/misc';
|
||||
import { HeroSkill } from '@user/data-state';
|
||||
import {
|
||||
getSkillFromIndex,
|
||||
upgradeSkill
|
||||
} from '../../data-state/src/mechanism/skillTree';
|
||||
import { canOpenShop } from './shop';
|
||||
import { hook } from '@user/data-base';
|
||||
import { jumpSkill } from './skill';
|
||||
|
||||
const replayableSettings = ['autoSkill'];
|
||||
|
||||
@ -27,7 +29,7 @@ export function initReplay() {
|
||||
function tipAndWait(content: string, time: number) {
|
||||
const speed = core.status.replay.speed;
|
||||
if (main.replayChecking || speed === 24) return Promise.resolve();
|
||||
const { tip } = Mota.Plugin.require('utils_r');
|
||||
const { tip } = Mota.require('@motajs/legacy-ui');
|
||||
tip('info', '录像播放操作:' + content);
|
||||
return new Promise<void>(res => {
|
||||
setTimeout(res, time / speed);
|
||||
@ -78,7 +80,7 @@ export function initReplay() {
|
||||
let shopOpened = false;
|
||||
let openedShopId = '';
|
||||
|
||||
Mota.require('var', 'hook').on('reset', () => {
|
||||
hook.on('reset', () => {
|
||||
shopOpened = false;
|
||||
openedShopId = '';
|
||||
});
|
||||
@ -162,7 +164,7 @@ export function initReplay() {
|
||||
!core.status.floorId.startsWith('tower') &&
|
||||
HeroSkill.learnedSkill(HeroSkill.Jump)
|
||||
) {
|
||||
const success = Mota.Plugin.require('skill_g').jumpSkill();
|
||||
const success = jumpSkill();
|
||||
core.status.route.push(`useSkill:${toEmit}`);
|
||||
if (!success) core.replay();
|
||||
return true;
|
||||
|
@ -10,7 +10,7 @@ export function openShop(shopId: string, noRoute: boolean) {
|
||||
if (shop.item) {
|
||||
Mota.r(() => {
|
||||
if (!core.isReplaying()) {
|
||||
Mota.require('var', 'mainUi').open('shop', {
|
||||
Mota.require('@motajs/legacy-ui').mainUi.open('shop', {
|
||||
shopId: shopId
|
||||
});
|
||||
}
|
||||
|
@ -529,7 +529,7 @@ export function loadDefaultResource() {
|
||||
const res = LoadTask.add('byte', `byte/project/sounds/${v}`);
|
||||
Mota.r(() => {
|
||||
res.once('load', res => {
|
||||
const { soundPlayer } = Mota.require('module', 'Audio');
|
||||
const { soundPlayer } = Mota.require('@user/client-modules');
|
||||
soundPlayer.add(v, res.resource!);
|
||||
});
|
||||
});
|
||||
@ -548,7 +548,7 @@ export function loadDefaultResource() {
|
||||
const res = LoadTask.add('image', `image/project/autotiles/${v}.png`);
|
||||
res.once('load', res => {
|
||||
autotiles[v as AllIdsOf<'autotile'>] = res.resource;
|
||||
const loading = Mota.require('var', 'loading');
|
||||
const { loading } = Mota.require('@user/data-base');
|
||||
loading.addAutotileLoaded();
|
||||
loading.onAutotileLoaded(autotiles);
|
||||
core.material.images.autotile[v as AllIdsOf<'autotile'>] =
|
||||
@ -675,7 +675,7 @@ export async function loadCompressedResource() {
|
||||
autotiles[
|
||||
name.slice(0, -4) as AllIdsOf<'autotile'>
|
||||
] = image;
|
||||
const loading = Mota.require('var', 'loading');
|
||||
const { loading } = Mota.require('@user/data-base');
|
||||
loading.addAutotileLoaded();
|
||||
loading.onAutotileLoaded(autotiles);
|
||||
core.material.images.autotile[
|
||||
@ -717,8 +717,10 @@ export async function loadCompressedResource() {
|
||||
new FontFace(name.slice(0, -4), font)
|
||||
);
|
||||
} else if (usage === 'sound') {
|
||||
const { soundPlayer } = Mota.require('module', 'Audio');
|
||||
soundPlayer.add(v, value);
|
||||
const { soundPlayer } = Mota.require(
|
||||
'@user/client-modules'
|
||||
);
|
||||
soundPlayer.add(name as SoundIds, value as Uint8Array);
|
||||
} else if (usage === 'animate') {
|
||||
const ani = value as string;
|
||||
core.material.animates[
|
||||
|
@ -134,7 +134,7 @@ onMounted(() => {
|
||||
}
|
||||
drawer.drawMap();
|
||||
|
||||
const hook = Mota.require('var', 'hook');
|
||||
const { hook } = Mota.require('@user/data-base');
|
||||
hook.on('afterChangeFloor', onChange);
|
||||
hook.on('afterBattle', afterBattle);
|
||||
|
||||
@ -168,7 +168,7 @@ onMounted(() => {
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
const hook = Mota.require('var', 'hook');
|
||||
const { hook } = Mota.require('@user/data-base');
|
||||
hook.off('afterChangeFloor', onChange);
|
||||
hook.off('afterBattle', afterBattle);
|
||||
});
|
||||
|
2
packages/legacy-ui/src/fx/index.ts
Normal file
2
packages/legacy-ui/src/fx/index.ts
Normal file
@ -0,0 +1,2 @@
|
||||
export * from './shadow';
|
||||
export * from './webgl';
|
@ -75,7 +75,7 @@ function addLightFromBlock(
|
||||
});
|
||||
}
|
||||
|
||||
const hook = Mota.require('var', 'hook');
|
||||
const { hook } = Mota.require('@user/data-base');
|
||||
|
||||
hook.once('reset', () => {
|
||||
Shadow.init();
|
||||
@ -100,11 +100,9 @@ hook.once('reset', () => {
|
||||
},
|
||||
{ background: [0, 0, 0, 0.3] }
|
||||
);
|
||||
Mota.rewrite(core.control, 'loadData', 'add', () => {
|
||||
if (!main.replayChecking) {
|
||||
Shadow.update(true);
|
||||
LayerShadowExtends.shadowList.forEach(v => v.update());
|
||||
}
|
||||
hook.on('loadData', () => {
|
||||
Shadow.update(true);
|
||||
LayerShadowExtends.shadowList.forEach(v => v.update());
|
||||
});
|
||||
});
|
||||
hook.on('reset', () => {
|
||||
|
@ -4,6 +4,7 @@ export * as UI from './ui';
|
||||
export * as Components from './components';
|
||||
export * from './preset';
|
||||
export * from './tools';
|
||||
export * from './fx';
|
||||
|
||||
export * from './animateController';
|
||||
export * from './controller';
|
||||
|
@ -34,7 +34,7 @@ const marked: MarkInfo<EnemyIds>[] = [];
|
||||
*/
|
||||
export function markEnemy(id: EnemyIds) {
|
||||
if (hasMarkedEnemy(id)) return;
|
||||
const DamageEnemy = Mota.require('class', 'DamageEnemy');
|
||||
const { DamageEnemy, getHeroStatusOn } = Mota.require('@user/data-state');
|
||||
const enemy = new DamageEnemy(core.material.enemys[id]);
|
||||
enemy.calAttribute();
|
||||
enemy.getRealInfo();
|
||||
@ -43,7 +43,7 @@ export function markEnemy(id: EnemyIds) {
|
||||
id,
|
||||
enemy,
|
||||
mode: 0b011111,
|
||||
lastAtk: Mota.requireAll('fn').getHeroStatusOn('atk', 'empty'),
|
||||
lastAtk: getHeroStatusOn('atk', 'empty'),
|
||||
lastDamage: enemy.calDamage().damage,
|
||||
status: 0b0,
|
||||
update: ref(true)
|
||||
@ -65,7 +65,7 @@ export function unmarkEnemy(id: EnemyIds) {
|
||||
}
|
||||
|
||||
export function checkMarkedEnemy() {
|
||||
const { getHeroStatusOn } = Mota.requireAll('fn');
|
||||
const { getHeroStatusOn } = Mota.require('@user/data-state');
|
||||
marked.forEach(v => {
|
||||
const { id, enemy, mode, lastAtk, lastDamage, markDamage } = v;
|
||||
const atk = getHeroStatusOn('atk', 'empty');
|
||||
@ -158,7 +158,7 @@ export function hasMarkedEnemy(id: EnemyIds) {
|
||||
return marked.some(v => v.id === id);
|
||||
}
|
||||
|
||||
const hook = Mota.require('var', 'hook');
|
||||
const { hook } = Mota.require('@user/data-base');
|
||||
hook.on('statusBarUpdate', () => {
|
||||
checkMarkedEnemy();
|
||||
});
|
||||
|
@ -21,12 +21,14 @@ if (import.meta.env.DEV) {
|
||||
Danmaku.backend = `/danmaku`;
|
||||
}
|
||||
|
||||
Mota.require('var', 'hook').once('reset', () => {
|
||||
const { hook } = Mota.require('@user/data-base');
|
||||
|
||||
hook.once('reset', () => {
|
||||
Danmaku.fetch();
|
||||
});
|
||||
|
||||
// 勇士移动后显示弹幕
|
||||
Mota.require('var', 'hook').on('moveOneStep', (x, y, floor) => {
|
||||
hook.on('moveOneStep', (x, y, floor) => {
|
||||
const enabled = mainSetting.getValue('ui.danmaku', true);
|
||||
if (!enabled) return;
|
||||
const f = Danmaku.allInPos[floor];
|
||||
|
@ -37,7 +37,8 @@ const closeFixed = () => {
|
||||
// todo: 应当在这里实现查看临界与特殊属性的功能
|
||||
export let hovered: Block | null;
|
||||
|
||||
const { hook, gameListener } = Mota.requireAll('var');
|
||||
const { hook, gameListener } = Mota.require('@user/data-base');
|
||||
|
||||
gameListener.on('hoverBlock', block => {
|
||||
closeFixed();
|
||||
hovered = block;
|
||||
|
@ -535,7 +535,7 @@ gameKey
|
||||
core.actions._clickGameInfo_openComments();
|
||||
})
|
||||
.realize('skill1', () => {
|
||||
const HeroSkill = Mota.require('module', 'Mechanism').HeroSkill;
|
||||
const HeroSkill = Mota.require('@user/data-state').HeroSkill;
|
||||
if (!HeroSkill.learnedSkill(HeroSkill.Blade)) return;
|
||||
if (HeroSkill.getAutoSkill()) {
|
||||
tip('error', '已开启自动切换技能!');
|
||||
@ -547,13 +547,13 @@ gameKey
|
||||
core.updateStatusBar();
|
||||
})
|
||||
.realize('skill2', () => {
|
||||
const HeroSkill = Mota.require('module', 'Mechanism').HeroSkill;
|
||||
const HeroSkill = Mota.require('@user/data-state').HeroSkill;
|
||||
if (
|
||||
!flags.onChase &&
|
||||
!core.status.floorId.startsWith('tower') &&
|
||||
HeroSkill.learnedSkill(HeroSkill.Jump)
|
||||
) {
|
||||
Mota.Plugin.require('skill_g').jumpSkill();
|
||||
Mota.require('@user/legacy-plugin-data').jumpSkill();
|
||||
core.status.route.push('useSkill:Jump');
|
||||
} else {
|
||||
if (core.hasItem('pickaxe')) {
|
||||
@ -562,7 +562,7 @@ gameKey
|
||||
}
|
||||
})
|
||||
.realize('skill3', () => {
|
||||
const HeroSkill = Mota.require('module', 'Mechanism').HeroSkill;
|
||||
const HeroSkill = Mota.require('@user/data-state').HeroSkill;
|
||||
if (!HeroSkill.learnedSkill(HeroSkill.Shield)) return;
|
||||
if (HeroSkill.getAutoSkill()) {
|
||||
tip('error', '已开启自动切换技能!');
|
||||
|
@ -8,7 +8,6 @@ import {
|
||||
UI,
|
||||
UiController
|
||||
} from '@motajs/legacy-ui';
|
||||
import { bgmController, soundPlayer } from '@/module';
|
||||
import settingsText from '../data/settings.json';
|
||||
|
||||
//#region legacy-ui
|
||||
@ -47,7 +46,7 @@ fixedUi.register(
|
||||
);
|
||||
fixedUi.showAll();
|
||||
|
||||
const hook = Mota.require('var', 'hook');
|
||||
const { hook } = Mota.require('@user/data-base');
|
||||
hook.once('mounted', () => {
|
||||
const ui = document.getElementById('ui-main')!;
|
||||
const fixed = document.getElementById('ui-fixed')!;
|
||||
@ -143,7 +142,7 @@ function handleActionSetting<T extends number | boolean>(
|
||||
) {
|
||||
if (key === 'autoSkill') {
|
||||
// 自动切换技能
|
||||
const HeroSkill = Mota.require('module', 'Mechanism').HeroSkill;
|
||||
const HeroSkill = Mota.require('@user/data-state').HeroSkill;
|
||||
HeroSkill.setAutoSkill(n as boolean);
|
||||
core.status.route.push(`set:autoSkill:${n}`);
|
||||
}
|
||||
@ -154,6 +153,7 @@ function handleAudioSetting<T extends number | boolean>(
|
||||
n: T,
|
||||
_o: T
|
||||
) {
|
||||
const { bgmController, soundPlayer } = Mota.require('@user/client-modules');
|
||||
if (key === 'bgmEnabled') {
|
||||
bgmController.setEnabled(n as boolean);
|
||||
core.checkBgm();
|
||||
@ -261,7 +261,7 @@ mainSetting
|
||||
.register('tips', '小贴士', true, COM.Boolean)
|
||||
);
|
||||
|
||||
const loading = Mota.require('var', 'loading');
|
||||
const { loading } = Mota.require('@user/data-base');
|
||||
loading.once('coreInit', () => {
|
||||
mainSetting.reset({
|
||||
'screen.fullscreen': !!document.fullscreenElement,
|
||||
|
@ -61,7 +61,7 @@ export function getNowStatus(nowEquip?: Equip, onCol: boolean = false) {
|
||||
'hpmax',
|
||||
'money'
|
||||
] as (keyof SelectType<HeroStatus, number>)[];
|
||||
const { getHeroStatusOn } = Mota.requireAll('fn');
|
||||
const { getHeroStatusOn } = Mota.require('@user/data-state');
|
||||
|
||||
return (
|
||||
<div id="hero-status">
|
||||
|
@ -31,7 +31,7 @@ export function getDetailedEnemy(
|
||||
const special: [string, string, string][] = [...enemy.info.special]
|
||||
.filter(v => !enemy.info.specialHalo?.includes(v))
|
||||
.map(vv => {
|
||||
const s = Mota.require('var', 'enemySpecials')[vv];
|
||||
const s = Mota.require('@user/data-state').specials[vv];
|
||||
return [
|
||||
fromFunc(s.name, enemy.info),
|
||||
fromFunc(s.desc, enemy.info),
|
||||
|
@ -519,7 +519,7 @@ export class MinimapDrawer {
|
||||
ctx.textBaseline = 'middle';
|
||||
ctx.font = `3px "normal"`;
|
||||
ctx.strokeStyle = 'black';
|
||||
Mota.require('fn', 'ensureFloorDamage')(floorId);
|
||||
Mota.require('@user/data-state').ensureFloorDamage(floorId);
|
||||
ctx.fillStyle = 'rgba(0, 0, 0, 0.6)';
|
||||
ctx.fillRect(x - 6, y - 2, 12, 4);
|
||||
ctx.fillStyle = 'white';
|
||||
|
@ -107,6 +107,7 @@ import {
|
||||
} from '../tools/achievement';
|
||||
import Scroll from '../components/scroll.vue';
|
||||
import { isMobile } from '../use';
|
||||
import { mainUi } from '../preset';
|
||||
|
||||
const props = defineProps<{
|
||||
num: number;
|
||||
@ -176,7 +177,7 @@ function getAllAchievements(type: AchievementType): ResolvedAchievement[] {
|
||||
}
|
||||
|
||||
function exit() {
|
||||
Mota.require('var', 'mainUi').close(props.num);
|
||||
mainUi.close(props.num);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
@ -32,13 +32,13 @@
|
||||
import { onMounted, onUpdated, Ref, ref, watch } from 'vue';
|
||||
import Box from '../components/box.vue';
|
||||
import { GameUi } from '../controller';
|
||||
import type { DamageEnemy, EnemyInfo } from '@/game/enemy/damage';
|
||||
import { nextFrame } from '../utils';
|
||||
import { EnemyInfo, IDamageEnemy } from '@motajs/types';
|
||||
|
||||
const props = defineProps<{
|
||||
num: number;
|
||||
ui: GameUi;
|
||||
enemy: DamageEnemy;
|
||||
enemy: IDamageEnemy;
|
||||
close: Ref<boolean>;
|
||||
loc: [x: number, y: number];
|
||||
}>();
|
||||
@ -83,7 +83,7 @@ const special = (() => {
|
||||
};
|
||||
|
||||
const show = s.slice(0, 2).map(v => {
|
||||
const s = Mota.require('var', 'enemySpecials')[v];
|
||||
const s = Mota.require('@user/data-state').specials[v];
|
||||
return [fromFunc(s.name, enemy.info), s.color];
|
||||
});
|
||||
if (s.length > 2) show.push(['...', 'white']);
|
||||
|
@ -74,7 +74,7 @@ onMounted(async () => {
|
||||
core._afterLoadResources(props.callback);
|
||||
logger.log(`Resource load end.`);
|
||||
loadDiv.style.opacity = '0';
|
||||
Mota.require('var', 'loading').emit('loaded');
|
||||
Mota.require('@user/data-base').loading.emit('loaded');
|
||||
await sleep(1000);
|
||||
fixedUi.close(props.num);
|
||||
fixedUi.open('start');
|
||||
|
@ -87,32 +87,31 @@ import { sleep } from 'mutate-animate';
|
||||
import { gameKey } from '@motajs/system-action';
|
||||
import { GameUi } from '../controller';
|
||||
import { mainUi } from '../preset/ui';
|
||||
import type { Chapter } from '@/plugin/game/skillTree';
|
||||
|
||||
const props = defineProps<{
|
||||
num: number;
|
||||
ui: GameUi;
|
||||
}>();
|
||||
|
||||
const skillTree = Mota.Plugin.require('skillTree_g');
|
||||
const skillTree = Mota.require('@user/legacy-plugin-data');
|
||||
|
||||
let canvas: HTMLCanvasElement;
|
||||
let ctx: CanvasRenderingContext2D;
|
||||
|
||||
const selected = ref(0);
|
||||
const chapter = ref<Chapter>('chapter1');
|
||||
const update = ref(false);
|
||||
|
||||
const chapterDict = {
|
||||
chapter1: '第一章',
|
||||
chapter2: '第二章'
|
||||
};
|
||||
|
||||
const selected = ref(0);
|
||||
const chapter = ref<keyof typeof chapterDict>('chapter1');
|
||||
const update = ref(false);
|
||||
|
||||
flags.skillTree ??= 0;
|
||||
|
||||
const s = Mota.Plugin.require('skillTree_g').skills;
|
||||
const s = skillTree.skills;
|
||||
|
||||
const chapterList = Object.keys(s) as Chapter[];
|
||||
const chapterList = Object.keys(s) as (keyof typeof chapterDict)[];
|
||||
|
||||
selected.value = s[chapterList[flags.skillTree]][0].index;
|
||||
chapter.value = chapterList[flags.skillTree];
|
||||
|
@ -72,8 +72,6 @@ import { gameKey } from '@motajs/system-action';
|
||||
import { mainUi } from '../preset/ui';
|
||||
import { mainSetting } from '../preset/ui';
|
||||
import { mat4 } from 'gl-matrix';
|
||||
// todo: 改了
|
||||
import { bgmController } from '@/module';
|
||||
|
||||
const props = defineProps<{
|
||||
num: number;
|
||||
@ -90,7 +88,7 @@ let background: HTMLImageElement;
|
||||
|
||||
let buttons: HTMLSpanElement[] = [];
|
||||
|
||||
let played: boolean;
|
||||
let played: boolean = false;
|
||||
const soundChecked = ref(false);
|
||||
const fullscreen = ref(!!document.fullscreenElement);
|
||||
|
||||
@ -327,6 +325,7 @@ onMounted(async () => {
|
||||
resize();
|
||||
|
||||
soundChecked.value = mainSetting.getValue('audio.bgmEnabled', true);
|
||||
const { bgmController } = Mota.require('@user/client-modules');
|
||||
bgmController.play('title.opus');
|
||||
|
||||
start.style.opacity = '1';
|
||||
@ -425,8 +424,7 @@ onUnmounted(() => {
|
||||
);
|
||||
background-clip: text;
|
||||
-webkit-background-clip: text;
|
||||
text-shadow:
|
||||
1px 1px 4px rgba(0, 0, 0, 0.5),
|
||||
text-shadow: 1px 1px 4px rgba(0, 0, 0, 0.5),
|
||||
-1px -1px 3px rgba(255, 255, 255, 0.3),
|
||||
5px 5px 5px rgba(0, 0, 0, 0.4);
|
||||
filter: brightness(1.8);
|
||||
@ -449,17 +447,14 @@ onUnmounted(() => {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
animation: cursor 2.5s linear 0s infinite normal running;
|
||||
transition:
|
||||
left 0.4s ease-out,
|
||||
top 0.4s ease-out,
|
||||
transition: left 0.4s ease-out, top 0.4s ease-out,
|
||||
opacity 1.5s ease-out;
|
||||
}
|
||||
|
||||
.start-button {
|
||||
position: relative;
|
||||
font: bold 1.5em 'normal';
|
||||
text-shadow:
|
||||
1px 1px 2px rgba(0, 0, 0, 0.4),
|
||||
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.4),
|
||||
0px 0px 1px rgba(255, 255, 255, 0.3);
|
||||
background-clip: text;
|
||||
-webkit-background-clip: text;
|
||||
|
@ -359,8 +359,7 @@ export function spliceBy<T>(arr: T[], from: T): T[] {
|
||||
}
|
||||
|
||||
export async function triggerFullscreen(full: boolean) {
|
||||
if (!Mota.Plugin.inited) return;
|
||||
const { maxGameScale } = Mota.Plugin.require('utils_g');
|
||||
const { maxGameScale } = Mota.require('@user/data-utils');
|
||||
if (!!document.fullscreenElement && !full) {
|
||||
if (window.jsinterface) {
|
||||
window.jsinterface.requestPortrait();
|
||||
@ -472,10 +471,10 @@ export function formatSize(size: number) {
|
||||
return size < 1 << 10
|
||||
? `${size.toFixed(2)}B`
|
||||
: size < 1 << 20
|
||||
? `${(size / (1 << 10)).toFixed(2)}KB`
|
||||
: size < 1 << 30
|
||||
? `${(size / (1 << 20)).toFixed(2)}MB`
|
||||
: `${(size / (1 << 30)).toFixed(2)}GB`;
|
||||
? `${(size / (1 << 10)).toFixed(2)}KB`
|
||||
: size < 1 << 30
|
||||
? `${(size / (1 << 20)).toFixed(2)}MB`
|
||||
: `${(size / (1 << 30)).toFixed(2)}GB`;
|
||||
}
|
||||
|
||||
let num = 0;
|
||||
|
@ -14,7 +14,8 @@ const i = (img: ImageMapKeys) => {
|
||||
|
||||
const imageMap: Partial<ImageMap> = {};
|
||||
|
||||
Mota.require('var', 'loading').once('loaded', () => {
|
||||
const { loading } = Mota.require('@user/data-base');
|
||||
loading.once('loaded', () => {
|
||||
[
|
||||
'enemys',
|
||||
'enemy48',
|
||||
@ -91,7 +92,7 @@ class TextureCache {
|
||||
constructor() {
|
||||
this.material = imageMap as Record<ImageMapKeys, HTMLImageElement>;
|
||||
|
||||
Mota.require('var', 'loading').once('loaded', () => {
|
||||
loading.once('loaded', () => {
|
||||
const map = maps_90f36752_8815_4be8_b32b_d7fad1d0542e;
|
||||
// @ts-expect-error 无法推导
|
||||
this.idNumberMap = {};
|
||||
|
@ -11,7 +11,7 @@ import { texture } from './cache';
|
||||
import { sleep } from 'mutate-animate';
|
||||
import { RenderAdapter } from '@motajs/render-core';
|
||||
|
||||
const hook = Mota.require('var', 'hook');
|
||||
const { hook } = Mota.require('@user/data-base');
|
||||
|
||||
hook.on('setBlock', (x, y, floor, block) => {
|
||||
const isNow = floor === core.status.floorId;
|
||||
|
@ -39,7 +39,7 @@ class RenderEmits extends EventEmitter<RenderEvent> {
|
||||
|
||||
export const renderEmits = new RenderEmits();
|
||||
|
||||
Mota.require('var', 'hook').once('reset', () => {
|
||||
Mota.require('@user/data-base').hook.once('reset', () => {
|
||||
let lastTime = 0;
|
||||
RenderItem.ticker.add(time => {
|
||||
if (!core.isPlaying()) return;
|
||||
|
@ -2,7 +2,6 @@ export * from './animate';
|
||||
export * from './block';
|
||||
export * from './cache';
|
||||
export * from './camera';
|
||||
export * from './damage';
|
||||
export * from './floor';
|
||||
export * from './frame';
|
||||
export * from './graphics';
|
||||
|
@ -292,7 +292,7 @@ export class Icon extends RenderItem<EIconEvent> implements IAnimateFrame {
|
||||
}
|
||||
const num = typeof id === 'number' ? id : texture.idNumberMap[id];
|
||||
|
||||
const loading = Mota.require('var', 'loading');
|
||||
const { loading } = Mota.require('@user/data-base');
|
||||
if (loading.loaded) {
|
||||
this.setIconRenderable(num);
|
||||
} else {
|
||||
@ -500,7 +500,7 @@ export class Winskin extends RenderItem<EWinskinEvent> {
|
||||
* @param name 图片名称
|
||||
*/
|
||||
setImageByName(name: ImageIds) {
|
||||
const loading = Mota.require('var', 'loading');
|
||||
const { loading } = Mota.require('@user/data-base');
|
||||
if (loading.loaded) {
|
||||
const image = core.material.images.images[name];
|
||||
this.setImage(image);
|
||||
|
@ -346,7 +346,7 @@ adapter.receiveSync('endMove', item => {
|
||||
item.endMove();
|
||||
});
|
||||
|
||||
const hook = Mota.require('var', 'hook');
|
||||
const { hook } = Mota.require('@user/data-base');
|
||||
hook.on('changingFloor', (_, loc) => {
|
||||
adapter.all('setPosition', loc.x, loc.y);
|
||||
});
|
||||
|
@ -47,7 +47,6 @@ import {
|
||||
ELayerEvent,
|
||||
ELayerGroupEvent,
|
||||
EAnimateEvent,
|
||||
EDamageEvent,
|
||||
EGraphicItemEvent
|
||||
} from '@motajs/render-elements';
|
||||
|
||||
@ -100,7 +99,7 @@ declare module 'vue/jsx-runtime' {
|
||||
custom: TagDefine<CustomProps, ERenderItemEvent>;
|
||||
layer: TagDefine<LayerProps, ELayerEvent>;
|
||||
'layer-group': TagDefine<LayerGroupProps, ELayerGroupEvent>;
|
||||
damage: TagDefine<DamageProps, EDamageEvent>;
|
||||
damage: TagDefine<DamageProps, ERenderItemEvent>;
|
||||
animation: TagDefine<AnimateProps, EAnimateEvent>;
|
||||
'g-rect': TagDefine<RectProps, EGraphicItemEvent>;
|
||||
'g-circle': TagDefine<CirclesProps, EGraphicItemEvent>;
|
||||
|
@ -17,8 +17,6 @@ import {
|
||||
Text,
|
||||
Winskin,
|
||||
Animate,
|
||||
Damage,
|
||||
EDamageEvent,
|
||||
Layer,
|
||||
LayerGroup,
|
||||
BezierCurve,
|
||||
@ -236,9 +234,6 @@ tagMap.register('layer-group', (_0, _1, props) => {
|
||||
return l;
|
||||
}
|
||||
});
|
||||
tagMap.register<EDamageEvent, Damage>('damage', (_0, _1, _props) => {
|
||||
return new Damage();
|
||||
});
|
||||
tagMap.register('animation', (_0, _1, _props) => {
|
||||
return new Animate();
|
||||
});
|
||||
|
@ -1,3 +1,5 @@
|
||||
import EventEmitter from 'eventemitter3';
|
||||
|
||||
export interface EnemyInfo extends Partial<Omit<Enemy, 'special'>> {
|
||||
atk: number;
|
||||
def: number;
|
||||
@ -133,7 +135,12 @@ export interface IDamageEnemy {
|
||||
getSeckillAtk(): number;
|
||||
}
|
||||
|
||||
export interface IEnemyCollection {
|
||||
export interface IEnemyCollectionEvent {
|
||||
calculated: [];
|
||||
extract: [];
|
||||
}
|
||||
|
||||
export interface IEnemyCollection extends EventEmitter<IEnemyCollectionEvent> {
|
||||
/** 这个怪物集的地图 id */
|
||||
readonly floorId: FloorIds;
|
||||
/** 地图宽度 */
|
||||
|
@ -1,4 +1,4 @@
|
||||
///<reference path="../../src/types/core.d.ts" />
|
||||
///<reference path="../../types/declaration/core.d.ts" />
|
||||
|
||||
var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
events: {
|
||||
@ -395,6 +395,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Mota.require('@user/data-base').hook.emit('loadData');
|
||||
},
|
||||
updateStatusBar: function () {
|
||||
// 检查等级
|
||||
|
@ -29,7 +29,7 @@ import { onMounted } from 'vue';
|
||||
import { mainUi, fixedUi } from '@motajs/legacy-ui';
|
||||
|
||||
onMounted(() => {
|
||||
const { hook } = Mota.requireAll('var');
|
||||
const { hook } = Mota.require('@user/data-base');
|
||||
hook.emit('mounted');
|
||||
});
|
||||
|
||||
|
@ -17,7 +17,6 @@
|
||||
"noEmit": true,
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@/*": ["src/*"],
|
||||
"@motajs/*": ["packages/*/src"],
|
||||
"@user/*": ["packages-user/*/src"]
|
||||
}
|
||||
|
@ -51,15 +51,7 @@ export default defineConfig({
|
||||
base: `./`,
|
||||
resolve: {
|
||||
alias: [
|
||||
...aliases,
|
||||
{
|
||||
find: '@',
|
||||
replacement: resolve(__dirname, './src')
|
||||
},
|
||||
{
|
||||
find: '@ui',
|
||||
replacement: resolve(__dirname, './src/ui')
|
||||
}
|
||||
...aliases
|
||||
]
|
||||
},
|
||||
build: {
|
||||
|
Loading…
Reference in New Issue
Block a user