From e72ad36e8db99122a972b4c02ddfc5681b6a4726 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Wed, 1 Jul 2026 20:53:29 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=AD=98=E6=A1=A3=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E8=BF=81=E7=A7=BB=E8=87=B3=20L0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages-user/data-common/src/common/types.ts | 28 ------------------- packages-user/data-common/src/index.ts | 1 + .../src/save/index.ts | 0 .../src/save/system.ts | 5 ++-- .../src/save/types.ts | 25 ++++++++++++++++- packages-user/data-common/src/types.ts | 3 ++ packages-user/data-state/src/core.ts | 7 +++-- packages-user/data-state/src/types.ts | 3 -- 8 files changed, 35 insertions(+), 37 deletions(-) rename packages-user/{data-state => data-common}/src/save/index.ts (100%) rename packages-user/{data-state => data-common}/src/save/system.ts (98%) rename packages-user/{data-state => data-common}/src/save/types.ts (84%) diff --git a/packages-user/data-common/src/common/types.ts b/packages-user/data-common/src/common/types.ts index fbe4822..ef726bb 100644 --- a/packages-user/data-common/src/common/types.ts +++ b/packages-user/data-common/src/common/types.ts @@ -52,31 +52,3 @@ export interface IRoleFaceBinder { */ getMainFace(identifier: number): IFaceData | null; } - -//#region 功能接口 - -export const enum SaveCompression { - /** 不进行压缩,仅提取必要数据 */ - NoCompression, - /** 进行小幅度压缩,以性能为主要考虑目标 */ - LowCompression, - /** 进行大幅度压缩,以体积为主要考虑目标 */ - HighCompression -} - -export interface ISaveableContent { - /** - * 保存对象状态,返回的对象应该经过深拷贝(即 `structuedClone`) - * @param compression 压缩级别 - */ - saveState(compression: SaveCompression): T; - - /** - * 读取对象状态 - * @param state 状态对象 - * @param compression 压缩级别 - */ - loadState(state: T, compression: SaveCompression): void; -} - -//#endregion diff --git a/packages-user/data-common/src/index.ts b/packages-user/data-common/src/index.ts index 97bcfee..59e8ff3 100644 --- a/packages-user/data-common/src/index.ts +++ b/packages-user/data-common/src/index.ts @@ -1,4 +1,5 @@ export * from './common'; +export * from './save'; export * from './store'; export * from './types'; diff --git a/packages-user/data-state/src/save/index.ts b/packages-user/data-common/src/save/index.ts similarity index 100% rename from packages-user/data-state/src/save/index.ts rename to packages-user/data-common/src/save/index.ts diff --git a/packages-user/data-state/src/save/system.ts b/packages-user/data-common/src/save/system.ts similarity index 98% rename from packages-user/data-state/src/save/system.ts rename to packages-user/data-common/src/save/system.ts index 68e93c9..1501a70 100644 --- a/packages-user/data-state/src/save/system.ts +++ b/packages-user/data-common/src/save/system.ts @@ -4,9 +4,10 @@ import { IGlobalTrasaction, ISaveRead, ISaveSystem, - ISaveSystemConfig + ISaveSystemConfig, + ISaveableContent, + SaveCompression } from './types'; -import { ISaveableContent, SaveCompression } from '@user/data-common'; import { isNil } from 'lodash-es'; interface ISaveRecord { diff --git a/packages-user/data-state/src/save/types.ts b/packages-user/data-common/src/save/types.ts similarity index 84% rename from packages-user/data-state/src/save/types.ts rename to packages-user/data-common/src/save/types.ts index 82737b5..669a750 100644 --- a/packages-user/data-state/src/save/types.ts +++ b/packages-user/data-common/src/save/types.ts @@ -1,6 +1,29 @@ -import { ISaveableContent, SaveCompression } from '@user/data-common'; import { Dexie, Table } from 'dexie'; +export const enum SaveCompression { + /** 不进行压缩,仅提取必要数据 */ + NoCompression, + /** 进行小幅度压缩,以性能为主要考虑目标 */ + LowCompression, + /** 进行大幅度压缩,以体积为主要考虑目标 */ + HighCompression +} + +export interface ISaveableContent { + /** + * 保存对象状态,返回的对象应该经过深拷贝(即 `structuedClone`) + * @param compression 压缩级别 + */ + saveState(compression: SaveCompression): T; + + /** + * 读取对象状态 + * @param state 状态对象 + * @param compression 压缩级别 + */ + loadState(state: T, compression: SaveCompression): void; +} + export interface IGlobalTrasaction { /** 全局存储对应的表 */ readonly table: Table; diff --git a/packages-user/data-common/src/types.ts b/packages-user/data-common/src/types.ts index 75efc3c..b35d8c6 100644 --- a/packages-user/data-common/src/types.ts +++ b/packages-user/data-common/src/types.ts @@ -1,6 +1,7 @@ import { ITileLocator } from '@motajs/common'; import { IFaceManager, IRoleFaceBinder } from './common'; import { ITileStore } from './store'; +import { ISaveSystem } from './save'; export interface IEnemyAttr { /** 怪物生命值 */ @@ -49,6 +50,8 @@ export interface IDataCommon { readonly roleFace: IRoleFaceBinder; /** 朝向管理 */ readonly faceManager: IFaceManager; + /** 存档系统 */ + readonly saveSystem: ISaveSystem; } export interface IDataCommonExtended { diff --git a/packages-user/data-state/src/core.ts b/packages-user/data-state/src/core.ts index a5edfb1..3c7d9b1 100644 --- a/packages-user/data-state/src/core.ts +++ b/packages-user/data-state/src/core.ts @@ -13,7 +13,9 @@ import { FaceGroup, FaceDirection, IHeroAttr, - IEnemyAttr + IEnemyAttr, + ISaveSystem, + SaveSystem } from '@user/data-common'; import { EnemyManager, @@ -65,7 +67,6 @@ import { LegacyTileData, TileLegacyBridge } from './legacy'; import { ILoadProgressTotal, LoadProgressTotal } from '@motajs/loader'; import { isNil } from 'lodash-es'; import { logger } from '@motajs/common'; -import { ISaveSystem, SaveSystem } from './save'; import { DefaultHeroMoveTopImpl } from './hero'; export class CoreState implements ICoreState { @@ -73,6 +74,7 @@ export class CoreState implements ICoreState { readonly roleFace: IRoleFaceBinder; readonly faceManager: IFaceManager; readonly tileStore: ITileStore; + readonly saveSystem: ISaveSystem; // Layer 1 数据层,所有可存档内容都在这,一般用于数据存储 readonly maps: IMapStore; @@ -88,7 +90,6 @@ export class CoreState implements ICoreState { // Layer 3 用户层,也就是最顶层的内容,一般仅用于初始化以及仅供渲染端调用的顶层模块 readonly loadProgress: ILoadProgressTotal; readonly dataLoader: IMotaDataLoader; - readonly saveSystem: ISaveSystem; /** 可存档对象映射 */ private readonly saveables: Map> = new Map(); diff --git a/packages-user/data-state/src/types.ts b/packages-user/data-state/src/types.ts index b1cd795..515f89a 100644 --- a/packages-user/data-state/src/types.ts +++ b/packages-user/data-state/src/types.ts @@ -1,6 +1,5 @@ import { IMotaDataLoader, IStateBase } from '@user/data-base'; import { ILoadProgressTotal } from '@motajs/loader'; -import { ISaveSystem } from './save'; import { IStateSystem } from '@user/data-system'; import { ISaveableContent } from '@user/data-common'; @@ -18,8 +17,6 @@ export interface ICoreState extends IStateSystem { readonly loadProgress: ILoadProgressTotal; /** 数据端加载对象 */ readonly dataLoader: IMotaDataLoader; - /** 存档系统 */ - readonly saveSystem: ISaveSystem; /** * 将某个存档执行器绑定至指定的可存档对象,一个可存档对象只能绑定一个执行器,