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