From ec59a44efc2fdaf84794f7bc9fde95095a0e0aff Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Tue, 21 Apr 2026 21:01:53 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20CoreState=20=E4=B8=80=E9=83=A8?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E5=9E=8B=E5=A3=B0=E6=98=8E=E6=8C=AA=E5=88=B0?= =?UTF-8?q?=20data-base?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/common/face.ts | 0 packages-user/data-base/src/common/index.ts | 1 + packages-user/data-base/src/common/types.ts | 36 ++++++++++++ packages-user/data-base/src/index.ts | 2 + .../src/map/index.ts | 0 .../src/map/layerState.ts | 0 .../src/map/mapLayer.ts | 0 .../src/map/types.ts | 0 packages-user/data-base/src/types.ts | 50 +++++++++++++++++ packages-user/data-state/src/common/index.ts | 3 - packages-user/data-state/src/common/types.ts | 40 -------------- packages-user/data-state/src/common/utils.ts | 6 -- packages-user/data-state/src/core.ts | 9 ++- packages-user/data-state/src/index.ts | 5 +- packages-user/data-state/src/types.ts | 55 +------------------ 15 files changed, 98 insertions(+), 109 deletions(-) rename packages-user/{data-state => data-base}/src/common/face.ts (100%) rename packages-user/{data-state => data-base}/src/map/index.ts (100%) rename packages-user/{data-state => data-base}/src/map/layerState.ts (100%) rename packages-user/{data-state => data-base}/src/map/mapLayer.ts (100%) rename packages-user/{data-state => data-base}/src/map/types.ts (100%) create mode 100644 packages-user/data-base/src/types.ts delete mode 100644 packages-user/data-state/src/common/index.ts delete mode 100644 packages-user/data-state/src/common/types.ts delete mode 100644 packages-user/data-state/src/common/utils.ts diff --git a/packages-user/data-state/src/common/face.ts b/packages-user/data-base/src/common/face.ts similarity index 100% rename from packages-user/data-state/src/common/face.ts rename to packages-user/data-base/src/common/face.ts diff --git a/packages-user/data-base/src/common/index.ts b/packages-user/data-base/src/common/index.ts index 6d5a6ef..5fcbbcb 100644 --- a/packages-user/data-base/src/common/index.ts +++ b/packages-user/data-base/src/common/index.ts @@ -1,2 +1,3 @@ +export * from './face'; export * from './types'; export * from './utils'; diff --git a/packages-user/data-base/src/common/types.ts b/packages-user/data-base/src/common/types.ts index 196a18f..ef726bb 100644 --- a/packages-user/data-base/src/common/types.ts +++ b/packages-user/data-base/src/common/types.ts @@ -16,3 +16,39 @@ export interface IFaceData { /** 图块朝向 */ readonly face: FaceDirection; } + +export interface IRoleFaceBinder { + /** + * 给指定的图块分配朝向绑定 + * @param identifier 图块数字 + * @param main 主图块朝向,一般是朝下 + */ + malloc(identifier: number, main: FaceDirection): void; + + /** + * 将一个图块与另一个图块绑定朝向,需要注意要先调用 {@link malloc} 分配朝向信息 + * @param identifier 当前图块数字 + * @param main 主图块数字,即当前图块与目标图块属于主图块的另一个朝向 + * @param face 当前图块的朝向方向 + */ + bind(identifier: number, main: number, face: FaceDirection): void; + + /** + * 获取一个图块指定朝向的图块数字 + * @param identifier 图块数字,可以是任意朝向的图块数字 + * @param face 要获取的朝向 + */ + getFaceOf(identifier: number, face: FaceDirection): IFaceData | null; + + /** + * 获取指定图块数字是哪个朝向 + * @param identifier 图块数字 + */ + getFaceDirection(identifier: number): FaceDirection | undefined; + + /** + * 获取指定图块数字绑定至的主朝向 + * @param identifier 图块数字,可以是任意朝向的图块数字 + */ + getMainFace(identifier: number): IFaceData | null; +} diff --git a/packages-user/data-base/src/index.ts b/packages-user/data-base/src/index.ts index 09b3249..0be7276 100644 --- a/packages-user/data-base/src/index.ts +++ b/packages-user/data-base/src/index.ts @@ -3,5 +3,7 @@ export * from './enemy'; export * from './flag'; export * from './hero'; export * from './load'; +export * from './map'; export * from './game'; +export * from './types'; diff --git a/packages-user/data-state/src/map/index.ts b/packages-user/data-base/src/map/index.ts similarity index 100% rename from packages-user/data-state/src/map/index.ts rename to packages-user/data-base/src/map/index.ts diff --git a/packages-user/data-state/src/map/layerState.ts b/packages-user/data-base/src/map/layerState.ts similarity index 100% rename from packages-user/data-state/src/map/layerState.ts rename to packages-user/data-base/src/map/layerState.ts diff --git a/packages-user/data-state/src/map/mapLayer.ts b/packages-user/data-base/src/map/mapLayer.ts similarity index 100% rename from packages-user/data-state/src/map/mapLayer.ts rename to packages-user/data-base/src/map/mapLayer.ts diff --git a/packages-user/data-state/src/map/types.ts b/packages-user/data-base/src/map/types.ts similarity index 100% rename from packages-user/data-state/src/map/types.ts rename to packages-user/data-base/src/map/types.ts diff --git a/packages-user/data-base/src/types.ts b/packages-user/data-base/src/types.ts new file mode 100644 index 0000000..c4d18de --- /dev/null +++ b/packages-user/data-base/src/types.ts @@ -0,0 +1,50 @@ +import { IMotaDataLoader } from './load'; +import { ILoadProgressTotal } from '@motajs/loader'; +import { IHeroFollower, IHeroState } from './hero'; +import { IEnemyContext, IEnemyManager } from './enemy'; +import { IFlagSystem } from './flag'; +import { IRoleFaceBinder } from './common'; +import { ILayerState } from './map'; + +export interface IStateSaveData { + /** 跟随者列表 */ + readonly followers: readonly IHeroFollower[]; +} + +export interface IStateBase { + /** 朝向绑定 */ + readonly roleFace: IRoleFaceBinder; + /** id 到图块数字的映射 */ + readonly idNumberMap: Map; + /** 图块数字到 id 的映射 */ + readonly numberIdMap: Map; + + /** 加载进度对象 */ + readonly loadProgress: ILoadProgressTotal; + /** 数据端加载对象 */ + readonly dataLoader: IMotaDataLoader; + + /** 地图状态 */ + readonly layer: ILayerState; + /** 勇士状态 */ + readonly hero: IHeroState; + + /** 怪物管理器 */ + readonly enemyManager: IEnemyManager; + /** 怪物上下文 */ + readonly enemyContext: IEnemyContext; + + /** Flag 系统 */ + readonly flags: IFlagSystem; + + /** + * 保存当前状态 + */ + saveState(): IStateSaveData; + + /** + * 加载状态 + * @param state 状态对象 + */ + loadState(state: IStateSaveData): void; +} diff --git a/packages-user/data-state/src/common/index.ts b/packages-user/data-state/src/common/index.ts deleted file mode 100644 index 5fcbbcb..0000000 --- a/packages-user/data-state/src/common/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './face'; -export * from './types'; -export * from './utils'; diff --git a/packages-user/data-state/src/common/types.ts b/packages-user/data-state/src/common/types.ts deleted file mode 100644 index b256db0..0000000 --- a/packages-user/data-state/src/common/types.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { FaceDirection, type IFaceData } from '@user/data-base'; - -export { FaceDirection }; -export type { IFaceData } from '@user/data-base'; - -export interface IRoleFaceBinder { - /** - * 给指定的图块分配朝向绑定 - * @param identifier 图块数字 - * @param main 主图块朝向,一般是朝下 - */ - malloc(identifier: number, main: FaceDirection): void; - - /** - * 将一个图块与另一个图块绑定朝向,需要注意要先调用 {@link malloc} 分配朝向信息 - * @param identifier 当前图块数字 - * @param main 主图块数字,即当前图块与目标图块属于主图块的另一个朝向 - * @param face 当前图块的朝向方向 - */ - bind(identifier: number, main: number, face: FaceDirection): void; - - /** - * 获取一个图块指定朝向的图块数字 - * @param identifier 图块数字,可以是任意朝向的图块数字 - * @param face 要获取的朝向 - */ - getFaceOf(identifier: number, face: FaceDirection): IFaceData | null; - - /** - * 获取指定图块数字是哪个朝向 - * @param identifier 图块数字 - */ - getFaceDirection(identifier: number): FaceDirection | undefined; - - /** - * 获取指定图块数字绑定至的主朝向 - * @param identifier 图块数字,可以是任意朝向的图块数字 - */ - getMainFace(identifier: number): IFaceData | null; -} diff --git a/packages-user/data-state/src/common/utils.ts b/packages-user/data-state/src/common/utils.ts deleted file mode 100644 index 2e7a185..0000000 --- a/packages-user/data-state/src/common/utils.ts +++ /dev/null @@ -1,6 +0,0 @@ -export { - degradeFace, - fromDirectionString, - getFaceMovement, - nextFaceDirection -} from '@user/data-base'; diff --git a/packages-user/data-state/src/core.ts b/packages-user/data-state/src/core.ts index 4f1b491..3466e78 100644 --- a/packages-user/data-state/src/core.ts +++ b/packages-user/data-state/src/core.ts @@ -1,6 +1,4 @@ import { ICoreState, IStateSaveData } from './types'; -import { ILayerState, LayerState } from './map'; -import { FaceDirection, IRoleFaceBinder, RoleFaceBinder } from './common'; import { DamageSystem, EnemyContext, @@ -16,7 +14,12 @@ import { FlagSystem, IMotaDataLoader, MotaDataLoader, - loading + loading, + IRoleFaceBinder, + ILayerState, + LayerState, + RoleFaceBinder, + FaceDirection } from '@user/data-base'; import { IEnemyAttr } from './enemy/types'; import { diff --git a/packages-user/data-state/src/index.ts b/packages-user/data-state/src/index.ts index aa2296a..bc01750 100644 --- a/packages-user/data-state/src/index.ts +++ b/packages-user/data-state/src/index.ts @@ -1,6 +1,5 @@ -import { loading } from '@user/data-base'; +import { FaceDirection, loading } from '@user/data-base'; import { isNil } from 'lodash-es'; -import { FaceDirection } from './common'; import { ICoreState } from './types'; import { TILE_HEIGHT, TILE_WIDTH } from './shared'; import { state } from './ins'; @@ -62,11 +61,9 @@ export function create() { }); } -export * from './common'; export * from './enemy'; export * from './hero'; export * from './legacy'; -export * from './map'; export * from './core'; export * from './ins'; diff --git a/packages-user/data-state/src/types.ts b/packages-user/data-state/src/types.ts index 754ca9d..41365d7 100644 --- a/packages-user/data-state/src/types.ts +++ b/packages-user/data-state/src/types.ts @@ -1,61 +1,10 @@ -import { ILayerState } from './map'; -import { IRoleFaceBinder } from './common'; -import { - IEnemyContext, - IEnemyManager, - IHeroFollower, - IHeroState, - IMotaDataLoader -} from '@user/data-base'; +import { IHeroFollower, IStateBase } from '@user/data-base'; import { IEnemyAttr } from './enemy/types'; import { IHeroAttr } from './hero'; -import { IFlagSystem } from '../../data-base/src/flag/types'; -import { ILoadProgressTotal } from '@motajs/loader'; - -export interface IGameDataState { - /** 怪物管理器 */ - readonly enemyManager: IEnemyManager; -} export interface IStateSaveData { /** 跟随者列表 */ readonly followers: readonly IHeroFollower[]; } -export interface ICoreState { - /** 朝向绑定 */ - readonly roleFace: IRoleFaceBinder; - /** id 到图块数字的映射 */ - readonly idNumberMap: Map; - /** 图块数字到 id 的映射 */ - readonly numberIdMap: Map; - - /** 加载进度对象 */ - readonly loadProgress: ILoadProgressTotal; - /** 数据端加载对象 */ - readonly dataLoader: IMotaDataLoader; - - /** 地图状态 */ - readonly layer: ILayerState; - /** 勇士状态 */ - readonly hero: IHeroState; - - /** 怪物管理器 */ - readonly enemyManager: IEnemyManager; - /** 怪物上下文 */ - readonly enemyContext: IEnemyContext; - - /** Flag 系统 */ - readonly flags: IFlagSystem; - - /** - * 保存状态 - */ - saveState(): IStateSaveData; - - /** - * 加载状态 - * @param data 状态对象 - */ - loadState(data: IStateSaveData): void; -} +export interface ICoreState extends IStateBase {}