refactor(core): 使用fflate替换msgpack以兼容小游戏环境

This commit is contained in:
YHH
2025-10-28 14:08:34 +08:00
parent 4e81fc7eba
commit 683203919f
7 changed files with 59 additions and 33 deletions

View File

@@ -11,7 +11,7 @@ import { ComponentType, ComponentRegistry } from '../Core/ComponentStorage';
import { EntitySerializer, SerializedEntity } from './EntitySerializer';
import { getComponentTypeName } from '../Decorators';
import { getSerializationMetadata } from './SerializationDecorators';
import { encode, decode } from '@msgpack/msgpack';
import { BinarySerializer } from '../../Utils/BinarySerializer';
/**
* 场景序列化格式
@@ -200,14 +200,12 @@ export class SceneSerializer {
};
}
// 根据格式返回数据
if (opts.format === 'json') {
return opts.pretty
? JSON.stringify(serializedScene, null, 2)
: JSON.stringify(serializedScene);
} else {
// 二进制格式(使用 MessagePack
return encode(serializedScene);
return BinarySerializer.encode(serializedScene);
}
}
@@ -229,15 +227,12 @@ export class SceneSerializer {
...options
};
// 解析数据
let serializedScene: SerializedScene;
try {
if (typeof saveData === 'string') {
// JSON格式
serializedScene = JSON.parse(saveData);
} else {
// 二进制格式MessagePack
serializedScene = decode(saveData) as SerializedScene;
serializedScene = BinarySerializer.decode(saveData) as SerializedScene;
}
} catch (error) {
throw new Error(`Failed to parse save data: ${error}`);