cards/lib/src/lib.rs

115 lines
2.4 KiB
Rust
Raw Normal View History

2024-08-18 18:48:37 -04:00
use std::collections::BTreeSet;
2024-08-04 18:14:10 -04:00
use serde::{Deserialize, Serialize};
2024-08-19 18:40:22 -04:00
/// Delete game request
#[derive(Debug, Serialize, Deserialize)]
pub struct GameDeleteRequest {
pub delete_game_id: String,
}
2024-08-13 18:16:31 -04:00
/// Game join request
#[derive(Debug, Serialize, Deserialize)]
pub struct GameJoinRequest {
pub id: String,
}
2024-08-17 21:55:15 -04:00
/// Player Move Request
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct PlayerMoveRequest {
pub game_id: String,
2024-08-18 18:48:37 -04:00
pub card_ids: BTreeSet<String>,
2024-08-17 21:55:15 -04:00
}
/// White Card Meta
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct WhiteCardMeta {
pub uuid: String,
pub text: String,
}
2024-08-09 02:57:27 -04:00
/// Game meta
#[derive(Clone, Debug, Serialize, Deserialize)]
2024-08-14 00:16:54 -04:00
pub struct GameStateMeta {
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-17 21:55:15 -04:00
pub white: Vec<WhiteCardMeta>,
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)]
2024-08-14 20:38:19 -04:00
pub struct UserLogInRequest {
2024-08-04 18:14:10 -04:00
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>,
}