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 @@
+
+
+
+
+
+
+