UNPKG

colyseus.js

Version:

Colyseus Multiplayer SDK for JavaScript/TypeScript

1 lines 2.89 kB
{"version":3,"file":"SchemaSerializer.mjs","sources":["../../../src/serializer/SchemaSerializer.ts"],"sourcesContent":["import { Serializer } from \"./Serializer\";\nimport { Schema, Decoder, Reflection, Iterator, getDecoderStateCallbacks } from \"@colyseus/schema\";\nimport type { Room } from \"../Room\";\n\nexport type SchemaConstructor<T = Schema> = new (...args: any[]) => T;\n\n//\n// TODO: use a schema interface, which even having duplicate definitions, it could be used to get the callback proxy.\n// \n// ```ts\n// export type SchemaCallbackProxy<RoomState> = (<T extends ISchema>(instance: T) => CallbackProxy<T>);\n// export function getStateCallbacks<T extends ISchema>(room: Room<T>) {\n// ```\n//\nexport function getStateCallbacks<T>(room: Room<T>) {\n try {\n // SchemaSerializer\n // @ts-ignore\n return getDecoderStateCallbacks<T>((room['serializer'] as unknown as SchemaSerializer<T>).decoder);\n } catch (e) {\n // NoneSerializer\n return undefined;\n }\n}\n\nexport class SchemaSerializer<T extends Schema = any> implements Serializer<T> {\n state: T;\n decoder: Decoder<T>;\n\n setState(encodedState: Buffer, it?: Iterator) {\n this.decoder.decode(encodedState, it);\n }\n\n getState() {\n return this.state;\n }\n\n patch(patches: Buffer, it?: Iterator) {\n return this.decoder.decode(patches, it);\n }\n\n teardown() {\n this.decoder.root.clearRefs();\n }\n\n handshake(bytes: Buffer, it?: Iterator) {\n if (this.state) {\n //\n // TODO: validate definitions against concreate this.state instance\n //\n Reflection.decode(bytes, it); // no-op\n\n this.decoder = new Decoder(this.state);\n\n } else {\n // initialize reflected state from server\n this.decoder = Reflection.decode(bytes, it);\n this.state = this.decoder.state;\n }\n }\n}\n"],"names":[],"mappings":";;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACM,SAAU,iBAAiB,CAAI,IAAa,EAAA;AAC9C,IAAA,IAAI;;;QAGA,OAAO,wBAAwB,CAAK,IAAI,CAAC,YAAY,CAAoC,CAAC,OAAO,CAAC;;IACpG,OAAO,CAAC,EAAE;;AAER,QAAA,OAAO,SAAS;;AAExB;MAEa,gBAAgB,CAAA;AACzB,IAAA,KAAK;AACL,IAAA,OAAO;IAEP,QAAQ,CAAC,YAAoB,EAAE,EAAa,EAAA;QACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;;IAGzC,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK;;IAGrB,KAAK,CAAC,OAAe,EAAE,EAAa,EAAA;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;;IAG3C,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE;;IAGjC,SAAS,CAAC,KAAa,EAAE,EAAa,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;;;;YAIZ,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAE7B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;aAEnC;;YAEH,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;;;AAG1C;;;;"}