diff options
author | Tyler Murphy <tylerm@tylerm.dev> | 2023-06-16 20:38:55 -0400 |
---|---|---|
committer | Tyler Murphy <tylerm@tylerm.dev> | 2023-06-16 20:38:55 -0400 |
commit | 44334fc3852eb832280a335f72e6416c93a9f19f (patch) | |
tree | 4a97b6064a97c4ad58c07d89050ad8a11e7a4f70 /client/src/types.ts | |
parent | better map bg renderer (diff) | |
download | tuxman-44334fc3852eb832280a335f72e6416c93a9f19f.tar.gz tuxman-44334fc3852eb832280a335f72e6416c93a9f19f.tar.bz2 tuxman-44334fc3852eb832280a335f72e6416c93a9f19f.zip |
ts
Diffstat (limited to 'client/src/types.ts')
-rw-r--r-- | client/src/types.ts | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/client/src/types.ts b/client/src/types.ts new file mode 100644 index 0000000..df0c8b1 --- /dev/null +++ b/client/src/types.ts @@ -0,0 +1,131 @@ + +export enum Wall { + EMPTY, + WALL_HZ, + WALL_VT, + TURN_Q1, + TURN_Q2, + TURN_Q3, + TURN_Q4, + TEE_NORTH, + TEE_EAST, + TEE_SOUTH, + TEE_WEST, + CROSS, + DOT, + WALL_END_NORTH, + WALL_END_SOUTH, + WALL_END_EAST, + WALL_END_WEST +} + +export enum ItemType { + DOT +} + +export enum Key { + NOTHING, + UP, + DOWN, + LEFT, + RIGHT +} + +export type KeyMap = { + [key: string]: Key +} + +export const GameKeyMap = { + "KeyW": Key.UP, + "KeyA": Key.LEFT, + "KeyS": Key.DOWN, + "KeyD": Key.RIGHT, +} + +export enum Rotation { + NOTHING, + NORTH, + EAST, + SOUTH, + WEST +} + +export type Vec2 = { + x: number, + y: number +} + +export type InputMap = { + [key: number]: Key +} + +export type Player = { + pos: Vec2, + moveRotation: Rotation, + inputRotation: Rotation, + name?: string, + moving: boolean +} + +export type PlayerInput = { + start: boolean, + key: Key, + name?: string +} + +export type Input = { + players: {[key: number]: PlayerInput}, + added?: number[], + removed?: number[], +} + +export type Message = { + type?: string; + connections?: number[], + added?: number, + removed?: number, + id?: number, + frame?: number, + data?: any, + connection?: number, + state?: GameState, + error?: string +} + +export type Players = { + [key: number]: Player +} + +export type Item = { + type: ItemType, + pos: Vec2 +} + +export type Items = { + [key: number]: Item +} + +export type Map = { + data: number[], + walls: number[], + width: number, + height: number, + id: number +} + +export type Maps = { + [key: number]: Map +} + +export type GameState = { + started: boolean, + input: InputMap, + players: Players, + items: Items, + mapId: number | undefined +} + +export type Frame = { + data: GameState, + input: Input +} |