feat(frontend): wire message TypeScript types
This commit is contained in:
33
Frontend/src/protocol.ts
Normal file
33
Frontend/src/protocol.ts
Normal file
@@ -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';
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user