@haelp/teto
Version:
A typescript-based controllable TETR.IO client.
125 lines • 4.08 kB
TypeScript
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