cards/lib/src/lib.rs

191 lines
4.3 KiB
Rust
Raw Normal View History

2024-08-04 18:14:10 -04:00
use serde::{Deserialize, Serialize};
2024-12-02 22:50:49 -05:00
pub enum ClientToServerMessage {}
2024-12-03 17:45:50 -05:00
#[derive(Serialize, Deserialize, Debug)]
2024-12-02 22:50:49 -05:00
pub enum ServerToClientMessage {
CardPacksMeta(CardPacksMeta),
ChatMessage(ChatMessage),
ChatUpdate(ChatUpdate),
GameMeta(GameMeta),
GameStateMeta(GameStateMeta),
GamesUpdate(GamesUpdate),
JudgeRound(JudgeRound),
ServerActiveGames(ServerActiveGames),
ServerOnlineUsers(ServerOnlineUsers),
UserUpdate(UserUpdate),
}
2024-12-03 17:45:50 -05:00
#[derive(Serialize, Deserialize)]
2024-12-02 22:50:49 -05:00
pub enum CardsMessage {
BlackCardMeta(BlackCardMeta),
CardPackMeta(CardPackMeta),
GameBrowserMeta(GameBrowserMeta),
GameDeleteRequest(GameDeleteRequest),
GameJoinRequest(GameJoinRequest),
GamePlayerMeta(GamePlayerMeta),
JudgeDecisionRequest(JudgeDecisionRequest),
JudgeEntry(JudgeEntry),
NewGameRequest(NewGameRequest),
PlayerMoveRequest(PlayerMoveRequest),
UserLogInRequest(UserLogInRequest),
WhiteCardMeta(WhiteCardMeta),
}
2024-08-20 22:25:39 -04:00
/// Judge decision
2024-12-03 17:45:50 -05:00
#[derive(Clone, Serialize, Deserialize)]
2024-08-20 22:25:39 -04:00
pub struct JudgeDecisionRequest {
pub game_id: String,
pub winning_cards: Vec<String>,
}
2024-11-15 19:39:48 -05:00
/// White Card Meta
2024-12-03 17:45:50 -05:00
#[derive(Debug, Clone, Hash, Eq, PartialEq, Serialize, Deserialize)]
2024-11-15 19:39:48 -05:00
pub struct WhiteCardMeta {
pub uuid: String,
pub text: String,
}
/// Judge entry
2024-12-03 17:45:50 -05:00
#[derive(Debug, Clone, Serialize, Deserialize)]
2024-11-15 19:39:48 -05:00
pub struct JudgeEntry {
pub cards_to_judge: Vec<WhiteCardMeta>,
}
2024-08-20 22:25:39 -04:00
/// Judge round
2024-12-03 17:45:50 -05:00
#[derive(Debug, Clone, Serialize, Deserialize)]
2024-08-20 22:25:39 -04:00
pub struct JudgeRound {
2024-11-15 19:39:48 -05:00
pub entries: Vec<JudgeEntry>,
2024-08-20 22:25:39 -04:00
}
2024-08-19 18:40:22 -04:00
/// Delete game request
2024-12-03 17:45:50 -05:00
#[derive(Serialize, Deserialize)]
2024-08-19 18:40:22 -04:00
pub struct GameDeleteRequest {
pub delete_game_id: String,
}
2024-08-13 18:16:31 -04:00
/// Game join request
2024-12-03 17:45:50 -05:00
#[derive(Serialize, Deserialize)]
2024-08-13 18:16:31 -04:00
pub struct GameJoinRequest {
pub id: String,
}
2024-08-17 21:55:15 -04:00
/// Player Move Request
2024-12-03 17:45:50 -05:00
#[derive(Clone, Serialize, Deserialize)]
2024-08-17 21:55:15 -04:00
pub struct PlayerMoveRequest {
pub game_id: String,
2024-08-20 22:25:39 -04:00
pub card_ids: Vec<String>,
2024-08-17 21:55:15 -04:00
}
2024-08-22 21:19:34 -04:00
/// Game Player Meta
2024-12-03 17:45:50 -05:00
#[derive(Clone, Serialize, Deserialize, Debug)]
2024-08-22 21:19:34 -04:00
pub struct GamePlayerMeta {
pub name: String,
2024-11-15 19:39:48 -05:00
pub score: u32,
2024-09-03 14:02:14 -04:00
pub submitted: bool,
2024-08-22 21:19:34 -04:00
}
2024-08-09 02:57:27 -04:00
/// Game meta
2024-12-03 17:45:50 -05:00
#[derive(Clone, Serialize, Deserialize, Debug)]
2024-09-03 14:02:14 -04:00
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,
2024-08-22 21:19:34 -04:00
pub players: Vec<GamePlayerMeta>,
2024-08-10 19:50:26 -04:00
pub czar: String,
2024-08-13 18:16:31 -04:00
pub packs: Vec<u8>,
2024-11-15 19:39:48 -05:00
pub white_count: u32,
pub black_count: u32,
pub white_discard_count: u32,
2024-08-13 18:16:31 -04:00
}
2024-11-15 21:41:21 -05:00
/// Black card meta
2024-12-03 17:45:50 -05:00
#[derive(Clone, Serialize, Deserialize, Debug)]
2024-11-15 21:41:21 -05:00
pub struct BlackCardMeta {
pub text: String,
pub pick: u32,
}
2024-09-03 14:02:14 -04:00
/// Game state meta
2024-12-03 17:45:50 -05:00
#[derive(Clone, Serialize, Deserialize, Debug)]
2024-09-03 14:02:14 -04:00
pub struct GameStateMeta {
2024-11-15 21:41:21 -05:00
pub black: Option<BlackCardMeta>, // this has to be an option or prost gets cranky
2024-09-03 14:02:14 -04:00
pub white: Vec<WhiteCardMeta>,
}
2024-08-13 18:16:31 -04:00
/// Game browser meta
2024-12-03 17:45:50 -05:00
#[derive(Clone, Serialize, Deserialize, Debug)]
2024-08-13 18:16:31 -04:00
pub struct GameBrowserMeta {
pub uuid: String,
pub name: String,
pub host: String,
2024-11-16 04:19:21 -05:00
pub players: u32,
2024-08-13 18:16:31 -04:00
pub packs: Vec<u8>,
2024-08-09 02:57:27 -04:00
}
2024-08-04 18:14:10 -04:00
/// Card Pack Meta
2024-12-03 17:45:50 -05:00
#[derive(Clone, Serialize, Deserialize, Debug)]
2024-08-04 18:14:10 -04:00
pub struct CardPackMeta {
pub name: String,
2024-09-09 19:46:56 -04:00
pub pack: String,
2024-11-16 04:19:21 -05:00
pub num_white: u32,
pub num_black: u32,
2024-08-04 18:14:10 -04:00
}
/// Card Packs Meta
2024-12-03 17:45:50 -05:00
#[derive(Clone, Serialize, Deserialize, Debug)]
2024-08-04 18:14:10 -04:00
pub struct CardPacksMeta {
pub official_meta: Vec<CardPackMeta>,
pub unofficial_meta: Vec<CardPackMeta>,
}
/// Games update
2024-12-03 17:45:50 -05:00
#[derive(Serialize, Deserialize, Debug)]
2024-08-04 18:14:10 -04:00
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
2024-12-03 17:45:50 -05:00
#[derive(Serialize, Deserialize, Debug)]
2024-08-04 18:14:10 -04:00
pub struct ChatUpdate {
pub room: String,
pub users: Vec<String>,
}
/// User login request (to change name)
2024-12-03 17:45:50 -05:00
#[derive(Serialize, Deserialize)]
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
2024-12-03 17:45:50 -05:00
#[derive(Debug, Serialize, Deserialize)]
2024-08-04 18:14:10 -04:00
pub struct UserUpdate {
pub username: String,
}
/// Chat message
2024-12-03 17:45:50 -05:00
#[derive(Debug, Serialize, Deserialize)]
2024-08-04 18:14:10 -04:00
pub struct ChatMessage {
pub text: String,
}
2024-10-12 01:21:42 -04:00
/// Server user count
2024-12-03 17:45:50 -05:00
#[derive(Serialize, Deserialize, Debug)]
2024-10-12 01:21:42 -04:00
pub struct ServerOnlineUsers {
2024-11-16 04:19:21 -05:00
pub online_users: u32,
2024-10-12 01:21:42 -04:00
}
/// Server games count
2024-12-03 17:45:50 -05:00
#[derive(Serialize, Deserialize, Debug)]
2024-10-12 01:21:42 -04:00
pub struct ServerActiveGames {
2024-11-16 04:19:21 -05:00
pub active_games: u32,
2024-08-04 18:14:10 -04:00
}
/// New game request structure
2024-12-03 17:45:50 -05:00
#[derive(Serialize, Deserialize)]
2024-08-04 18:14:10 -04:00
pub struct NewGameRequest {
2024-11-16 04:19:21 -05:00
pub game_name: String,
pub game_packs: Vec<String>,
2024-08-04 18:14:10 -04:00
}