UNPKG

@haelp/teto

Version:

A typescript-based controllable TETR.IO client.

1 lines 2.53 kB
{"version":3,"sources":["../../../../src/utils/adapters/types/messages.ts"],"sourcesContent":["import type { AdapterKey } from \".\";\nimport type { BoardSquare, Engine, Mino } from \"../../../engine\";\nimport type { KickTableName } from \"../../../engine/utils/kicks/data\";\nimport type { Game } from \"../../../types\";\n\nexport interface CustomMessageData {\n info: void;\n move: void;\n\n config: void;\n state: void;\n pieces: void;\n play: void;\n}\n\nexport namespace Incoming {\n export interface Info<Data extends CustomMessageData> {\n type: \"info\";\n name: string;\n version: string;\n author: string;\n data: Data[\"info\"];\n }\n\n export interface Move<Data extends CustomMessageData> {\n type: \"move\";\n keys: AdapterKey[];\n data: Data[\"move\"];\n }\n\n export type all<Data extends CustomMessageData> = Info<Data> | Move<Data>;\n\n export type EventMap<Data extends CustomMessageData> = {\n [key in all<Data>[\"type\"]]: Extract<all<Data>, { type: key }>;\n };\n}\n\nexport namespace Outgoing {\n export interface Config<Data extends CustomMessageData> {\n type: \"config\";\n\n boardWidth: number;\n boardHeight: number;\n\n kicks: KickTableName;\n spins: Game.SpinBonuses;\n comboTable: Game.ComboTable;\n\n b2bCharing: boolean;\n b2bChargeAt: number;\n b2bChargeBase: number;\n b2bChaining: boolean;\n\n garbageMultiplier: number;\n garbageCap: number;\n garbageSpecialBonus: boolean;\n\n pcB2b: number;\n pcGarbage: number;\n\n queue: Engine[\"queue\"][\"value\"];\n\n data: Data[\"config\"];\n }\n\n export interface State<Data extends CustomMessageData> {\n type: \"state\";\n\n board: BoardSquare[][];\n\n current: Mino;\n hold: Mino | null;\n queue: Mino[];\n\n garbage: number[];\n\n combo: number;\n b2b: number;\n\n data: Data[\"state\"];\n }\n\n export interface Pieces<Data extends CustomMessageData> {\n type: \"pieces\";\n pieces: Mino[];\n data: Data[\"pieces\"];\n }\n\n export interface Play<Data extends CustomMessageData> {\n type: \"play\";\n\n garbageMultiplier: number;\n garbageCap: number;\n\n data: Data[\"play\"];\n }\n\n export type all<Data extends CustomMessageData> =\n | Config<Data>\n | State<Data>\n | Pieces<Data>\n | Play<Data>;\n\n export type EventMap<Data extends CustomMessageData> = {\n [key in all<Data>[\"type\"]]: Extract<all<Data>, { type: key }>;\n };\n}\n"],"names":[],"mappings":"AAqCA,WAqEC"}