use serde::{Deserialize, Serialize}; use std::collections::HashSet; /// Judge decision #[derive(Clone, Debug, Serialize, Deserialize)] pub struct JudgeDecisionRequest { pub game_id: String, pub winning_cards: Vec, } /// Judge round #[derive(Clone, Debug, Serialize, Deserialize)] pub struct JudgeRound { pub cards_to_judge: Vec>, } /// Delete game request #[derive(Debug, Serialize, Deserialize)] pub struct GameDeleteRequest { pub delete_game_id: String, } /// Game join request #[derive(Debug, Serialize, Deserialize)] pub struct GameJoinRequest { pub id: String, } /// Player Move Request #[derive(Clone, Debug, Serialize, Deserialize)] pub struct PlayerMoveRequest { pub game_id: String, pub card_ids: Vec, } /// White Card Meta #[derive(Clone, Debug, Hash, Eq, PartialEq, Serialize, Deserialize)] pub struct WhiteCardMeta { pub uuid: String, pub text: String, } /// Game Player Meta #[derive(Clone, Debug, Serialize, Deserialize)] pub struct GamePlayerMeta { pub name: String, pub score: usize, pub submitted: bool, } /// 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 packs: Vec, pub white_count: usize, pub black_count: usize, pub white_discard_count: usize, } /// Game state meta #[derive(Clone, Debug, Serialize, Deserialize)] pub struct GameStateMeta { pub black: (String, u8), pub white: 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: String, 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 UserLogInRequest { 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 user count #[derive(Serialize, Deserialize, Debug)] pub struct ServerOnlineUsers { pub online_users: usize, } /// Server games count #[derive(Serialize, Deserialize, Debug)] pub struct ServerActiveGames { pub active_games: usize, } /// New game request structure #[derive(Debug, Serialize, Deserialize)] pub struct NewGameRequest { /// Game name pub name: String, pub packs: HashSet, }