mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-07-19 03:41:47 +08:00
Compare commits
6 Commits
583df29f38
...
7cd4469f2f
Author | SHA1 | Date | |
---|---|---|---|
7cd4469f2f | |||
b78b4bf528 | |||
fcfa40151b | |||
1522173be3 | |||
84d93422f7 | |||
a7cdf2c69b |
@ -62,7 +62,7 @@
|
||||
"compressing": "^1.10.1",
|
||||
"concurrently": "^9.1.2",
|
||||
"eslint": "^9.22.0",
|
||||
"eslint-plugin-prettier": "^5.2.3",
|
||||
"eslint-plugin-prettier": "^5.5.0",
|
||||
"eslint-plugin-vue": "^9.33.0",
|
||||
"fontmin": "^0.9.9",
|
||||
"form-data": "^4.0.2",
|
||||
@ -74,6 +74,7 @@
|
||||
"markdown-it-mathjax3": "^4.3.2",
|
||||
"mermaid": "^11.5.0",
|
||||
"postcss-preset-env": "^9.6.0",
|
||||
"prettier": "^3.5.3",
|
||||
"rollup": "^3.29.5",
|
||||
"terser": "^5.39.0",
|
||||
"tsx": "^4.19.3",
|
||||
|
@ -2,8 +2,6 @@ import { KeyCode } from '@motajs/client-base';
|
||||
import { gameKey, HotkeyJSON } from '@motajs/system-action';
|
||||
import { hovered, mainUi, tip, openDanmakuPoster } from '@motajs/legacy-ui';
|
||||
import { GameStorage } from '@motajs/legacy-system';
|
||||
import { openStatistics } from '../render/ui/statistics';
|
||||
import { mainUIController } from '../render';
|
||||
|
||||
export const mainScope = Symbol.for('@key_main');
|
||||
|
||||
@ -487,9 +485,6 @@ gameKey
|
||||
.realize('book', () => {
|
||||
core.openBook(true);
|
||||
})
|
||||
.realize('save', () => {
|
||||
core.save(true);
|
||||
})
|
||||
.realize('load', () => {
|
||||
core.load(true);
|
||||
})
|
||||
@ -511,9 +506,6 @@ gameKey
|
||||
.realize('shop', () => {
|
||||
core.openQuickShop(true);
|
||||
})
|
||||
.realize('statistics', () => {
|
||||
openStatistics(mainUIController);
|
||||
})
|
||||
.realize('viewMap', () => {
|
||||
core.ui._drawViewMaps();
|
||||
})
|
||||
|
@ -17,5 +17,4 @@ export * from './audio';
|
||||
export * from './fallback';
|
||||
export * from './loader';
|
||||
export * from './render';
|
||||
export * from './utils';
|
||||
export * from './weather';
|
||||
|
13
packages-user/client-modules/src/render/action.ts
Normal file
13
packages-user/client-modules/src/render/action.ts
Normal file
@ -0,0 +1,13 @@
|
||||
import { gameKey } from '@motajs/system-action';
|
||||
import { MAIN_WIDTH, MAIN_HEIGHT } from './shared';
|
||||
import { saveSave, mainUIController, openStatistics } from './ui';
|
||||
|
||||
export function createAction() {
|
||||
gameKey
|
||||
.realize('save', () => {
|
||||
saveSave(mainUIController, [0, 0, MAIN_WIDTH, MAIN_HEIGHT]);
|
||||
})
|
||||
.realize('statistics', () => {
|
||||
openStatistics(mainUIController);
|
||||
});
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
import {
|
||||
ElementLocator,
|
||||
MotaOffscreenCanvas2D,
|
||||
Sprite
|
||||
} from '@motajs/render-core';
|
||||
import { SpriteProps } from '@motajs/render-vue';
|
||||
import { defineComponent, ref, watch } from 'vue';
|
||||
|
||||
export interface ThumbnailProps extends SpriteProps {
|
||||
loc: ElementLocator;
|
||||
padStyle: CanvasStyle;
|
||||
floorId: FloorIds;
|
||||
map?: Block[];
|
||||
hero?: HeroStatus;
|
||||
// configs
|
||||
damage?: boolean;
|
||||
all?: boolean;
|
||||
}
|
||||
|
||||
export const Thumbnail = defineComponent<ThumbnailProps>(props => {
|
||||
const spriteRef = ref<Sprite>();
|
||||
|
||||
const update = () => {
|
||||
spriteRef.value?.update();
|
||||
};
|
||||
|
||||
const drawThumbnail = (canvas: MotaOffscreenCanvas2D) => {
|
||||
const hero = props.hero;
|
||||
const options: Partial<DrawThumbnailConfig> = {
|
||||
damage: props.damage,
|
||||
ctx: canvas.ctx,
|
||||
x: 0,
|
||||
y: 0,
|
||||
size: 1,
|
||||
all: props.all,
|
||||
noHD: false,
|
||||
v2: true,
|
||||
inFlyMap: false
|
||||
};
|
||||
if (hero) {
|
||||
options.heroLoc = hero.loc;
|
||||
options.heroIcon = hero.image;
|
||||
options.flags = hero.flags;
|
||||
options.centerX = hero.loc.x;
|
||||
options.centerY = hero.loc.y;
|
||||
}
|
||||
core.drawThumbnail(props.floorId, props.map, options);
|
||||
};
|
||||
|
||||
watch(props, update);
|
||||
|
||||
return () => (
|
||||
<sprite ref={spriteRef} loc={props.loc} render={drawThumbnail} />
|
||||
);
|
||||
});
|
@ -5,12 +5,14 @@ import { createLayer, Layer, LayerGroup } from './layer';
|
||||
import { createViewport } from './viewport';
|
||||
import { Icon, Winskin } from './misc';
|
||||
import { Animate } from './animate';
|
||||
import { createItemDetail } from './itemDetail';
|
||||
|
||||
export function createElements() {
|
||||
createCache();
|
||||
createFrame();
|
||||
createLayer();
|
||||
createViewport();
|
||||
createItemDetail();
|
||||
|
||||
// ----- 注册标签
|
||||
|
||||
|
@ -3,7 +3,11 @@ import { mainSetting } from '@motajs/legacy-ui';
|
||||
import { hook } from '@user/data-base';
|
||||
import { ItemState } from '@user/data-state';
|
||||
import { Damage, DamageRenderable, FloorDamageExtends } from './damage';
|
||||
import { ILayerGroupRenderExtends, LayerGroup, LayerGroupFloorBinder } from '.';
|
||||
import {
|
||||
ILayerGroupRenderExtends,
|
||||
LayerGroup,
|
||||
LayerGroupFloorBinder
|
||||
} from './layer';
|
||||
|
||||
interface ItemDetailData {
|
||||
x: number;
|
||||
|
@ -4,12 +4,12 @@ import { UIController } from '@motajs/system-ui';
|
||||
import { mainSceneUI } from './ui/main';
|
||||
import { MAIN_HEIGHT, MAIN_WIDTH } from './shared';
|
||||
import { hook } from '@user/data-base';
|
||||
import { createItemDetail } from './elements/itemDetail';
|
||||
import { createLoopMap } from './loopMap';
|
||||
import { createGameCanvas } from './legacy/gameCanvas';
|
||||
import { createElements } from './elements';
|
||||
import { mainRenderer } from './renderer';
|
||||
import { createUI } from './ui';
|
||||
import { createAction } from './action';
|
||||
import { createLegacy } from './legacy';
|
||||
|
||||
export function createGameRenderer() {
|
||||
const App = defineComponent(_props => {
|
||||
@ -38,16 +38,17 @@ export function createGameRenderer() {
|
||||
}
|
||||
|
||||
export function createRender() {
|
||||
createUI();
|
||||
createGameCanvas();
|
||||
createItemDetail();
|
||||
createLoopMap();
|
||||
createElements();
|
||||
createLegacy();
|
||||
createUI();
|
||||
createAction();
|
||||
createLoopMap();
|
||||
}
|
||||
|
||||
export * from './components';
|
||||
export * from './elements';
|
||||
export * from './ui';
|
||||
export * from './utils';
|
||||
export * from './renderer';
|
||||
export * from './shared';
|
||||
export * from './use';
|
||||
|
7
packages-user/client-modules/src/render/legacy/index.ts
Normal file
7
packages-user/client-modules/src/render/legacy/index.ts
Normal file
@ -0,0 +1,7 @@
|
||||
import { createGameCanvas } from './gameCanvas';
|
||||
import { createShadow } from './shadow';
|
||||
|
||||
export function createLegacy() {
|
||||
createGameCanvas();
|
||||
createShadow();
|
||||
}
|
@ -1,8 +1,12 @@
|
||||
import { mat4 } from 'gl-matrix';
|
||||
import { logger } from '@motajs/common';
|
||||
import { WebGLColorArray, createProgram, isWebGL2Supported } from './webgl';
|
||||
import {
|
||||
WebGLColorArray,
|
||||
createProgram,
|
||||
isWebGL2Supported
|
||||
} from '@motajs/legacy-ui';
|
||||
import { Sprite } from '@motajs/render';
|
||||
import { ILayerRenderExtends, Layer, HeroRenderer } from '@user/client-modules';
|
||||
import { ILayerRenderExtends, Layer, HeroRenderer } from '../elements';
|
||||
|
||||
/**
|
||||
* 最大光源数量,必须设置,且光源数不能超过这个值,这个值决定了会预留多少的缓冲区,因此最好尽可能小,同时游戏过程中不可修改
|
@ -1,4 +1,4 @@
|
||||
import { LayerShadowExtends } from '@motajs/legacy-ui';
|
||||
import { LayerShadowExtends } from '../legacy/shadow';
|
||||
import { Props, Font } from '@motajs/render';
|
||||
import { WeatherController } from '../../weather';
|
||||
import { defineComponent, onMounted, reactive, ref } from 'vue';
|
||||
|
@ -25,9 +25,9 @@ export interface SaveBtnProps extends DefaultProps {
|
||||
|
||||
export type SaveEmits = {
|
||||
/** 点击存档时触发 */
|
||||
emit: (index: number) => void;
|
||||
emit: (index: number, exist: boolean) => void;
|
||||
/** 删除存档时触发 */
|
||||
delete: (index: number) => void;
|
||||
delete: (index: number, exist: boolean) => void;
|
||||
/** 手动点击退出时触发 */
|
||||
exit: () => void;
|
||||
};
|
||||
@ -289,6 +289,11 @@ export interface SaveValidation {
|
||||
readonly message: string;
|
||||
}
|
||||
|
||||
export type SaveValidationFunction = (
|
||||
index: number,
|
||||
exist: boolean
|
||||
) => SaveValidation;
|
||||
|
||||
/**
|
||||
* 打开存读档界面并让用户选择一个存档。如果用户手动关闭了存档界面,返回 -2,否则返回用户选择的存档索引。
|
||||
* 参数参考 {@link SaveProps},事件不可自定义。
|
||||
@ -312,20 +317,20 @@ export interface SaveValidation {
|
||||
export function selectSave(
|
||||
controller: IUIMountable,
|
||||
loc: ElementLocator,
|
||||
validate?: (index: number) => SaveValidation,
|
||||
validate?: SaveValidationFunction,
|
||||
props?: SaveProps
|
||||
) {
|
||||
return new Promise<number>(res => {
|
||||
const instance = controller.open(SaveUI, {
|
||||
loc,
|
||||
...props,
|
||||
onEmit: (index: number) => {
|
||||
onEmit: (index: number, exist: boolean) => {
|
||||
if (!validate) {
|
||||
controller.close(instance);
|
||||
res(index);
|
||||
return;
|
||||
}
|
||||
const validation = validate(index);
|
||||
const validation = validate(index, exist);
|
||||
if (validation.valid) {
|
||||
controller.close(instance);
|
||||
res(index);
|
||||
@ -339,3 +344,37 @@ export function selectSave(
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export async function saveSave(
|
||||
controller: IUIMountable,
|
||||
loc: ElementLocator,
|
||||
props?: SaveProps
|
||||
) {
|
||||
const validate = (index: number): SaveValidation => {
|
||||
if (index === -1) {
|
||||
return { message: '不能存档至自动存档!', valid: false };
|
||||
} else {
|
||||
return { message: '', valid: true };
|
||||
}
|
||||
};
|
||||
const index = await selectSave(controller, loc, validate, props);
|
||||
if (index === -2) return;
|
||||
core.doSL(index, 'save');
|
||||
}
|
||||
|
||||
export async function saveLoad(
|
||||
controller: IUIMountable,
|
||||
loc: ElementLocator,
|
||||
props?: SaveProps
|
||||
) {
|
||||
const validate = (_: number, exist: boolean): SaveValidation => {
|
||||
return { message: '无效的存档!', valid: exist };
|
||||
};
|
||||
const index = await selectSave(controller, loc, validate, props);
|
||||
if (index === -2) return;
|
||||
if (index === -1) {
|
||||
core.doSL('autosave', 'load');
|
||||
} else {
|
||||
core.doSL(index, 'load');
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,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, syncFromServer } from '../../utils';
|
||||
import { getAllSavesData, getSaveData, syncFromServer } from '../utils';
|
||||
import { getInput } from '../components/input';
|
||||
import { openStatistics } from './statistics';
|
||||
|
||||
|
@ -21,8 +21,8 @@ import { KeyCode } from '@motajs/client-base';
|
||||
import { Progress } from '../components/misc';
|
||||
import { generateBinary } from '@motajs/legacy-common';
|
||||
import { SetupComponentOptions } from '@motajs/system-ui';
|
||||
import { SaveUI } from './save';
|
||||
import { mainUIController } from '@user/client-modules';
|
||||
import { saveSave } from './save';
|
||||
import { mainUIController } from './controller';
|
||||
import { MAIN_WIDTH, MAIN_HEIGHT } from '../shared';
|
||||
|
||||
interface ToolbarProps extends DefaultProps {
|
||||
@ -87,8 +87,8 @@ export const PlayingToolbar = defineComponent<
|
||||
const book = () => core.openBook(true);
|
||||
const tool = () => core.openToolbox(true);
|
||||
const fly = () => core.useFly(true);
|
||||
const save = async () => {
|
||||
mainUIController.open(SaveUI, { loc: [0, 0, MAIN_WIDTH, MAIN_HEIGHT] });
|
||||
const save = () => {
|
||||
saveSave(mainUIController, [0, 0, MAIN_WIDTH, MAIN_HEIGHT]);
|
||||
};
|
||||
const load = () => core.load(true);
|
||||
const equip = () => core.openEquipbox(true);
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { compressToBase64, decompressFromBase64 } from 'lz-string';
|
||||
import { getConfirm, waitbox } from '../render';
|
||||
import { getConfirm, waitbox } from '../components';
|
||||
import { IUIMountable } from '@motajs/system-ui';
|
||||
import { SyncSaveFromServerResponse } from '@motajs/client-base';
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { onUnmounted } from 'vue';
|
||||
import { WeatherController } from '../weather';
|
||||
import { WeatherController } from '../../weather';
|
||||
|
||||
let weatherId = 0;
|
||||
|
@ -1,3 +1,5 @@
|
||||
// todo: 2.C
|
||||
|
||||
export interface IEnemyInfo {}
|
||||
|
||||
export interface IDamageInfo {}
|
||||
|
@ -1,8 +1 @@
|
||||
import { createShadow } from './shadow';
|
||||
|
||||
export function createFx() {
|
||||
createShadow();
|
||||
}
|
||||
|
||||
export * from './shadow';
|
||||
export * from './webgl';
|
||||
|
@ -1,8 +1,6 @@
|
||||
import { createFx } from './fx';
|
||||
import { createPreset } from './preset';
|
||||
|
||||
export function create() {
|
||||
createFx();
|
||||
createPreset();
|
||||
}
|
||||
|
||||
|
263
pnpm-lock.yaml
263
pnpm-lock.yaml
@ -10,7 +10,7 @@ importers:
|
||||
dependencies:
|
||||
'@ant-design/icons-vue':
|
||||
specifier: ^6.1.0
|
||||
version: 6.1.0(vue@3.5.16(typescript@5.8.3))
|
||||
version: 6.1.0(vue@3.5.17(typescript@5.8.3))
|
||||
'@wasm-audio-decoders/ogg-vorbis':
|
||||
specifier: ^0.1.16
|
||||
version: 0.1.18
|
||||
@ -19,7 +19,7 @@ importers:
|
||||
version: 0.0.0-alpha.0
|
||||
ant-design-vue:
|
||||
specifier: ^3.2.20
|
||||
version: 3.2.20(vue@3.5.16(typescript@5.8.3))
|
||||
version: 3.2.20(vue@3.5.17(typescript@5.8.3))
|
||||
axios:
|
||||
specifier: ^1.8.4
|
||||
version: 1.10.0
|
||||
@ -55,7 +55,7 @@ importers:
|
||||
version: 0.7.10
|
||||
vue:
|
||||
specifier: ^3.5.13
|
||||
version: 3.5.16(typescript@5.8.3)
|
||||
version: 3.5.17(typescript@5.8.3)
|
||||
devDependencies:
|
||||
'@babel/cli':
|
||||
specifier: ^7.26.4
|
||||
@ -110,13 +110,13 @@ importers:
|
||||
version: 8.18.1
|
||||
'@vitejs/plugin-legacy':
|
||||
specifier: ^6.0.2
|
||||
version: 6.1.1(terser@5.43.0)(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)(tsx@4.20.3))
|
||||
version: 6.1.1(terser@5.43.1)(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)(tsx@4.20.3))
|
||||
'@vitejs/plugin-vue':
|
||||
specifier: ^5.2.3
|
||||
version: 5.2.4(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)(tsx@4.20.3))(vue@3.5.16(typescript@5.8.3))
|
||||
version: 5.2.4(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)(tsx@4.20.3))(vue@3.5.17(typescript@5.8.3))
|
||||
'@vitejs/plugin-vue-jsx':
|
||||
specifier: ^4.1.2
|
||||
version: 4.2.0(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)(tsx@4.20.3))(vue@3.5.16(typescript@5.8.3))
|
||||
version: 4.2.0(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)(tsx@4.20.3))(vue@3.5.17(typescript@5.8.3))
|
||||
chokidar:
|
||||
specifier: ^3.6.0
|
||||
version: 3.6.0
|
||||
@ -130,8 +130,8 @@ importers:
|
||||
specifier: ^9.22.0
|
||||
version: 9.29.0
|
||||
eslint-plugin-prettier:
|
||||
specifier: ^5.2.3
|
||||
version: 5.5.0(eslint-config-prettier@9.1.0(eslint@9.29.0))(eslint@9.29.0)(prettier@3.4.2)
|
||||
specifier: ^5.5.0
|
||||
version: 5.5.0(eslint-config-prettier@9.1.0(eslint@9.29.0))(eslint@9.29.0)(prettier@3.5.3)
|
||||
eslint-plugin-vue:
|
||||
specifier: ^9.33.0
|
||||
version: 9.33.0(eslint@9.29.0)
|
||||
@ -161,16 +161,19 @@ importers:
|
||||
version: 4.3.2(encoding@0.1.13)
|
||||
mermaid:
|
||||
specifier: ^11.5.0
|
||||
version: 11.6.0
|
||||
version: 11.7.0
|
||||
postcss-preset-env:
|
||||
specifier: ^9.6.0
|
||||
version: 9.6.0(postcss@8.5.3)
|
||||
prettier:
|
||||
specifier: ^3.5.3
|
||||
version: 3.5.3
|
||||
rollup:
|
||||
specifier: ^3.29.5
|
||||
version: 3.29.5
|
||||
terser:
|
||||
specifier: ^5.39.0
|
||||
version: 5.43.0
|
||||
version: 5.43.1
|
||||
tsx:
|
||||
specifier: ^4.19.3
|
||||
version: 4.20.3
|
||||
@ -182,19 +185,19 @@ importers:
|
||||
version: 8.34.1(eslint@9.29.0)(typescript@5.8.3)
|
||||
unplugin-vue-components:
|
||||
specifier: ^0.22.12
|
||||
version: 0.22.12(@babel/parser@7.27.5)(rollup@3.29.5)(vue@3.5.16(typescript@5.8.3))
|
||||
version: 0.22.12(@babel/parser@7.27.5)(rollup@3.29.5)(vue@3.5.17(typescript@5.8.3))
|
||||
vite:
|
||||
specifier: ^6.2.2
|
||||
version: 6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)(tsx@4.20.3)
|
||||
version: 6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)(tsx@4.20.3)
|
||||
vite-plugin-dts:
|
||||
specifier: ^4.5.4
|
||||
version: 4.5.4(@types/node@18.19.112)(rollup@3.29.5)(typescript@5.8.3)(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)(tsx@4.20.3))
|
||||
version: 4.5.4(@types/node@18.19.112)(rollup@3.29.5)(typescript@5.8.3)(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)(tsx@4.20.3))
|
||||
vitepress:
|
||||
specifier: ^1.6.3
|
||||
version: 1.6.3(@algolia/client-search@5.21.0)(@types/node@18.19.112)(async-validator@4.2.5)(axios@1.10.0)(less@4.3.0)(markdown-it-mathjax3@4.3.2(encoding@0.1.13))(postcss@8.5.3)(search-insights@2.17.3)(terser@5.43.0)(typescript@5.8.3)
|
||||
version: 1.6.3(@algolia/client-search@5.21.0)(@types/node@18.19.112)(async-validator@4.2.5)(axios@1.10.0)(less@4.3.0)(markdown-it-mathjax3@4.3.2(encoding@0.1.13))(postcss@8.5.3)(search-insights@2.17.3)(terser@5.43.1)(typescript@5.8.3)
|
||||
vitepress-plugin-mermaid:
|
||||
specifier: ^2.0.17
|
||||
version: 2.0.17(mermaid@11.6.0)(vitepress@1.6.3(@algolia/client-search@5.21.0)(@types/node@18.19.112)(async-validator@4.2.5)(axios@1.10.0)(less@4.3.0)(markdown-it-mathjax3@4.3.2(encoding@0.1.13))(postcss@8.5.3)(search-insights@2.17.3)(terser@5.43.0)(typescript@5.8.3))
|
||||
version: 2.0.17(mermaid@11.7.0)(vitepress@1.6.3(@algolia/client-search@5.21.0)(@types/node@18.19.112)(async-validator@4.2.5)(axios@1.10.0)(less@4.3.0)(markdown-it-mathjax3@4.3.2(encoding@0.1.13))(postcss@8.5.3)(search-insights@2.17.3)(terser@5.43.1)(typescript@5.8.3))
|
||||
vue-tsc:
|
||||
specifier: ^2.2.8
|
||||
version: 2.2.10(typescript@5.8.3)
|
||||
@ -458,7 +461,7 @@ importers:
|
||||
version: 1.4.2
|
||||
vue:
|
||||
specifier: ^3.5.13
|
||||
version: 3.5.16(typescript@5.8.3)
|
||||
version: 3.5.17(typescript@5.8.3)
|
||||
|
||||
packages/render-core:
|
||||
dependencies:
|
||||
@ -1892,8 +1895,8 @@ packages:
|
||||
'@mermaid-js/mermaid-mindmap@9.3.0':
|
||||
resolution: {integrity: sha512-IhtYSVBBRYviH1Ehu8gk69pMDF8DSRqXBRDMWrEfHoaMruHeaP2DXA3PBnuwsMaCdPQhlUUcy/7DBLAEIXvCAw==}
|
||||
|
||||
'@mermaid-js/parser@0.4.0':
|
||||
resolution: {integrity: sha512-wla8XOWvQAwuqy+gxiZqY+c7FokraOTHRWMsbB4AgRx9Sy7zKslNyejy7E+a77qHfey5GXw/ik3IXv/NHMJgaA==}
|
||||
'@mermaid-js/parser@0.5.0':
|
||||
resolution: {integrity: sha512-AiaN7+VjXC+3BYE+GwNezkpjIcCI2qIMB/K4S2/vMWe0q/XJCBbx5+K7iteuz7VyltX9iAK4FmVTvGc9kjOV4w==}
|
||||
|
||||
'@microsoft/api-extractor-model@7.30.6':
|
||||
resolution: {integrity: sha512-znmFn69wf/AIrwHya3fxX6uB5etSIn6vg4Q4RB/tb5VDDs1rqREc+AvMC/p19MUN13CZ7+V/8pkYPTj7q8tftg==}
|
||||
@ -2492,20 +2495,20 @@ packages:
|
||||
'@vue/compiler-core@3.5.14':
|
||||
resolution: {integrity: sha512-k7qMHMbKvoCXIxPhquKQVw3Twid3Kg4s7+oYURxLGRd56LiuHJVrvFKI4fm2AM3c8apqODPfVJGoh8nePbXMRA==}
|
||||
|
||||
'@vue/compiler-core@3.5.16':
|
||||
resolution: {integrity: sha512-AOQS2eaQOaaZQoL1u+2rCJIKDruNXVBZSiUD3chnUrsoX5ZTQMaCvXlWNIfxBJuU15r1o7+mpo5223KVtIhAgQ==}
|
||||
'@vue/compiler-core@3.5.17':
|
||||
resolution: {integrity: sha512-Xe+AittLbAyV0pabcN7cP7/BenRBNcteM4aSDCtRvGw0d9OL+HG1u/XHLY/kt1q4fyMeZYXyIYrsHuPSiDPosA==}
|
||||
|
||||
'@vue/compiler-dom@3.5.14':
|
||||
resolution: {integrity: sha512-1aOCSqxGOea5I80U2hQJvXYpPm/aXo95xL/m/mMhgyPUsKe9jhjwWpziNAw7tYRnbz1I61rd9Mld4W9KmmRoug==}
|
||||
|
||||
'@vue/compiler-dom@3.5.16':
|
||||
resolution: {integrity: sha512-SSJIhBr/teipXiXjmWOVWLnxjNGo65Oj/8wTEQz0nqwQeP75jWZ0n4sF24Zxoht1cuJoWopwj0J0exYwCJ0dCQ==}
|
||||
'@vue/compiler-dom@3.5.17':
|
||||
resolution: {integrity: sha512-+2UgfLKoaNLhgfhV5Ihnk6wB4ljyW1/7wUIog2puUqajiC29Lp5R/IKDdkebh9jTbTogTbsgB+OY9cEWzG95JQ==}
|
||||
|
||||
'@vue/compiler-sfc@3.5.16':
|
||||
resolution: {integrity: sha512-rQR6VSFNpiinDy/DVUE0vHoIDUF++6p910cgcZoaAUm3POxgNOOdS/xgoll3rNdKYTYPnnbARDCZOyZ+QSe6Pw==}
|
||||
'@vue/compiler-sfc@3.5.17':
|
||||
resolution: {integrity: sha512-rQQxbRJMgTqwRugtjw0cnyQv9cP4/4BxWfTdRBkqsTfLOHWykLzbOc3C4GGzAmdMDxhzU/1Ija5bTjMVrddqww==}
|
||||
|
||||
'@vue/compiler-ssr@3.5.16':
|
||||
resolution: {integrity: sha512-d2V7kfxbdsjrDSGlJE7my1ZzCXViEcqN6w14DOsDrUCHEA6vbnVCpRFfrc4ryCP/lCKzX2eS1YtnLE/BuC9f/A==}
|
||||
'@vue/compiler-ssr@3.5.17':
|
||||
resolution: {integrity: sha512-hkDbA0Q20ZzGgpj5uZjb9rBzQtIHLS78mMilwrlpWk2Ep37DYntUz0PonQ6kr113vfOEdM+zTBuJDaceNIW0tQ==}
|
||||
|
||||
'@vue/compiler-vue2@2.7.16':
|
||||
resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
|
||||
@ -2535,19 +2538,19 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
'@vue/reactivity@3.5.16':
|
||||
resolution: {integrity: sha512-FG5Q5ee/kxhIm1p2bykPpPwqiUBV3kFySsHEQha5BJvjXdZTUfmya7wP7zC39dFuZAcf/PD5S4Lni55vGLMhvA==}
|
||||
'@vue/reactivity@3.5.17':
|
||||
resolution: {integrity: sha512-l/rmw2STIscWi7SNJp708FK4Kofs97zc/5aEPQh4bOsReD/8ICuBcEmS7KGwDj5ODQLYWVN2lNibKJL1z5b+Lw==}
|
||||
|
||||
'@vue/runtime-core@3.5.16':
|
||||
resolution: {integrity: sha512-bw5Ykq6+JFHYxrQa7Tjr+VSzw7Dj4ldR/udyBZbq73fCdJmyy5MPIFR9IX/M5Qs+TtTjuyUTCnmK3lWWwpAcFQ==}
|
||||
'@vue/runtime-core@3.5.17':
|
||||
resolution: {integrity: sha512-QQLXa20dHg1R0ri4bjKeGFKEkJA7MMBxrKo2G+gJikmumRS7PTD4BOU9FKrDQWMKowz7frJJGqBffYMgQYS96Q==}
|
||||
|
||||
'@vue/runtime-dom@3.5.16':
|
||||
resolution: {integrity: sha512-T1qqYJsG2xMGhImRUV9y/RseB9d0eCYZQ4CWca9ztCuiPj/XWNNN+lkNBuzVbia5z4/cgxdL28NoQCvC0Xcfww==}
|
||||
'@vue/runtime-dom@3.5.17':
|
||||
resolution: {integrity: sha512-8El0M60TcwZ1QMz4/os2MdlQECgGoVHPuLnQBU3m9h3gdNRW9xRmI8iLS4t/22OQlOE6aJvNNlBiCzPHur4H9g==}
|
||||
|
||||
'@vue/server-renderer@3.5.16':
|
||||
resolution: {integrity: sha512-BrX0qLiv/WugguGsnQUJiYOE0Fe5mZTwi6b7X/ybGB0vfrPH9z0gD/Y6WOR1sGCgX4gc25L1RYS5eYQKDMoNIg==}
|
||||
'@vue/server-renderer@3.5.17':
|
||||
resolution: {integrity: sha512-BOHhm8HalujY6lmC3DbqF6uXN/K00uWiEeF22LfEsm9Q93XeJ/plHTepGwf6tqFcF7GA5oGSSAAUock3VvzaCA==}
|
||||
peerDependencies:
|
||||
vue: 3.5.16
|
||||
vue: 3.5.17
|
||||
|
||||
'@vue/shared@3.5.13':
|
||||
resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
|
||||
@ -2555,8 +2558,8 @@ packages:
|
||||
'@vue/shared@3.5.14':
|
||||
resolution: {integrity: sha512-oXTwNxVfc9EtP1zzXAlSlgARLXNC84frFYkS0HHz0h3E4WZSP9sywqjqzGCP9Y34M8ipNmd380pVgmMuwELDyQ==}
|
||||
|
||||
'@vue/shared@3.5.16':
|
||||
resolution: {integrity: sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==}
|
||||
'@vue/shared@3.5.17':
|
||||
resolution: {integrity: sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg==}
|
||||
|
||||
'@vueuse/core@12.8.2':
|
||||
resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==}
|
||||
@ -3432,8 +3435,8 @@ packages:
|
||||
resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
|
||||
engines: {node: '>= 4'}
|
||||
|
||||
dompurify@3.2.4:
|
||||
resolution: {integrity: sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==}
|
||||
dompurify@3.2.6:
|
||||
resolution: {integrity: sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==}
|
||||
|
||||
domutils@2.8.0:
|
||||
resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
|
||||
@ -4370,8 +4373,8 @@ packages:
|
||||
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
|
||||
engines: {node: '>= 8'}
|
||||
|
||||
mermaid@11.6.0:
|
||||
resolution: {integrity: sha512-PE8hGUy1LDlWIHWBP05SFdqUHGmRcCcK4IzpOKPE35eOw+G9zZgcnMpyunJVUEOgb//KBORPjysKndw8bFLuRg==}
|
||||
mermaid@11.7.0:
|
||||
resolution: {integrity: sha512-/1/5R0rt0Z1Ak0CuznAnCF3HtQgayRXUz6SguzOwN4L+DuCobz0UxnQ+ZdTSZ3AugKVVh78tiVmsHpHWV25TCw==}
|
||||
|
||||
mhchemparser@4.2.1:
|
||||
resolution: {integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==}
|
||||
@ -4941,8 +4944,8 @@ packages:
|
||||
resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
|
||||
prettier@3.4.2:
|
||||
resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==}
|
||||
prettier@3.5.3:
|
||||
resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==}
|
||||
engines: {node: '>=14'}
|
||||
hasBin: true
|
||||
|
||||
@ -5432,8 +5435,8 @@ packages:
|
||||
resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
terser@5.43.0:
|
||||
resolution: {integrity: sha512-CqNNxKSGKSZCunSvwKLTs8u8sGGlp27sxNZ4quGh0QeNuyHM0JSEM/clM9Mf4zUp6J+tO2gUXhgXT2YMMkwfKQ==}
|
||||
terser@5.43.1:
|
||||
resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==}
|
||||
engines: {node: '>=10'}
|
||||
hasBin: true
|
||||
|
||||
@ -5810,8 +5813,8 @@ packages:
|
||||
peerDependencies:
|
||||
vue: ^3.0.0
|
||||
|
||||
vue@3.5.16:
|
||||
resolution: {integrity: sha512-rjOV2ecxMd5SiAmof2xzh2WxntRcigkX/He4YFJ6WdRvVUrbt6DxC1Iujh10XLl8xCDRDtGKMeO3D+pRQ1PP9w==}
|
||||
vue@3.5.17:
|
||||
resolution: {integrity: sha512-LbHV3xPN9BeljML+Xctq4lbz2lVHCR6DtbpTf5XIO6gugpXUN49j2QQPcMj086r9+AkJ0FfUT8xjulKKBkkr9g==}
|
||||
peerDependencies:
|
||||
typescript: '*'
|
||||
peerDependenciesMeta:
|
||||
@ -6041,11 +6044,11 @@ snapshots:
|
||||
|
||||
'@ant-design/icons-svg@4.4.2': {}
|
||||
|
||||
'@ant-design/icons-vue@6.1.0(vue@3.5.16(typescript@5.8.3))':
|
||||
'@ant-design/icons-vue@6.1.0(vue@3.5.17(typescript@5.8.3))':
|
||||
dependencies:
|
||||
'@ant-design/colors': 6.0.0
|
||||
'@ant-design/icons-svg': 4.4.2
|
||||
vue: 3.5.16(typescript@5.8.3)
|
||||
vue: 3.5.17(typescript@5.8.3)
|
||||
|
||||
'@antfu/install-pkg@1.0.0':
|
||||
dependencies:
|
||||
@ -7374,7 +7377,7 @@ snapshots:
|
||||
non-layered-tidy-tree-layout: 2.0.2
|
||||
optional: true
|
||||
|
||||
'@mermaid-js/parser@0.4.0':
|
||||
'@mermaid-js/parser@0.5.0':
|
||||
dependencies:
|
||||
langium: 3.3.1
|
||||
|
||||
@ -7491,7 +7494,7 @@ snapshots:
|
||||
dependencies:
|
||||
serialize-javascript: 6.0.2
|
||||
smob: 1.5.0
|
||||
terser: 5.43.0
|
||||
terser: 5.43.1
|
||||
optionalDependencies:
|
||||
rollup: 3.29.5
|
||||
|
||||
@ -7978,7 +7981,7 @@ snapshots:
|
||||
|
||||
'@ungap/structured-clone@1.3.0': {}
|
||||
|
||||
'@vitejs/plugin-legacy@6.1.1(terser@5.43.0)(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)(tsx@4.20.3))':
|
||||
'@vitejs/plugin-legacy@6.1.1(terser@5.43.1)(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)(tsx@4.20.3))':
|
||||
dependencies:
|
||||
'@babel/core': 7.27.4
|
||||
'@babel/preset-env': 7.27.2(@babel/core@7.27.4)
|
||||
@ -7988,31 +7991,31 @@ snapshots:
|
||||
magic-string: 0.30.17
|
||||
regenerator-runtime: 0.14.1
|
||||
systemjs: 6.15.1
|
||||
terser: 5.43.0
|
||||
vite: 6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)(tsx@4.20.3)
|
||||
terser: 5.43.1
|
||||
vite: 6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)(tsx@4.20.3)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@vitejs/plugin-vue-jsx@4.2.0(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)(tsx@4.20.3))(vue@3.5.16(typescript@5.8.3))':
|
||||
'@vitejs/plugin-vue-jsx@4.2.0(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)(tsx@4.20.3))(vue@3.5.17(typescript@5.8.3))':
|
||||
dependencies:
|
||||
'@babel/core': 7.27.4
|
||||
'@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.4)
|
||||
'@rolldown/pluginutils': 1.0.0-beta.9
|
||||
'@vue/babel-plugin-jsx': 1.4.0(@babel/core@7.27.4)
|
||||
vite: 6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)(tsx@4.20.3)
|
||||
vue: 3.5.16(typescript@5.8.3)
|
||||
vite: 6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)(tsx@4.20.3)
|
||||
vue: 3.5.17(typescript@5.8.3)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0))(vue@3.5.16(typescript@5.8.3))':
|
||||
'@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1))(vue@3.5.17(typescript@5.8.3))':
|
||||
dependencies:
|
||||
vite: 5.4.19(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)
|
||||
vue: 3.5.16(typescript@5.8.3)
|
||||
vite: 5.4.19(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)
|
||||
vue: 3.5.17(typescript@5.8.3)
|
||||
|
||||
'@vitejs/plugin-vue@5.2.4(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)(tsx@4.20.3))(vue@3.5.16(typescript@5.8.3))':
|
||||
'@vitejs/plugin-vue@5.2.4(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)(tsx@4.20.3))(vue@3.5.17(typescript@5.8.3))':
|
||||
dependencies:
|
||||
vite: 6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)(tsx@4.20.3)
|
||||
vue: 3.5.16(typescript@5.8.3)
|
||||
vite: 6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)(tsx@4.20.3)
|
||||
vue: 3.5.17(typescript@5.8.3)
|
||||
|
||||
'@volar/language-core@2.4.12':
|
||||
dependencies:
|
||||
@ -8057,7 +8060,7 @@ snapshots:
|
||||
'@babel/helper-module-imports': 7.25.9
|
||||
'@babel/helper-plugin-utils': 7.27.1
|
||||
'@babel/parser': 7.27.5
|
||||
'@vue/compiler-sfc': 3.5.16
|
||||
'@vue/compiler-sfc': 3.5.17
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
@ -8069,10 +8072,10 @@ snapshots:
|
||||
estree-walker: 2.0.2
|
||||
source-map-js: 1.2.1
|
||||
|
||||
'@vue/compiler-core@3.5.16':
|
||||
'@vue/compiler-core@3.5.17':
|
||||
dependencies:
|
||||
'@babel/parser': 7.27.5
|
||||
'@vue/shared': 3.5.16
|
||||
'@vue/shared': 3.5.17
|
||||
entities: 4.5.0
|
||||
estree-walker: 2.0.2
|
||||
source-map-js: 1.2.1
|
||||
@ -8082,27 +8085,27 @@ snapshots:
|
||||
'@vue/compiler-core': 3.5.14
|
||||
'@vue/shared': 3.5.14
|
||||
|
||||
'@vue/compiler-dom@3.5.16':
|
||||
'@vue/compiler-dom@3.5.17':
|
||||
dependencies:
|
||||
'@vue/compiler-core': 3.5.16
|
||||
'@vue/shared': 3.5.16
|
||||
'@vue/compiler-core': 3.5.17
|
||||
'@vue/shared': 3.5.17
|
||||
|
||||
'@vue/compiler-sfc@3.5.16':
|
||||
'@vue/compiler-sfc@3.5.17':
|
||||
dependencies:
|
||||
'@babel/parser': 7.27.5
|
||||
'@vue/compiler-core': 3.5.16
|
||||
'@vue/compiler-dom': 3.5.16
|
||||
'@vue/compiler-ssr': 3.5.16
|
||||
'@vue/shared': 3.5.16
|
||||
'@vue/compiler-core': 3.5.17
|
||||
'@vue/compiler-dom': 3.5.17
|
||||
'@vue/compiler-ssr': 3.5.17
|
||||
'@vue/shared': 3.5.17
|
||||
estree-walker: 2.0.2
|
||||
magic-string: 0.30.17
|
||||
postcss: 8.5.6
|
||||
source-map-js: 1.2.1
|
||||
|
||||
'@vue/compiler-ssr@3.5.16':
|
||||
'@vue/compiler-ssr@3.5.17':
|
||||
dependencies:
|
||||
'@vue/compiler-dom': 3.5.16
|
||||
'@vue/shared': 3.5.16
|
||||
'@vue/compiler-dom': 3.5.17
|
||||
'@vue/shared': 3.5.17
|
||||
|
||||
'@vue/compiler-vue2@2.7.16':
|
||||
dependencies:
|
||||
@ -8153,40 +8156,40 @@ snapshots:
|
||||
optionalDependencies:
|
||||
typescript: 5.8.3
|
||||
|
||||
'@vue/reactivity@3.5.16':
|
||||
'@vue/reactivity@3.5.17':
|
||||
dependencies:
|
||||
'@vue/shared': 3.5.16
|
||||
'@vue/shared': 3.5.17
|
||||
|
||||
'@vue/runtime-core@3.5.16':
|
||||
'@vue/runtime-core@3.5.17':
|
||||
dependencies:
|
||||
'@vue/reactivity': 3.5.16
|
||||
'@vue/shared': 3.5.16
|
||||
'@vue/reactivity': 3.5.17
|
||||
'@vue/shared': 3.5.17
|
||||
|
||||
'@vue/runtime-dom@3.5.16':
|
||||
'@vue/runtime-dom@3.5.17':
|
||||
dependencies:
|
||||
'@vue/reactivity': 3.5.16
|
||||
'@vue/runtime-core': 3.5.16
|
||||
'@vue/shared': 3.5.16
|
||||
'@vue/reactivity': 3.5.17
|
||||
'@vue/runtime-core': 3.5.17
|
||||
'@vue/shared': 3.5.17
|
||||
csstype: 3.1.3
|
||||
|
||||
'@vue/server-renderer@3.5.16(vue@3.5.16(typescript@5.8.3))':
|
||||
'@vue/server-renderer@3.5.17(vue@3.5.17(typescript@5.8.3))':
|
||||
dependencies:
|
||||
'@vue/compiler-ssr': 3.5.16
|
||||
'@vue/shared': 3.5.16
|
||||
vue: 3.5.16(typescript@5.8.3)
|
||||
'@vue/compiler-ssr': 3.5.17
|
||||
'@vue/shared': 3.5.17
|
||||
vue: 3.5.17(typescript@5.8.3)
|
||||
|
||||
'@vue/shared@3.5.13': {}
|
||||
|
||||
'@vue/shared@3.5.14': {}
|
||||
|
||||
'@vue/shared@3.5.16': {}
|
||||
'@vue/shared@3.5.17': {}
|
||||
|
||||
'@vueuse/core@12.8.2(typescript@5.8.3)':
|
||||
dependencies:
|
||||
'@types/web-bluetooth': 0.0.21
|
||||
'@vueuse/metadata': 12.8.2
|
||||
'@vueuse/shared': 12.8.2(typescript@5.8.3)
|
||||
vue: 3.5.16(typescript@5.8.3)
|
||||
vue: 3.5.17(typescript@5.8.3)
|
||||
transitivePeerDependencies:
|
||||
- typescript
|
||||
|
||||
@ -8194,7 +8197,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@vueuse/core': 12.8.2(typescript@5.8.3)
|
||||
'@vueuse/shared': 12.8.2(typescript@5.8.3)
|
||||
vue: 3.5.16(typescript@5.8.3)
|
||||
vue: 3.5.17(typescript@5.8.3)
|
||||
optionalDependencies:
|
||||
async-validator: 4.2.5
|
||||
axios: 1.10.0
|
||||
@ -8206,7 +8209,7 @@ snapshots:
|
||||
|
||||
'@vueuse/shared@12.8.2(typescript@5.8.3)':
|
||||
dependencies:
|
||||
vue: 3.5.16(typescript@5.8.3)
|
||||
vue: 3.5.17(typescript@5.8.3)
|
||||
transitivePeerDependencies:
|
||||
- typescript
|
||||
|
||||
@ -8320,10 +8323,10 @@ snapshots:
|
||||
|
||||
ansi-styles@6.2.1: {}
|
||||
|
||||
ant-design-vue@3.2.20(vue@3.5.16(typescript@5.8.3)):
|
||||
ant-design-vue@3.2.20(vue@3.5.17(typescript@5.8.3)):
|
||||
dependencies:
|
||||
'@ant-design/colors': 6.0.0
|
||||
'@ant-design/icons-vue': 6.1.0(vue@3.5.16(typescript@5.8.3))
|
||||
'@ant-design/icons-vue': 6.1.0(vue@3.5.17(typescript@5.8.3))
|
||||
'@babel/runtime': 7.26.10
|
||||
'@ctrl/tinycolor': 3.6.1
|
||||
'@simonwep/pickr': 1.8.2
|
||||
@ -8337,8 +8340,8 @@ snapshots:
|
||||
resize-observer-polyfill: 1.5.1
|
||||
scroll-into-view-if-needed: 2.2.31
|
||||
shallow-equal: 1.2.1
|
||||
vue: 3.5.16(typescript@5.8.3)
|
||||
vue-types: 3.0.2(vue@3.5.16(typescript@5.8.3))
|
||||
vue: 3.5.17(typescript@5.8.3)
|
||||
vue-types: 3.0.2(vue@3.5.17(typescript@5.8.3))
|
||||
warning: 4.0.3
|
||||
|
||||
any-promise@1.3.0: {}
|
||||
@ -9090,7 +9093,7 @@ snapshots:
|
||||
detective-vue2@2.2.0(typescript@5.8.3):
|
||||
dependencies:
|
||||
'@dependents/detective-less': 5.0.1
|
||||
'@vue/compiler-sfc': 3.5.16
|
||||
'@vue/compiler-sfc': 3.5.17
|
||||
detective-es6: 5.0.1
|
||||
detective-sass: 6.0.1
|
||||
detective-scss: 5.0.1
|
||||
@ -9124,7 +9127,7 @@ snapshots:
|
||||
dependencies:
|
||||
domelementtype: 2.3.0
|
||||
|
||||
dompurify@3.2.4:
|
||||
dompurify@3.2.6:
|
||||
optionalDependencies:
|
||||
'@types/trusted-types': 2.0.7
|
||||
|
||||
@ -9280,10 +9283,10 @@ snapshots:
|
||||
eslint: 9.29.0
|
||||
optional: true
|
||||
|
||||
eslint-plugin-prettier@5.5.0(eslint-config-prettier@9.1.0(eslint@9.29.0))(eslint@9.29.0)(prettier@3.4.2):
|
||||
eslint-plugin-prettier@5.5.0(eslint-config-prettier@9.1.0(eslint@9.29.0))(eslint@9.29.0)(prettier@3.5.3):
|
||||
dependencies:
|
||||
eslint: 9.29.0
|
||||
prettier: 3.4.2
|
||||
prettier: 3.5.3
|
||||
prettier-linter-helpers: 1.0.0
|
||||
synckit: 0.11.8
|
||||
optionalDependencies:
|
||||
@ -10168,11 +10171,11 @@ snapshots:
|
||||
|
||||
merge2@1.4.1: {}
|
||||
|
||||
mermaid@11.6.0:
|
||||
mermaid@11.7.0:
|
||||
dependencies:
|
||||
'@braintree/sanitize-url': 7.1.1
|
||||
'@iconify/utils': 2.3.0
|
||||
'@mermaid-js/parser': 0.4.0
|
||||
'@mermaid-js/parser': 0.5.0
|
||||
'@types/d3': 7.4.3
|
||||
cytoscape: 3.31.1
|
||||
cytoscape-cose-bilkent: 4.1.0(cytoscape@3.31.1)
|
||||
@ -10181,7 +10184,7 @@ snapshots:
|
||||
d3-sankey: 0.12.3
|
||||
dagre-d3-es: 7.0.11
|
||||
dayjs: 1.11.13
|
||||
dompurify: 3.2.4
|
||||
dompurify: 3.2.6
|
||||
katex: 0.16.21
|
||||
khroma: 2.1.0
|
||||
lodash-es: 4.17.21
|
||||
@ -10838,7 +10841,7 @@ snapshots:
|
||||
dependencies:
|
||||
fast-diff: 1.3.0
|
||||
|
||||
prettier@3.4.2: {}
|
||||
prettier@3.5.3: {}
|
||||
|
||||
pretty-ms@7.0.1:
|
||||
dependencies:
|
||||
@ -11332,7 +11335,7 @@ snapshots:
|
||||
mkdirp: 1.0.4
|
||||
yallist: 4.0.0
|
||||
|
||||
terser@5.43.0:
|
||||
terser@5.43.1:
|
||||
dependencies:
|
||||
'@jridgewell/source-map': 0.3.6
|
||||
acorn: 8.14.1
|
||||
@ -11502,7 +11505,7 @@ snapshots:
|
||||
|
||||
universalify@2.0.1: {}
|
||||
|
||||
unplugin-vue-components@0.22.12(@babel/parser@7.27.5)(rollup@3.29.5)(vue@3.5.16(typescript@5.8.3)):
|
||||
unplugin-vue-components@0.22.12(@babel/parser@7.27.5)(rollup@3.29.5)(vue@3.5.17(typescript@5.8.3)):
|
||||
dependencies:
|
||||
'@antfu/utils': 0.7.10
|
||||
'@rollup/pluginutils': 5.1.4(rollup@3.29.5)
|
||||
@ -11514,7 +11517,7 @@ snapshots:
|
||||
minimatch: 5.1.6
|
||||
resolve: 1.22.10
|
||||
unplugin: 1.16.1
|
||||
vue: 3.5.16(typescript@5.8.3)
|
||||
vue: 3.5.17(typescript@5.8.3)
|
||||
optionalDependencies:
|
||||
'@babel/parser': 7.27.5
|
||||
transitivePeerDependencies:
|
||||
@ -11612,7 +11615,7 @@ snapshots:
|
||||
remove-trailing-separator: 1.1.0
|
||||
replace-ext: 1.0.1
|
||||
|
||||
vite-plugin-dts@4.5.4(@types/node@18.19.112)(rollup@3.29.5)(typescript@5.8.3)(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)(tsx@4.20.3)):
|
||||
vite-plugin-dts@4.5.4(@types/node@18.19.112)(rollup@3.29.5)(typescript@5.8.3)(vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)(tsx@4.20.3)):
|
||||
dependencies:
|
||||
'@microsoft/api-extractor': 7.52.8(@types/node@18.19.112)
|
||||
'@rollup/pluginutils': 5.1.4(rollup@3.29.5)
|
||||
@ -11625,13 +11628,13 @@ snapshots:
|
||||
magic-string: 0.30.17
|
||||
typescript: 5.8.3
|
||||
optionalDependencies:
|
||||
vite: 6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)(tsx@4.20.3)
|
||||
vite: 6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)(tsx@4.20.3)
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- rollup
|
||||
- supports-color
|
||||
|
||||
vite@5.4.19(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0):
|
||||
vite@5.4.19(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1):
|
||||
dependencies:
|
||||
esbuild: 0.21.5
|
||||
postcss: 8.5.3
|
||||
@ -11640,9 +11643,9 @@ snapshots:
|
||||
'@types/node': 18.19.112
|
||||
fsevents: 2.3.3
|
||||
less: 4.3.0
|
||||
terser: 5.43.0
|
||||
terser: 5.43.1
|
||||
|
||||
vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)(tsx@4.20.3):
|
||||
vite@6.3.5(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)(tsx@4.20.3):
|
||||
dependencies:
|
||||
esbuild: 0.25.1
|
||||
fdir: 6.4.4(picomatch@4.0.2)
|
||||
@ -11654,17 +11657,17 @@ snapshots:
|
||||
'@types/node': 18.19.112
|
||||
fsevents: 2.3.3
|
||||
less: 4.3.0
|
||||
terser: 5.43.0
|
||||
terser: 5.43.1
|
||||
tsx: 4.20.3
|
||||
|
||||
vitepress-plugin-mermaid@2.0.17(mermaid@11.6.0)(vitepress@1.6.3(@algolia/client-search@5.21.0)(@types/node@18.19.112)(async-validator@4.2.5)(axios@1.10.0)(less@4.3.0)(markdown-it-mathjax3@4.3.2(encoding@0.1.13))(postcss@8.5.3)(search-insights@2.17.3)(terser@5.43.0)(typescript@5.8.3)):
|
||||
vitepress-plugin-mermaid@2.0.17(mermaid@11.7.0)(vitepress@1.6.3(@algolia/client-search@5.21.0)(@types/node@18.19.112)(async-validator@4.2.5)(axios@1.10.0)(less@4.3.0)(markdown-it-mathjax3@4.3.2(encoding@0.1.13))(postcss@8.5.3)(search-insights@2.17.3)(terser@5.43.1)(typescript@5.8.3)):
|
||||
dependencies:
|
||||
mermaid: 11.6.0
|
||||
vitepress: 1.6.3(@algolia/client-search@5.21.0)(@types/node@18.19.112)(async-validator@4.2.5)(axios@1.10.0)(less@4.3.0)(markdown-it-mathjax3@4.3.2(encoding@0.1.13))(postcss@8.5.3)(search-insights@2.17.3)(terser@5.43.0)(typescript@5.8.3)
|
||||
mermaid: 11.7.0
|
||||
vitepress: 1.6.3(@algolia/client-search@5.21.0)(@types/node@18.19.112)(async-validator@4.2.5)(axios@1.10.0)(less@4.3.0)(markdown-it-mathjax3@4.3.2(encoding@0.1.13))(postcss@8.5.3)(search-insights@2.17.3)(terser@5.43.1)(typescript@5.8.3)
|
||||
optionalDependencies:
|
||||
'@mermaid-js/mermaid-mindmap': 9.3.0
|
||||
|
||||
vitepress@1.6.3(@algolia/client-search@5.21.0)(@types/node@18.19.112)(async-validator@4.2.5)(axios@1.10.0)(less@4.3.0)(markdown-it-mathjax3@4.3.2(encoding@0.1.13))(postcss@8.5.3)(search-insights@2.17.3)(terser@5.43.0)(typescript@5.8.3):
|
||||
vitepress@1.6.3(@algolia/client-search@5.21.0)(@types/node@18.19.112)(async-validator@4.2.5)(axios@1.10.0)(less@4.3.0)(markdown-it-mathjax3@4.3.2(encoding@0.1.13))(postcss@8.5.3)(search-insights@2.17.3)(terser@5.43.1)(typescript@5.8.3):
|
||||
dependencies:
|
||||
'@docsearch/css': 3.8.2
|
||||
'@docsearch/js': 3.8.2(@algolia/client-search@5.21.0)(search-insights@2.17.3)
|
||||
@ -11673,7 +11676,7 @@ snapshots:
|
||||
'@shikijs/transformers': 2.5.0
|
||||
'@shikijs/types': 2.5.0
|
||||
'@types/markdown-it': 14.1.2
|
||||
'@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0))(vue@3.5.16(typescript@5.8.3))
|
||||
'@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1))(vue@3.5.17(typescript@5.8.3))
|
||||
'@vue/devtools-api': 7.7.2
|
||||
'@vue/shared': 3.5.13
|
||||
'@vueuse/core': 12.8.2(typescript@5.8.3)
|
||||
@ -11682,8 +11685,8 @@ snapshots:
|
||||
mark.js: 8.11.1
|
||||
minisearch: 7.1.2
|
||||
shiki: 2.5.0
|
||||
vite: 5.4.19(@types/node@18.19.112)(less@4.3.0)(terser@5.43.0)
|
||||
vue: 3.5.16(typescript@5.8.3)
|
||||
vite: 5.4.19(@types/node@18.19.112)(less@4.3.0)(terser@5.43.1)
|
||||
vue: 3.5.17(typescript@5.8.3)
|
||||
optionalDependencies:
|
||||
markdown-it-mathjax3: 4.3.2(encoding@0.1.13)
|
||||
postcss: 8.5.3
|
||||
@ -11752,18 +11755,18 @@ snapshots:
|
||||
'@vue/language-core': 2.2.10(typescript@5.8.3)
|
||||
typescript: 5.8.3
|
||||
|
||||
vue-types@3.0.2(vue@3.5.16(typescript@5.8.3)):
|
||||
vue-types@3.0.2(vue@3.5.17(typescript@5.8.3)):
|
||||
dependencies:
|
||||
is-plain-object: 3.0.1
|
||||
vue: 3.5.16(typescript@5.8.3)
|
||||
vue: 3.5.17(typescript@5.8.3)
|
||||
|
||||
vue@3.5.16(typescript@5.8.3):
|
||||
vue@3.5.17(typescript@5.8.3):
|
||||
dependencies:
|
||||
'@vue/compiler-dom': 3.5.16
|
||||
'@vue/compiler-sfc': 3.5.16
|
||||
'@vue/runtime-dom': 3.5.16
|
||||
'@vue/server-renderer': 3.5.16(vue@3.5.16(typescript@5.8.3))
|
||||
'@vue/shared': 3.5.16
|
||||
'@vue/compiler-dom': 3.5.17
|
||||
'@vue/compiler-sfc': 3.5.17
|
||||
'@vue/runtime-dom': 3.5.17
|
||||
'@vue/server-renderer': 3.5.17(vue@3.5.17(typescript@5.8.3))
|
||||
'@vue/shared': 3.5.17
|
||||
optionalDependencies:
|
||||
typescript: 5.8.3
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
///<reference path="../../src/types/core.d.ts" />
|
||||
///<reference path="../../src/types/declaration/core.d.ts" />
|
||||
|
||||
/*
|
||||
control.js:游戏主要逻辑控制
|
||||
|
@ -1,4 +1,4 @@
|
||||
///<reference path="../../src/types/core.d.ts" />
|
||||
///<reference path="../../src/types/declaration/core.d.ts" />
|
||||
|
||||
/**
|
||||
* 初始化 start
|
||||
|
@ -1,4 +1,4 @@
|
||||
///<reference path="../../src/types/core.d.ts" />
|
||||
///<reference path="../../src/types/declaration/core.d.ts" />
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
///<reference path="../../src/types/core.d.ts" />
|
||||
///<reference path="../../src/types/declaration/core.d.ts" />
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
///<reference path="../../src/types/core.d.ts" />
|
||||
///<reference path="../../src/types/declaration/core.d.ts" />
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
///<reference path="../../src/types/core.d.ts" />
|
||||
///<reference path="../../src/types/declaration/core.d.ts" />
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
///<reference path="../../src/types/core.d.ts" />
|
||||
///<reference path="../../src/types/declaration/core.d.ts" />
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
///<reference path="../../src/types/core.d.ts" />
|
||||
///<reference path="../../src/types/declaration/core.d.ts" />
|
||||
|
||||
/*
|
||||
loader.js:负责对资源的加载
|
||||
|
@ -1,4 +1,4 @@
|
||||
///<reference path="../../src/types/core.d.ts" />
|
||||
///<reference path="../../src/types/declaration/core.d.ts" />
|
||||
|
||||
'use strict';
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
///<reference path="../../src/types/core.d.ts" />
|
||||
///<reference path="../../src/types/declaration/core.d.ts" />
|
||||
|
||||
/**
|
||||
* ui.js:负责所有和UI界面相关的绘制
|
||||
|
@ -1,4 +1,4 @@
|
||||
///<reference path="../../src/types/core.d.ts" />
|
||||
///<reference path="../../src/types/declaration/core.d.ts" />
|
||||
|
||||
/*
|
||||
utils.js 工具类
|
||||
|
2
src/types/declaration/control.d.ts
vendored
2
src/types/declaration/control.d.ts
vendored
@ -610,7 +610,7 @@ interface Control {
|
||||
/**
|
||||
* 实际进行存读档事件
|
||||
*/
|
||||
doSL(id: string, type: SLType): void;
|
||||
doSL(id: string | number, type: SLType): void;
|
||||
|
||||
/**
|
||||
* 同步存档到服务器
|
||||
|
2
src/types/declaration/map.d.ts
vendored
2
src/types/declaration/map.d.ts
vendored
@ -370,7 +370,7 @@ interface DrawThumbnailConfig {
|
||||
/**
|
||||
* 勇士的位置
|
||||
*/
|
||||
heroLoc: LocArr;
|
||||
heroLoc: Loc;
|
||||
|
||||
/**
|
||||
* 勇士的图标
|
||||
|
35
tasks.md
35
tasks.md
@ -2,8 +2,8 @@
|
||||
|
||||
### 怪物
|
||||
|
||||
[] 同化
|
||||
[] 同化+阻击
|
||||
[x] 同化
|
||||
[x] 同化+阻击
|
||||
[x] 电摇嘲讽:到同行或同列直接怼过去,门和墙撞碎,不消耗钥匙,攻击怪物,捡道具,改变 bgm,可吃补给用
|
||||
[x] 乾坤挪移:平移光环位置
|
||||
[x] 加光环的光环
|
||||
@ -16,7 +16,6 @@
|
||||
|
||||
### 技能
|
||||
|
||||
[] 学习:学习选定怪物的选定技能(不能学光环),消耗智慧点,初始 400,但每次消耗点数+100,持续 3 场战斗
|
||||
[x] 铸剑为盾:主动技能,减少攻击,增加防御
|
||||
|
||||
### 机制
|
||||
@ -34,36 +33,21 @@
|
||||
[] 冰与火之舞:通过第二章特殊战的困难难度
|
||||
[x] 你是怎么做到的?!:山路地图与勇气之路地图中与若干个神秘的木牌对话
|
||||
|
||||
### 伤害对应
|
||||
|
||||
dam1.png ---- 存档 404
|
||||
dam2.png ---- 存档 285
|
||||
dam3.png ---- 存档 243
|
||||
dam4.png ---- 存档 59
|
||||
|
||||
## 第三章 战争
|
||||
|
||||
### 技能
|
||||
移入飞书文档。
|
||||
|
||||
分成多条线,可以单独点一条线,也可以混搭
|
||||
## 第四章 和平
|
||||
|
||||
[] 血之代偿:消耗一定血量,战前对怪物造成同等数值的伤害
|
||||
[] 闪避:每 M 回合闪避一次,减少 N% 的伤害
|
||||
|
||||
### 机制
|
||||
|
||||
[] 装备合成、装备(孔)强化
|
||||
移入飞书文档。
|
||||
|
||||
## 零散 TODO
|
||||
|
||||
[] 实时天气(待定)
|
||||
[x] 成就系统
|
||||
[] 宝石目标设定
|
||||
[] 自动宝物规划,选中两个或更多宝物后自动在本地图中规划出最优拾取路线,原则是尽量减少其余宝物的捡拾,自动切换主动技能,怪物造成的伤害最低的路线
|
||||
[x] 临界显示方式,宝石数还是数值
|
||||
[x] 怪物目标设定
|
||||
[x] 木牌查看系统(百科全书)
|
||||
[] 宝物目标设定
|
||||
[] 每个怪物加一个怪物说明
|
||||
[] 歌词展示系统
|
||||
[x] 小地图显示框,可以选择是否显示剩余怪物数量等
|
||||
@ -78,7 +62,6 @@ dam4.png ---- 存档 59
|
||||
[x] 玩家可以设置字体大小
|
||||
[] 完全删除 functions.js
|
||||
[x] 优化插件加载系统
|
||||
[] 优化 Scroll 组件
|
||||
[] 重写技能控制系统
|
||||
[x] 自定义快捷键
|
||||
[x] 优化 ui 控制系统
|
||||
@ -89,7 +72,7 @@ dam4.png ---- 存档 59
|
||||
[] 优化路径显示,瞬移可以闪一下再熄灭
|
||||
[] 勇士身上显示攻防血
|
||||
[] 优化地图拖动
|
||||
[] 楼层转换加入随机小贴士
|
||||
[x] 加入随机小贴士
|
||||
[x] ui 中如果元素发生改变,那么做出背景亮一下再熄灭的效果
|
||||
[] 双击怪物手册拐点可以直接在拖动条上定位
|
||||
[x] 重构技能树结构
|
||||
@ -100,21 +83,15 @@ dam4.png ---- 存档 59
|
||||
[] 怪物脚下加入阴影
|
||||
[x] 着色器特效
|
||||
[x] 完全删除 core.plugin,采用 Plugin.register 的形式进行插件编写
|
||||
[] 通用 Addon 接口
|
||||
[x] 完善加载系统
|
||||
[] 不同怪物可以在怪物手册中添加一些不同的边框
|
||||
[] 按住一个按键时显示怪物的攻防血
|
||||
[] 新的事件系统,并丰富自定义事件
|
||||
[] 事件、eval 内容预编译
|
||||
[] 新的存档系统,可以注册存档项
|
||||
[x] 渐变切 bgm
|
||||
[] 新的 Flag 系统,使用 for 申请变量,dispose 释放变量,可设为渲染进程与游戏进程共通变量
|
||||
[] 注册可录像操作,比如可以在点击的时候执行,自动计入录像
|
||||
[] 机关门显示绑定怪物
|
||||
[] 自定义状态栏,通过申请空间进行布局
|
||||
[x] 复写 api,rewrite()
|
||||
[x] 对 vnode 进行简单的包装,提供出显示文字、显示图片等 api 以及修改 css 的 api
|
||||
[] mapDamage 注册
|
||||
[x] Box 组件右下角添加 resize 按钮
|
||||
[] 被光环加成的怪显示受到了哪些加成
|
||||
[x] 鼠标放到光环怪上时高亮它产生的光环
|
||||
|
Loading…
Reference in New Issue
Block a user