From 3f195fdc72573e9f807081f28b43858f050ce8b2 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Sat, 20 Apr 2024 16:13:48 +0800 Subject: [PATCH] feat: logger --- idea.md | 2 +- src/core/common/logger.ts | 71 +++++++++++++++++++++++++++++++++++++++ src/core/index.ts | 2 ++ src/game/system.ts | 2 ++ src/ui/index.ts | 1 + src/ui/load.vue | 13 +++++++ 6 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 src/core/common/logger.ts create mode 100644 src/ui/load.vue diff --git a/idea.md b/idea.md index 11aec3d..fd8629a 100644 --- a/idea.md +++ b/idea.md @@ -83,7 +83,7 @@ dam4.png ---- 存档 59 [] 重写技能控制系统 [x] 自定义快捷键 [x] 优化 ui 控制系统 -[] 优化游戏进程与渲染进程间的通讯 +[x] 优化游戏进程与渲染进程间的通讯 [] 优化资源分离,音乐放到 bgm 目录下 [] 一次性道具拾取与清怪 [] 重构数据统计 diff --git a/src/core/common/logger.ts b/src/core/common/logger.ts new file mode 100644 index 0000000..3eb1939 --- /dev/null +++ b/src/core/common/logger.ts @@ -0,0 +1,71 @@ +export const enum LogLevel { + /** 输出所有,包括日志 */ + LOG, + /** 报错、严重警告和警告 */ + WARNING, + /** 报错和严重警告 */ + SEVERE_WARNING, + /** 仅报错 */ + ERROR +} + +export class Logger { + level: LogLevel = LogLevel.LOG; + + constructor(logLevel: LogLevel) { + this.level = logLevel; + } + + /** + * 设置该日志类的输出等级 + * @param level 要设置为的输出等级 + */ + setLogLevel(level: LogLevel) { + this.level = level; + } + + /** + * 输出报错信息 + * @param code 错误代码,每个错误都应当使用唯一的错误代码 + * @param text 错误信息 + */ + error(code: number, text: string) { + if (this.level <= LogLevel.ERROR) { + console.error(`[ERROR Code ${code}] ${text}`); + } + } + + /** + * 输出严重警告信息 + * @param code 警告代码 + * @param text 警告信息 + */ + severe(code: number, text: string) { + if (this.level <= LogLevel.SEVERE_WARNING) { + console.warn(`[SEVERE WARNING Code ${code}] ${text}`); + } + } + + /** + * 输出警告信息 + * @param code 警告代码 + * @param text 警告信息 + */ + warn(code: number, text: string) { + if (this.level <= LogLevel.WARNING) { + console.warn(`[WARNING Code ${code}] ${text}`); + } + } + + /** + * 输出日志 + * @param text 日志信息 + */ + log(text: string) { + if (this.level <= LogLevel.LOG) { + console.log(`[LOG] ${text}`); + } + } +} + +export const logger = new Logger(LogLevel.LOG); diff --git a/src/core/index.ts b/src/core/index.ts index 41df321..2aa3880 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -58,6 +58,7 @@ import KeyboardPanel from '@/panel/keyboard.vue'; import { MCGenerator } from './main/layout'; import { ResourceController } from './loader/controller'; import { readyAllResource } from './loader/load'; +import { logger } from './common/logger'; // ----- 类注册 Mota.register('class', 'AudioPlayer', AudioPlayer); @@ -93,6 +94,7 @@ Mota.register('var', 'mainSetting', mainSetting); Mota.register('var', 'KeyCode', KeyCode); Mota.register('var', 'settingStorage', settingStorage); Mota.register('var', 'status', status); +Mota.register('var', 'logger', logger); // ----- 模块注册 Mota.register('module', 'CustomComponents', { createSettingComponents, diff --git a/src/game/system.ts b/src/game/system.ts index a45391a..759226b 100644 --- a/src/game/system.ts +++ b/src/game/system.ts @@ -27,6 +27,7 @@ import type { KeyCode } from '@/plugin/keyCodes'; import type { Ref } from 'vue'; import type * as battle from './enemy/battle'; import type * as hero from './hero'; +import type { Logger } from '@/core/common/logger'; interface ClassInterface { // 渲染进程与游戏进程通用 @@ -88,6 +89,7 @@ interface VariableInterface { // 定义于游戏进程,渲染进程依然可用 haloSpecials: number[]; enemySpecials: typeof specials; + logger: Logger; } interface ModuleInterface {} diff --git a/src/ui/index.ts b/src/ui/index.ts index 8812989..f34d217 100644 --- a/src/ui/index.ts +++ b/src/ui/index.ts @@ -22,3 +22,4 @@ export { default as Toolbox } from './toolbox.vue'; export { default as Hotkey } from './hotkey.vue'; export { default as Toolbar } from './toolbar.vue'; export { default as ToolEditor } from './toolEditor.vue'; +export { default as Load } from './load.vue'; diff --git a/src/ui/load.vue b/src/ui/load.vue new file mode 100644 index 0000000..4fac9bb --- /dev/null +++ b/src/ui/load.vue @@ -0,0 +1,13 @@ + + + + +