From fb83588df5c4b2bdb49f7c0ebd515f3f10fe8cd0 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Thu, 8 Feb 2024 17:14:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- script/build.ts | 21 ++- src/core/index.ts | 14 +- src/core/main/init/hotkey.ts | 3 - src/types/plugin.d.ts | 337 +---------------------------------- 5 files changed, 19 insertions(+), 358 deletions(-) diff --git a/package.json b/package.json index e3b54a1..83f905a 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "type": "module", "scripts": { "dev": "ts-node-esm script/dev.ts", - "build": "vue-tsc --noEmit && ts-node-esm script/build.ts dist", + "build": "vue-tsc --noEmit && pnpm docs:build && ts-node-esm script/build.ts dist", "preview": "vite preview", "update": "ts-node-esm script/update.ts", "declare": "ts-node-esm script/declare.ts", diff --git a/script/build.ts b/script/build.ts index 6b784d1..d1afe24 100644 --- a/script/build.ts +++ b/script/build.ts @@ -114,16 +114,7 @@ const compress = type === 'dist'; './dist/types/plugin.d.ts', 'utf-8' ); - const rep = pluginDTS.replace( - `declare const Mota: import('../game/system').IMota; -interface Window { - Mota: import('../game/system').IMota; -}`, - `declare const Mota: import('./index.d.ts').IMota; -interface Window { - Mota: import('./index.d.ts').IMota; -}` - ); + const rep = pluginDTS.replaceAll(`../game/system`, `../index.d.ts`); await fs.writeFile('./dist/types/plugin.d.ts', rep); const js = ['functions.js', 'plugins.js']; @@ -154,7 +145,15 @@ interface Window { console.log(e); } - // 8. 压缩 + // 8. 文档 + try { + await fs.move('./docs/.vitepress/dist', './dist/_docs'); + } catch (e) { + console.log('移动文档失败'); + console.log(e); + } + + // 9. 压缩 if (compress) { try { await fs.ensureDir('./out'); diff --git a/src/core/index.ts b/src/core/index.ts index 4aa4e11..372c7a8 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -47,14 +47,14 @@ import * as statusBarTools from '@/plugin/ui/statusBar'; import * as toolboxTools from '@/plugin/ui/toolbox'; import * as UI from '@ui/index'; import Box from '@/components/box.vue'; -import BoxAnimate from '@/components/boxAnimate.vue.vue'; -import Colomn from '@/components/colomn.vue.vue'; -import EnemyOne from '@/components/enemyOne.vue.vue'; -import Scroll from '@/components/scroll.vue.vue'; +import BoxAnimate from '@/components/boxAnimate.vue'; +import Colomn from '@/components/colomn.vue'; +import EnemyOne from '@/components/enemyOne.vue'; +import Scroll from '@/components/scroll.vue'; import EnemyCritical from '@/panel/enemyCritical.vue'; -import EnemySpecial from '@/panel/enemySpecial.vue.vue'; -import EnemyTarget from '@/panel/enemyTarget.vue.vue'; -import KeyboardPanel from '@/panel/keyboard.vue.vue'; +import EnemySpecial from '@/panel/enemySpecial.vue'; +import EnemyTarget from '@/panel/enemyTarget.vue'; +import KeyboardPanel from '@/panel/keyboard.vue'; import { MCGenerator } from './main/layout'; // ----- 类注册 diff --git a/src/core/main/init/hotkey.ts b/src/core/main/init/hotkey.ts index 9621546..5d67d77 100644 --- a/src/core/main/init/hotkey.ts +++ b/src/core/main/init/hotkey.ts @@ -438,9 +438,6 @@ gameKey .realize('viewMap', () => { core.ui._drawViewMaps(); }) - .realize('skillTree', () => { - core.useItem('skill1', true); - }) .realize('undo', () => { core.doSL('autoSave', 'load'); }) diff --git a/src/types/plugin.d.ts b/src/types/plugin.d.ts index 2370125..7c5adb2 100644 --- a/src/types/plugin.d.ts +++ b/src/types/plugin.d.ts @@ -14,342 +14,7 @@ type CanParseCss = keyof { : never]: CSSStyleDeclaration[P]; }; -interface PluginDeclaration - extends PluginUtils, - PluginUis, - PluginUse, - MiniMap, - PluginAchievement { - /** - * - */ - utils: GamePluginUtils; - loopMap: GamePluginLoopMap; - skillTree: GamePluginSkillTree; - study: GamePluginStudy; - hero: GamePluginHeroRealStatus; - replay: PluginReplay; - chase: PluginChase; - - skills: Record; - skillEffects: SkillEffects; - - /** - * 添加函数 例:添加弹出文字,像这个就可以使用core.addPop或core.plugin.addPop调用 - * @param px 弹出的横坐标 - * @param py 弹出的纵坐标 - * @param value 弹出的文字 - */ - addPop(px: number, py: number, value: string): void; - - /** 添加变量 例:所有的正在弹出的文字,像这个就可以使用core.plugin.pop获取 */ - pop: any[]; - - /** 状态栏信息,取反后刷新状态栏 */ - readonly statusBarStatus: Ref; - - /** - * 添加一个动画 - * @param fn 要添加的函数 - */ - addAnimate(fn: (time: number) => void); - - /** - * 移除一个动画 - * @param fn 要移除的函数 - */ - removeAnimate(fn: (time: number) => void); - - /** - * 判定一个值是否不是undefined或null - * @param value 要判断的值 - */ - has(value: T): value is NonNullable; - - applyFragWith( - canvas: HTMLCanvasElement, - length?: number, - time?: number - ): { - canvas: HTMLCanvasElement; - onEnd: Promise; - animation: import('mutate-animate').Animation; - }; -} - -interface GamePluginUtils { - /** - * 判定一个值是否不是undefined或null - * @param value 要判断的值 - */ - has(value: T): value is NonNullable; - - /** - * 滑动数组 - * @param arr 数组 - * @param delta 偏移量,正数表示向右滑动,负数表示向左滑动 - */ - slide(arr: T[], delta: number): T[]; - - /** - * 获取方向的反方向 - * @param dir 方向 - */ - backDir(dir: Dir): Dir; - - /** - * 最大化游戏缩放 - * @param n 最大缩放再少多少个缩放 - */ - maxGameScale(n?: number): void; -} - -interface GamePluginLoopMap { - checkLoopMap(): void; -} - -interface PluginUtils { - /** - * 判定一个值是否不是undefined或null - * @param value 要判断的值 - */ - has(value: T): value is NonNullable; - - /** - * 根据伤害大小获取颜色 - * @param damage 伤害大小 - */ - getDamageColor(damage: number): string; - - /** - * 解析css字符串为CSSStyleDeclaration对象 - * @param css 要解析的css字符串 - */ - parseCss(css: string): Partial>; - - /** - * 弹出一段提示 - * @param text 提示信息 - */ - tip( - type: 'warn' | 'info' | 'success' | 'error' | 'warning' | 'loading', - text: string - ): void; - - /** - * 开始一个追逐战 - * @param index 追逐战索引 - */ - startChase(index: number): Promise; -} - -interface PluginUis { - /** 是否正在进行章节显示 */ - readonly chapterShowed: Ref; - - /** 章节显示的内容 */ - readonly chapterContent: Ref; - - /** 是否展示标记的怪物 */ - readonly showMarkedEnemy: Ref; - - /** - * 打开技能查看界面 - */ - openSkill(): void; -} - -interface PluginUse { - /** 是否是移动设备 */ - readonly isMobile: boolean; - - /** - * 向一个元素添加拖拽事件 - * @param ele 目标元素 - * @param fn 推拽时触发的函数,传入x y和鼠标事件或点击事件 - * @param ondown 鼠标按下时执行的函数 - * @param global 是否全局拖拽,即拖拽后鼠标或手指离开元素后是否依然视为正在拖拽 - */ - useDrag( - ele: HTMLElement, - fn: DragFn, - ondown?: DragFn, - onUp?: (e: MouseEvent | TouchEvent) => void, - global?: boolean - ): void; - - /** - * 去除一个全局拖拽函数 - * @param fn 要去除的函数 - */ - cancelGlobalDrag(fn: DragFn): void; - - /** - * 当触发滚轮时执行函数 - * @param ele 目标元素 - * @param fn 当滚轮触发时执行的函数 - */ - useWheel( - ele: HTMLElement, - fn: (x: number, y: number, z: number, e: WheelEvent) => void - ): void; - - /** - * 当鼠标或手指松开时执行函数 - * @param ele 目标元素 - * @param fn 当鼠标或手指松开时执行的函数 - */ - useUp(ele: HTMLElement, fn: DragFn): void; -} - -interface GamePluginSkillTree { - /** - * 获取技能等级 - * @param skill 技能索引 - */ - getSkillLevel(skill: number): number; - - /** - * 根据索引获取技能 - * @param index 索引 - */ - getSkillFromIndex(index: number): Skill; - - /** - * 获取技能的消耗 - * @param skill 技能 - */ - getSkillConsume(skill: number): number; - - /** - * 升级技能 - * @param skill 技能索引 - */ - upgradeSkill(skill: number): boolean; - - /** - * 保存技能树等级 - */ - saveSkillTree(): number[]; - - /** - * 加载技能树等级 - * @param data 等级信息 - */ - loadSkillTree(data: number[]): void; -} - -interface MiniMap { - /** - * 切分区域 - */ - splitArea(): void; -} - -interface GamePluginStudy { - /** - * 学习一个怪物技能 - * @param enemy 被学习的怪物 - * @param num 技能的索引 - */ - studySkill(enemy: Enemy, num: number): void; -} - -interface GamePluginHeroRealStatus { - /** - * 获取勇士在某一点的属性 - * @param name 要获取的勇士属性 - * @param x 勇士所在横坐标 - * @param y 勇士所在纵坐标 - * @param floorId 勇士所在楼层 - */ - getHeroStatusOn(name: 'all', floorId?: FloorIds): HeroStatus; - getHeroStatusOn( - name: (keyof HeroStatus)[], - floorId?: FloorIds - ): Partial; - getHeroStatusOn( - name: K, - floorId?: FloorIds - ): HeroStatus[K]; - - /** - * 获取一定状态下的勇士在某一点的属性 - * @param status 勇士的状态 - * @param name 要获取的勇士属性 - * @param x 勇士所在横坐标 - * @param y 勇士所在纵坐标 - * @param floorId 勇士所在楼层 - */ - getHeroStatusOf( - status: Partial, - name: 'all', - floorId?: FloorIds - ): HeroStatus; - getHeroStatusOf( - status: Partial, - name: (keyof HeroStatus)[], - floorId?: FloorIds - ): Partial; - getHeroStatusOf( - status: Partial, - name: K, - floorId?: FloorIds - ): HeroStatus[K]; -} - -interface PluginAchievement { - /** - * 完成一个成就 - * @param type 成就类型 - * @param index 成就索引 - */ - completeAchievement(type: AchievementType, index: number): void; - - /** - * 是否完成了某个成就 - * @param type 成就类型 - * @param index 成就索引 - */ - hasCompletedAchievement(type: AchievementType, index: number): boolean; - - /** - * 获取当前成就点数 - */ - getNowPoint(): number; - - /** - * 检查所有到达过的楼层,用于成就的计算 - */ - checkVisitedFloor(): void; -} - -interface PluginReplay { - ready(): void; - readyClip(): number; - clip(...replace: string[]): void; -} - -interface PluginChase { - chaseInit1(): void; -} - -interface SkillEffects { - jumpIgnoreFloor: FloorIds[]; -} - -type Chapter = 'chapter1' | 'chapter2'; - -interface Skill { - index: number; - title: string; - desc: string[]; - consume: string; - front: LocArr[]; - loc: LocArr; - max: number; - effect: string[]; -} +interface PluginDeclaration {} type Forward = { [K in keyof T as T[K] extends Function