/** * State - 状态基类 * 所有游戏状态类都应继承此类 */ import type { Patch, EncodedState, EncodeOptions, TrackingOptions } from './types.js'; /** * State 基类 * * @example * ```typescript * class GameState extends State { * @MapField(Player) players = new Map(); * @Field('string') status = 'waiting'; * * constructor() { * super(); * this.startTracking(); // 开始自动追踪 * } * } * ``` */ export declare class State { private _tracker?; private _encoder; private _isTracking; constructor(); /** * 开始追踪状态变化 */ startTracking(options?: TrackingOptions): void; /** * 将普通集合转换为 Tracked 集合 */ private convertToTrackedCollections; /** * 停止追踪状态变化 */ stopTracking(): void; /** * 是否正在追踪 */ get isTracking(): boolean; /** * 获取累积的变化(JSON Patch 格式) * 包括 Tracked 集合的变化 */ getPatches(): Patch[]; /** * 清除累积的变化 */ clearChanges(): void; /** * 是否有变化 */ hasChanges(): boolean; /** * 编码状态为二进制格式 * @param full 是否编码完整状态(true)或仅编码变化(false) */ encode(full?: boolean, options?: EncodeOptions): EncodedState; /** * 从编码数据解码 */ static decode(this: new () => T, encoded: EncodedState | Uint8Array): T; /** * 应用 Patch 到状态 */ applyPatches(patches: Patch[]): void; /** * 克隆状态(深拷贝) */ clone(): this; /** * 转换为普通对象 */ toJSON(): any; /** * 从普通对象恢复状态 */ fromJSON(data: any): void; /** * 获取状态的字段元数据 */ getMetadata(): Map; } //# sourceMappingURL=State.d.ts.map