mirror of
https://github.com/Vale54321/schafkopf-bot.git
synced 2025-12-16 19:59:33 +01:00
177 lines
4.2 KiB
TypeScript
177 lines
4.2 KiB
TypeScript
// Enum for KartenSymbol
|
|
enum KartenFarbe {
|
|
SCHELL = "SCH",
|
|
HERZ = "HERZ",
|
|
BLATT = "BLATT",
|
|
EICHEL = "EICHEL",
|
|
TRUMPF = "TRUMPF",
|
|
}
|
|
|
|
// enum KartenSymbol {
|
|
// SEVEN = "7",
|
|
// EIGHT = "8",
|
|
// NINE = "9",
|
|
// TEN = "X",
|
|
// UNTER = "U",
|
|
// OBER = "O",
|
|
// KOENIG = "K",
|
|
// ASS = "A",
|
|
// }
|
|
|
|
export enum Card {
|
|
EICHEL_7 = 'EICHEL_7',
|
|
EICHEL_8 = 'EICHEL_8',
|
|
EICHEL_9 = 'EICHEL_9',
|
|
EICHEL_X = 'EICHEL_X',
|
|
EICHEL_K = 'EICHEL_K',
|
|
EICHEL_A = 'EICHEL_A',
|
|
|
|
BLATT_7 = 'BLATT_7',
|
|
BLATT_8 = 'BLATT_8',
|
|
BLATT_9 = 'BLATT_9',
|
|
BLATT_X = 'BLATT_X',
|
|
BLATT_K = 'BLATT_K',
|
|
BLATT_A = 'BLATT_A',
|
|
|
|
SCHELL_7 = 'SCHELL_7',
|
|
SCHELL_8 = 'SCHELL_8',
|
|
SCHELL_9 = 'SCHELL_9',
|
|
SCHELL_X = 'SCHELL_X',
|
|
SCHELL_K = 'SCHELL_K',
|
|
SCHELL_A = 'SCHELL_A',
|
|
|
|
HERZ_7 = 'HERZ_7',
|
|
HERZ_8 = 'HERZ_8',
|
|
HERZ_9 = 'HERZ_9',
|
|
HERZ_X = 'HERZ_X',
|
|
HERZ_K = 'HERZ_K',
|
|
HERZ_A = 'HERZ_A',
|
|
|
|
SCHELL_U = 'SCHELL_U',
|
|
HERZ_U = 'HERZ_U',
|
|
BLATT_U = 'BLATT_U',
|
|
EICHEL_U = 'EICHEL_U',
|
|
|
|
SCHELL_O = 'SCHELL_O',
|
|
HERZ_O = 'HERZ_O',
|
|
BLATT_O = 'BLATT_O',
|
|
EICHEL_O = 'EICHEL_O',
|
|
|
|
BACK = "CARD_BACK"
|
|
// Add other card combinations as needed
|
|
}
|
|
|
|
export enum GamePhase {
|
|
CHOOSE_GAME = "CHOOSE_GAME",
|
|
GAME_START = "GAME_START",
|
|
GAME_STOP = "GAME_STOP",
|
|
TRICK_START = "TRICK_START",
|
|
WAIT_FOR_CARD = "WAIT_FOR_CARD",
|
|
PLAYER_CARD = "PLAYER_CARD",
|
|
PLAYER_TRICK = "PLAYER_TRICK"
|
|
}
|
|
|
|
export enum MessageType {
|
|
PLAYER_CARD = "PLAYER_CARD",
|
|
START_DEDICATED_GAME = "START_DEDICATED_GAME",
|
|
JOIN_ONLINE_GAME = "JOIN_ONLINE_GAME",
|
|
LEAVE_ONLINE_GAME = "LEAVE_ONLINE_GAME",
|
|
REQUEST_SERVER_CONNECTION = "REQUEST_SERVER_CONNECTION",
|
|
CREATE_ONLINE_GAME = "CREATE_ONLINE_GAME",
|
|
LIST_ONLINE_GAMES = "LIST_ONLINE_GAMES",
|
|
UNKNOWN_ERROR = "UNKNOWN_ERROR",
|
|
INFO_MESSAGE = "INFO_MESSAGE",
|
|
GET_ONLINE_GAME = "GET_ONLINE_GAME",
|
|
SET_STATUS_READY = "SET_STATUS_READY",
|
|
GAME_STATE = "GAME_STATE",
|
|
ONLINE_PLAYER_HAND = "ONLINE_PLAYER_HAND",
|
|
SERVER_CONNECTION_SUCCESSFUL = "SERVER_CONNECTION_SUCCESSFUL",
|
|
SET_PLAYER_NAME = "SET_PLAYER_NAME",
|
|
GAME_START_READY = "GAME_START_READY",
|
|
}
|
|
|
|
// Define the interface for an array of cards
|
|
export interface CardArrayMessage {
|
|
message_type: MessageType.ONLINE_PLAYER_HAND;
|
|
content: { cards: Card[] };
|
|
}
|
|
|
|
export interface CardMessage {
|
|
message_type: MessageType.PLAYER_CARD;
|
|
content: { card: Card };
|
|
}
|
|
|
|
// Define the interface for the game state
|
|
export interface GameState {
|
|
gamePhase: GamePhase;
|
|
currentPlayer?: string;
|
|
card?: Card;
|
|
color?: KartenFarbe;
|
|
trumpf?: boolean;
|
|
}
|
|
|
|
export interface GameSession {
|
|
serverName: string;
|
|
playerCount: number;
|
|
players: OnlinePlayer[];
|
|
}
|
|
|
|
export interface OnlinePlayer {
|
|
playerName: string;
|
|
isReady: boolean;
|
|
isBot?: boolean;
|
|
}
|
|
|
|
export interface GameStateMessage {
|
|
message_type: MessageType.GAME_STATE;
|
|
content: GameState;
|
|
}
|
|
|
|
export interface GameListMessage {
|
|
message_type: MessageType.LIST_ONLINE_GAMES;
|
|
content: { games: GameSession[] };
|
|
}
|
|
|
|
export interface GameInfoMessage {
|
|
message_type: MessageType.GET_ONLINE_GAME;
|
|
content: { game: GameSession };
|
|
}
|
|
|
|
export interface JoinGameMessage {
|
|
message_type: MessageType.JOIN_ONLINE_GAME;
|
|
content: { serverName: string };
|
|
}
|
|
|
|
export interface ErrorMessage {
|
|
message_type: MessageType.UNKNOWN_ERROR;
|
|
content: { error: string };
|
|
}
|
|
|
|
export interface InfoMessage {
|
|
message_type: MessageType.INFO_MESSAGE;
|
|
content: { message: string };
|
|
}
|
|
|
|
export interface EmptyMessage {
|
|
message_type: MessageType.SERVER_CONNECTION_SUCCESSFUL | MessageType.GAME_START_READY | MessageType.REQUEST_SERVER_CONNECTION;
|
|
}
|
|
|
|
export interface SetPlayerNameMessage {
|
|
message_type: MessageType.SET_PLAYER_NAME;
|
|
content: { playerName: string }
|
|
}
|
|
|
|
// Define a union type for all possible message types
|
|
export type BackendMessage =
|
|
GameListMessage
|
|
| JoinGameMessage
|
|
| ErrorMessage
|
|
| InfoMessage
|
|
| GameInfoMessage | GameStateMessage | CardArrayMessage | CardMessage | EmptyMessage | SetPlayerNameMessage;
|
|
|
|
export enum MessageBoardType {
|
|
ERROR = "alert-error",
|
|
WARNING = "alert-warning",
|
|
INFO = "alert-info",
|
|
SUCCESS = "alert-success"
|
|
} |