use serde::{Deserialize, Serialize}; /// Game join request #[derive(Debug, Serialize, Deserialize)] pub struct GameJoinRequest { pub id: String, } /// Game meta #[derive(Clone, Debug, Serialize, Deserialize)] pub struct GameMeta { pub uuid: String, pub name: String, pub host: String, pub players: Vec, pub czar: String, pub black: (String, u8), pub white: Vec, pub packs: Vec, } /// 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, } /// 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, pub unofficial_meta: Vec, } /// Games update #[derive(Serialize, Deserialize, Debug)] pub struct GamesUpdate { pub games: Vec, } /// Chat update #[derive(Serialize, Deserialize, Debug)] pub struct ChatUpdate { pub room: String, pub users: Vec, } /// 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, }