2024-08-04 18:14:10 -04:00
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
|
2024-08-13 18:16:31 -04:00
|
|
|
/// Game join request
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
|
|
pub struct GameJoinRequest {
|
|
|
|
pub id: String,
|
|
|
|
}
|
|
|
|
|
2024-08-09 02:57:27 -04:00
|
|
|
/// Game meta
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
|
|
|
pub struct GameMeta {
|
2024-08-13 18:16:31 -04:00
|
|
|
pub uuid: String,
|
2024-08-09 02:57:27 -04:00
|
|
|
pub name: String,
|
2024-08-10 19:50:26 -04:00
|
|
|
pub host: String,
|
|
|
|
pub players: Vec<String>,
|
|
|
|
pub czar: String,
|
2024-08-12 17:14:27 -04:00
|
|
|
pub black: (String, u8),
|
2024-08-10 19:50:26 -04:00
|
|
|
pub white: Vec<String>,
|
2024-08-13 18:16:31 -04:00
|
|
|
pub packs: Vec<u8>,
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Game browser meta
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
|
|
|
pub struct GameBrowserMeta {
|
|
|
|
pub uuid: String,
|
|
|
|
pub name: String,
|
|
|
|
pub host: String,
|
|
|
|
pub players: usize,
|
|
|
|
pub packs: Vec<u8>,
|
2024-08-09 02:57:27 -04:00
|
|
|
}
|
|
|
|
|
2024-08-04 18:14:10 -04:00
|
|
|
/// Card Pack Meta
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
|
|
|
pub struct CardPackMeta {
|
|
|
|
pub name: String,
|
|
|
|
pub pack: u8,
|
|
|
|
pub num_white: usize,
|
|
|
|
pub num_black: usize,
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Card Packs Meta
|
|
|
|
#[derive(Clone, Debug, Serialize, Deserialize)]
|
|
|
|
pub struct CardPacksMeta {
|
|
|
|
pub official_meta: Vec<CardPackMeta>,
|
|
|
|
pub unofficial_meta: Vec<CardPackMeta>,
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Games update
|
|
|
|
#[derive(Serialize, Deserialize, Debug)]
|
|
|
|
pub struct GamesUpdate {
|
2024-08-13 18:16:31 -04:00
|
|
|
pub games: Vec<GameBrowserMeta>,
|
2024-08-04 18:14:10 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/// Chat update
|
|
|
|
#[derive(Serialize, Deserialize, Debug)]
|
|
|
|
pub struct ChatUpdate {
|
|
|
|
pub room: String,
|
|
|
|
pub users: Vec<String>,
|
|
|
|
}
|
|
|
|
|
|
|
|
/// User login request (to change name)
|
|
|
|
#[derive(Serialize, Deserialize, Debug)]
|
|
|
|
pub struct UserLogIn {
|
|
|
|
pub username: String,
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Response to user name change containing new name
|
|
|
|
#[derive(Serialize, Deserialize, Debug)]
|
|
|
|
pub struct UserUpdate {
|
|
|
|
pub username: String,
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Chat message
|
|
|
|
#[derive(Serialize, Deserialize, Debug)]
|
|
|
|
pub struct ChatMessage {
|
|
|
|
pub text: String,
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Server state summary
|
|
|
|
#[derive(Serialize, Deserialize, Debug)]
|
|
|
|
pub struct ServerStateSummary {
|
|
|
|
pub online_users: usize,
|
|
|
|
pub active_games: usize,
|
|
|
|
}
|
|
|
|
|
|
|
|
/// New game request structure
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
|
|
pub struct NewGameRequest {
|
|
|
|
/// Game name
|
|
|
|
pub name: String,
|
|
|
|
pub packs: Vec<u8>,
|
|
|
|
}
|