diff --git a/Frontend/src/protocol.ts b/Frontend/src/protocol.ts new file mode 100644 index 0000000..f38e050 --- /dev/null +++ b/Frontend/src/protocol.ts @@ -0,0 +1,33 @@ +// Wire messages exchanged with the backend over WebSocket. +// Mirror of Backend/WireMessages.cs. + +export interface CursorMessage { + type: 'cursor'; + x: number; + y: number; +} + +export interface InitFrame { + type: 'init'; + world: [number, number]; +} + +export interface StateFrame { + type: 'state'; + x: number; + y: number; + angle: number; + engine: number; + target: [number, number]; + step: number; +} + +export type ServerFrame = InitFrame | StateFrame; + +export function isInit(frame: ServerFrame): frame is InitFrame { + return frame.type === 'init'; +} + +export function isState(frame: ServerFrame): frame is StateFrame { + return frame.type === 'state'; +}