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