This repository has been archived on 2024-07-02. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
ts-interfaces/generic/index.ts
T

95 lines
2.2 KiB
TypeScript

import { WebSocket } from "ws"
import { IFireGemsStack, IMarket, IMarketStack, IPlayerBoard, IPlayerDiscard, IPlayerHand } from "./containers.js"
export const ClientQueryType = {
ACTION: "action",
SUBSCRIBE: "subscribe",
UNSUBSCRIBE: "unsubscribe",
LOGIN: "login"
} as const
export const ServerQueryType = {
CREATE: "create",
ERROR: "error",
ADD: "add",
REMOVE: "remove",
} as const
export type ClientMessageType = typeof ClientQueryType[keyof typeof ClientQueryType]
export type ServerMessageType = typeof ServerQueryType[keyof typeof ServerQueryType]
export interface ClientMessage {
uuid: string
type: ClientMessageType
target: string
method: string
args: { [key: string]: string }
}
export interface ServerMessage {
type: ServerMessageType
answer_to?: ClientMessage["uuid"]
args: { [key: string]: any }
}
export interface IGameObject {
uuid: string
}
export interface IEffect extends IGameObject {
request_use: () => void
}
export interface ICard extends IGameObject {
}
export interface ITurn extends IGameObject {
readonly effectsAvailables: Array<IEffect>
readonly cardsLocked: Set<ICard>
discardMarkers: number
fuckUMarkers: number
damageReserve: number
goldReserve: number
currentDiscardEffect: IEffect
request_lockCard: (card: ICard) => void
}
export interface IPlayer extends IGameObject {
readonly board: IPlayerBoard
readonly hand: IPlayerHand
readonly discard: IPlayerDiscard
ready: boolean
username: string
user: IUser
request_setReady: (value: boolean) => void
}
export interface ITeam extends IGameObject {
readonly players: Set<IPlayer>
color: string
health: number
request_damage: (amount: number) => void
request_join: (player: IPlayer) => void
}
export interface IGame extends IGameObject {
readonly marketStack: IMarketStack
readonly market: IMarket
readonly fireGems: IFireGemsStack
readonly owner: IPlayer
currentTurn?: ITeam
started: boolean
changeRules: () => void
end: () => void
}
export interface IUser extends IGameObject {
}
export interface ILobby extends IGameObject {
}