Archived
initial commit
This commit is contained in:
@@ -0,0 +1,47 @@
|
|||||||
|
import { ContainerVisibility, IContainer, IFireGemsStack, IInteractibleContainer, IMarket, IMarketStack, IPlayableContainer, IPlayerBoard, IPlayerDiscard, IPlayerHand, IPlayerStack } from "../generic/containers.js"
|
||||||
|
import { IGameObject, ICard, IPlayer, IGame } from "../generic/index.js"
|
||||||
|
|
||||||
|
export interface ICContainer<T> extends IContainer<T> {
|
||||||
|
onCardsAppend: (cards: Array<ICard>) => void
|
||||||
|
onDraw: (cards: Array<ICard>) => void
|
||||||
|
onRemoveCards: (cards: Array<ICard>) => 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
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
import { IFireGemsStack, IMarket, IMarketStack, IPlayerBoard, IPlayerDiscard, IPlayerHand } from "../generic/containers.js"
|
||||||
|
import { ICard, IEffect, IGame, IGameObject, ILobby, IPlayer, ITeam, ITurn, IUser } from "../generic/index.js"
|
||||||
|
import { 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<ReturnType<ISLobby["request_createGame"]>>
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
import { ICard, IGame, IGameObject, IPlayer } from "./index.js"
|
||||||
|
|
||||||
|
export enum ContainerVisibility {
|
||||||
|
NONE = "none",
|
||||||
|
ONLY_LAST = "only_last",
|
||||||
|
ALL = "all",
|
||||||
|
PROTECTED = "protected"
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IContainer<T> extends IGameObject {
|
||||||
|
owner: T
|
||||||
|
readonly visibility: ContainerVisibility
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IInteractibleContainer extends IContainer<IPlayer> {
|
||||||
|
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<IGame> {
|
||||||
|
readonly visibility: ContainerVisibility.NONE
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IMarket extends IContainer<IGame> {
|
||||||
|
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<IPlayer> {
|
||||||
|
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
|
||||||
|
}
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
import { WebSocket } from "ws"
|
||||||
|
import { IFireGemsStack, IMarket, IMarketStack, IPlayerBoard, IPlayerDiscard, IPlayerHand } from "./containers.js"
|
||||||
|
|
||||||
|
export const ClientQueryType = {
|
||||||
|
ACTION: "action",
|
||||||
|
SUBSCRIBE: "subscribe",
|
||||||
|
UNSUBSCRIBE: "unsubscribe",
|
||||||
|
} 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 {
|
||||||
|
|
||||||
|
removeGame: () => void
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
import { ContainerVisibility, IContainer, IFireGemsStack, IInteractibleContainer, IMarket, IMarketStack, IPlayableContainer, IPlayerBoard, IPlayerDiscard, IPlayerHand, IPlayerStack } from "../generic/containers.js"
|
||||||
|
import { IGameObject, ICard, IPlayer, IGame } from "../generic/index.js"
|
||||||
|
import { ISCard } from "./index.js"
|
||||||
|
|
||||||
|
export interface ISContainer<T> extends IContainer<T> {
|
||||||
|
appendCards: (cards: Array<ISCard>) => void
|
||||||
|
draw: (amount: number) => Array<ISCard>
|
||||||
|
removeCards: (cards: Array<ISCard>) => 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
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
import { 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 {
|
||||||
|
provider: ISClientProvider
|
||||||
|
accept: (message: ServerMessage) => void
|
||||||
|
cancel: (message: ServerMessage) => 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: () => void
|
||||||
|
request_createGame: (query: ISQuery) => void
|
||||||
|
request_login: (query: ISQuery) => void
|
||||||
|
|
||||||
|
subscribe: (query: ISQuery) => any
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user