From 2ae7313797ae39984bc576e5eb42f18f43c8a914 Mon Sep 17 00:00:00 2001 From: legonzaur Date: Mon, 27 May 2024 23:41:31 +0200 Subject: [PATCH] rework for sse --- client/containers.ts | 47 ---------------------- client/index.ts | 61 ---------------------------- containers.ts | 6 +++ generic/containers.ts | 55 ------------------------- generic/index.ts | 94 ------------------------------------------- index.ts | 60 +++++++++++++++++++++++++++ server/containers.ts | 47 ---------------------- server/index.ts | 68 ------------------------------- 8 files changed, 66 insertions(+), 372 deletions(-) delete mode 100644 client/containers.ts delete mode 100644 client/index.ts create mode 100644 containers.ts delete mode 100644 generic/containers.ts delete mode 100644 generic/index.ts create mode 100644 index.ts delete mode 100644 server/containers.ts delete mode 100644 server/index.ts diff --git a/client/containers.ts b/client/containers.ts deleted file mode 100644 index bdfa13b..0000000 --- a/client/containers.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type { IContainer, IFireGemsStack, IInteractibleContainer, IMarket, IMarketStack, IPlayableContainer, IPlayerBoard, IPlayerDiscard, IPlayerHand, IPlayerStack } from "../generic/containers.js" -import type { ICard } from "../generic/index.js" - -export interface ICContainer extends IContainer { - onCardsAppend: (cards: Array) => void - onDraw: (cards: Array) => void - onRemoveCards: (cards: Array) => void - onShuffle: () => void -} - -export interface ICInteractibleContainer extends IInteractibleContainer { - onSacrifice: (card: ICard) => void -} - -export interface ICPlayableContainer extends IPlayableContainer { - onDiscard: (card: ICard) => void -} - -export interface ICMarketStack extends IMarketStack { - -} - -export interface ICMarket extends IMarket { - onBuy: (card: ICard) => void - onBuyInHand: (card: ICard) => void - onBuyInStack: (card: ICard) => void -} - -export interface ICFireGemsStack extends IFireGemsStack { - -} - -export interface ICPlayerStack extends IPlayerStack { - -} - -export interface ICPlayerDiscard extends IPlayerDiscard { - onPutOnStack: (card: ICard) => void -} - -export interface ICPlayerHand extends IPlayerHand { - onPutAllOnBoard: () => void -} - -export interface ICPlayerBoard extends IPlayerBoard { - onStunChampion: (card: ICard) => void -} \ No newline at end of file diff --git a/client/index.ts b/client/index.ts deleted file mode 100644 index 776895f..0000000 --- a/client/index.ts +++ /dev/null @@ -1,61 +0,0 @@ -import type { ICard, IEffect, IGame, ILobby, IPlayer, ITeam, ITurn, IUser } from "../generic/index.js" -import type { ISLobby } from "../server/index.js" - -export interface ICEffect extends IEffect { - -} - -export interface ICCard extends ICard { - -} - -export interface ICTurn extends ITurn { - onCardLock: (card: ICard) => void -} - -export interface ICPlayer extends IPlayer { - onReadyStateChange: (ready: boolean) => void -} - -export interface ICTeam extends ITeam { - damage: (amount: number) => void - join: () => void - - onTakeDamage: (amount: number) => void - onPlayerAdd: (player: IPlayer) => void - onPlayerRemove: (player: IPlayer) => void - onStartTurn: () => void - onEndTurn: () => void - onDie: () => void -} - -export interface ICGame extends IGame { - join: () => void - kick: (player: IPlayer) => void - leave: () => void - start: () => void - - request_join: () => void - request_kick: (player: ICPlayer) => void - request_leave: () => void - request_start: () => void - request_changeRules: () => void - request_gameEnd: () => void - - onRulesChange: () => void - onAddTeam: (team: ITeam) => void - onRemoveTeam: (team: ITeam) => void - onGameStart: () => void - onGameEnd: () => void -} - -export interface ICUser extends IUser { - -} -export interface ICLobby extends ILobby { - request_createGame: () => Promise> - // request_login: () => Promise> - - onAddGame: (args: ReturnType) => void - onRemoveGame: (args: ReturnType) => void -} \ No newline at end of file diff --git a/containers.ts b/containers.ts new file mode 100644 index 0000000..4812abe --- /dev/null +++ b/containers.ts @@ -0,0 +1,6 @@ +export enum ContainerVisibility { + NONE = "none", + ONLY_LAST = "only_last", + ALL = "all", + PROTECTED = "protected" +} diff --git a/generic/containers.ts b/generic/containers.ts deleted file mode 100644 index b9b8326..0000000 --- a/generic/containers.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type { ICard, IGame, IGameObject, IPlayer } from "./index.js" - -export enum ContainerVisibility { - NONE = "none", - ONLY_LAST = "only_last", - ALL = "all", - PROTECTED = "protected" -} - -export interface IContainer extends IGameObject { - owner: T - readonly visibility: ContainerVisibility -} - -export interface IInteractibleContainer extends IContainer { - readonly visibility: ContainerVisibility.ALL | ContainerVisibility.PROTECTED - request_sacrifice: (card: ICard) => void -} - -export interface IPlayableContainer extends IInteractibleContainer { - request_discard: (card: ICard) => void -} - -export interface IMarketStack extends IContainer { - readonly visibility: ContainerVisibility.NONE -} - -export interface IMarket extends IContainer { - readonly visibility: ContainerVisibility.ALL - request_buy: (card: ICard) => void - request_buyInHand: (card: ICard) => void - request_buyInStack: (card: ICard) => void -} - -export interface IFireGemsStack extends IMarket { - -} - -export interface IPlayerStack extends IContainer { - readonly visibility: ContainerVisibility.NONE -} - -export interface IPlayerDiscard extends IInteractibleContainer { - readonly visibility: ContainerVisibility.ALL - request_putOnStack: (card: ICard) => void -} - -export interface IPlayerHand extends IPlayableContainer { - readonly visibility: ContainerVisibility.PROTECTED -} - -export interface IPlayerBoard extends IPlayableContainer { - readonly visibility: ContainerVisibility.ALL - request_stunChampion: (card: ICard) => void -} \ No newline at end of file diff --git a/generic/index.ts b/generic/index.ts deleted file mode 100644 index 8ab1c7e..0000000 --- a/generic/index.ts +++ /dev/null @@ -1,94 +0,0 @@ -import type { 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 - readonly cardsLocked: Set - 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 - 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 { - -} \ No newline at end of file diff --git a/index.ts b/index.ts new file mode 100644 index 0000000..a79d0b5 --- /dev/null +++ b/index.ts @@ -0,0 +1,60 @@ +export interface ClientMessage { + uuid: string + target: string + method: string + args: { [key: string]: string } +} + +export interface LobbyEvents { + 'newGame': (author: IUser, game: IGameListing) => void; +} + + + +type TeamEvents = { + team_addPlayer: { gameObject: string, data: IPlayer }, + test: { bite: number, data: IPlayer } +} + +type TE = { + [T in keyof TeamEvents]: { event: T } & TeamEvents[T] +} + + + + + + +type ChildEvents = TE + +export interface GameEvents { + "createTeam": (author: IUser, team: ITeam) => void + "removeTeam": (author: IUser, team: ITeam) => void + "createPlayer": (author: IUser, player: IPlayer) => void + "removePlayer": (author: IUser, player: IPlayer, reason: string) => void + "childEvent": (event: ChildEvents[keyof ChildEvents]) => void +} + + +export interface IGameObject { + readonly uuid: string +} + +export interface IUser { + readonly username: string + readonly image: string +} + +export interface IPlayer extends IGameObject { + +} + +export interface ITeam extends IGameObject { + +} +export interface IGameListing extends IGameObject { + readonly players: IUser[] + readonly started: boolean + readonly owner: string + readonly rules: {} +} \ No newline at end of file diff --git a/server/containers.ts b/server/containers.ts deleted file mode 100644 index 13894e9..0000000 --- a/server/containers.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type { IContainer, IFireGemsStack, IInteractibleContainer, IMarket, IMarketStack, IPlayableContainer, IPlayerBoard, IPlayerDiscard, IPlayerHand, IPlayerStack } from "../generic/containers.js" -import type { ISCard } from "./index.js" - -export interface ISContainer extends IContainer { - appendCards: (cards: Array) => void - draw: (amount: number) => Array - removeCards: (cards: Array) => void - shuffle: () => void -} - -export interface ISInteractibleContainer extends IInteractibleContainer { - sacrifice: (card: ISCard) => void -} - -export interface ISPlayableContainer extends IPlayableContainer { - discard: (card: ISCard) => void -} - -export interface ISMarketStack extends IMarketStack { - -} - -export interface ISMarket extends IMarket { - buy: (card: ISCard) => void - buyInHand: (card: ISCard) => void - buyInStack: (card: ISCard) => void -} - -export interface ISFireGemsStack extends IFireGemsStack { - -} - -export interface ISPlayerStack extends IPlayerStack { - -} - -export interface ISPlayerDiscard extends IPlayerDiscard { - putOnStack: (card: ISCard) => void -} - -export interface ISPlayerHand extends IPlayerHand { - putAllOnBoard: () => void -} - -export interface ISPlayerBoard extends IPlayerBoard { - stunChampion: (card: ISCard) => void -} \ No newline at end of file diff --git a/server/index.ts b/server/index.ts deleted file mode 100644 index 2f38fe4..0000000 --- a/server/index.ts +++ /dev/null @@ -1,68 +0,0 @@ -import type { ICard, IEffect, IGame, ILobby, IPlayer, ITeam, ITurn, IUser, ServerMessage } from "../generic/index.js" -import { WebSocket } from "ws" - -export interface ISClientProvider { - socket: WebSocket - send: (message: ServerMessage) => void -} -export interface ISQuery { - readonly provider: ISClientProvider - readonly args: { [key: string]: string } | string - readonly method?: string - readonly target: string - accept: (message: Omit) => void - cancel: (message: Omit) => void - error: (message: string) => void -} - -export interface ISEffect extends IEffect { - use: () => void -} - -export interface ISCard extends ICard { - -} - -export interface ISTurn extends ITurn { - lockCard: (card: ICard) => void -} - -export interface ISPlayer extends IPlayer { - setReady: (ready: boolean) => void -} - -export interface ISTeam extends ITeam { - - damage: (amount: number) => void - addPlayer: (player: IPlayer) => void - removePlayer: (player: IPlayer) => void - startTurn: () => void - endTurn: () => void - die: () => void -} - -export interface ISGame extends IGame { - addTeam: (team: ISTeam) => void - removeTeam: (team: ISTeam) => void - start: () => void - - request_join: (query: ISQuery) => void - request_kick: (query: ISQuery) => void - request_leave: (query: ISQuery) => void - request_start: (query: ISQuery) => void - request_changeRules: (query: ISQuery) => void - request_gameEnd: (query: ISQuery) => void - -} - -export interface ISUser extends IUser { - -} - -export interface ISLobby extends ILobby { - createGame: () => string - removeGame: (game: ISGame) => void - - request_createGame: (query: ISQuery) => void - // request_login: (query: ISQuery) => void -} \ No newline at end of file