diff --git a/index.ts b/index.ts index 65cc049..fe65c97 100644 --- a/index.ts +++ b/index.ts @@ -6,11 +6,14 @@ export interface ClientMessage { } export interface LobbyEvents { - newGame: (author: IUser, game: IGameListing) => void; + newGame: (author: IUser, game: IGame) => void; + updateGame: (game: IGame) => void; + removeGame: (game: string) => void; } type TeamEvents = { - team_addPlayer: { gameObject: string; data: IPlayer }; + team_addPlayer: { gameObject: string; data: string }; + team_removePlayer: { gameObject: string; data: string }; }; type TE = { @@ -20,27 +23,44 @@ type TE = { type ChildEvents = TE; export interface GameEvents { + start: () => void; createTeam: (author: IUser, team: ITeam) => void; - removeTeam: (author: IUser, team: ITeam) => void; + removeTeam: (team: ITeam) => void; createPlayer: (author: IUser, player: IPlayer) => void; - removePlayer: (author: IUser, player: IPlayer, reason: string) => void; + removePlayer: (player: IPlayer, reason?: string) => void; childEvent: (event: ChildEvents[keyof ChildEvents]) => void; } +export interface ICard extends IGameObject {} + +export interface IContainer extends IGameObject { + cards: Array; +} export interface IGameObject { readonly uuid: string; } -export interface IUser { +export interface IUser extends IGameObject { readonly username: string; readonly image: string; } -export interface IPlayer extends IGameObject {} +export interface IPlayer extends IGameObject { + hand: IContainer; + discard: IContainer; + stack: IContainer; + board: IContainer; + user: IUser; +} -export interface ITeam extends IGameObject {} -export interface IGameListing extends IGameObject { - readonly players: IUser[]; +export interface ITeam extends IGameObject { + players: IUser[]; +} +export interface IGame extends IGameObject { + readonly teams: ITeam[]; + readonly market: IContainer; + readonly marketStack: IContainer; + readonly fireGems: IContainer; readonly started: boolean; readonly owner: string; readonly rules: {};