Files
schafkopf-bot/Frontend/src/BackendMessage.ts
Valentin Heiserer 539e29dc56 Make fit for beta release (#51)
* removed

* edited a lot of stuff
2024-04-25 23:41:50 +00:00

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"
}