UNPKG

@haelp/teto

Version:

A typescript-based controllable TETR.IO client.

125 lines 4.08 kB
import type { Game, Room } from "../.."; import type { Relationship, Room as RoomClass } from "../../../classes"; import type { Engine } from "../../../engine"; import type { Game as GameEvents } from "./game"; import type { Ribbon } from "./ribbon"; export type Hex = `#${string}`; export interface Client { /** Fires inside Client.create(), will never fire afterwards. */ "client.ready": { endpoint: string; social: Ribbon["server.authorize"]["social"]; }; /** Fires when recieving an "err" notification. Data is the "msg" of the notification */ "client.error": string; /** Fires when the client dies. */ "client.dead": string; /** * Fires when the websocket closes. * Note: the websocket might just be migrating, to check for a fully disconnected client, use `client.dead` */ "client.close": string; /** Any notification popup */ "client.notify": { msg: string; timeout?: number; subcolor?: Hex; fcolor?: Hex; color?: Hex; bgcolor?: Hex; icon?: string; subicon?: string; header?: string; classes?: string; buttons?: { icon?: string; label: string; classes?: string; }[]; id?: string; }; /** Fires whenever the players state changes. */ "client.room.players": Room.Player[]; /** Fires when the client joins a room */ "client.room.join": RoomClass; /** Fires when a game starts */ "client.game.start": { multi: boolean; ft: number; wb: number; } & { players: { id: string; name: string; points: 0; }[]; }; /** Fires when a round starts (this includes 1-round games) */ "client.game.round.start": [ (cb: Game.Tick.Func) => void, Engine, { name: string; gameid: number; engine: Engine; }[] ]; /** Fires when the client's game ends (topout). Finish = game.replay.end, abort = game.abort, end = game.end or game.advance or game.score */ "client.game.over": { reason: "finish"; data: GameEvents["game.replay.end"]["data"]; } | { reason: "abort"; } | { reason: "end"; } | { reason: "leave"; }; /** Fires when a round is over, sends the gameid of the winning player. */ "client.game.round.end": string; /** * Fires when a game ends. Likely known issue: * @see https://github.com/tetrjs/tetr.js/issues/62 */ "client.game.end": { duration: number; players: { id: string; name: string; points: number; won: boolean; raw: Game.Leaderboard; }[]; }; /** Same as game.abort */ "client.game.abort": void; /** Fires when a message is recived from the server. Contains the raw data of the server message. Useful for logging, do not use for handling events for functionality. Instead, use `client.on(<event>)`. */ "client.ribbon.receive": { command: string; data?: any; }; /** Fires when a message is sent to the server. Contains the raw data of the server message. Useful for logging. */ "client.ribbon.send": { command: string; data?: any; }; /** Fires whenever a Ribbon log is outputted */ "client.ribbon.log": string; /** Fires whenever a Ribbon warning is outputted*/ "client.ribbon.warn": string; /** Fires whenever Ribbon encounters an error */ "client.ribbon.error": string; /** Fires whenever the client is friended */ "client.friended": { id: string; name: string; avatar: number; }; /** Fires when a DM (direct message) has been received and AFTER any unknown data has been loaded about the user */ "client.dm": { user: Relationship; content: string; reply: (message: string) => Promise<void>; }; } //# sourceMappingURL=client.d.ts.map