pub mod host; mod ident; pub mod night; use core::num::NonZeroU8; pub use ident::*; use serde::{Deserialize, Serialize}; use crate::{character::CharacterId, game::GameOver, role::RoleTitle}; #[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] pub enum ClientMessage { Hello, Goodbye, GetState, RoleAck, UpdateSelf(UpdateSelf), } #[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] pub enum UpdateSelf { Name(String), Number(NonZeroU8), Pronouns(Option), } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct DayCharacter { pub character_id: CharacterId, pub name: String, pub alive: bool, } #[derive(Debug, Clone, Serialize, Deserialize)] pub enum ServerMessage { Disconnect, LobbyInfo { joined: bool, players: Box<[PublicIdentity]>, }, GameInProgress, GameStart { role: RoleTitle, }, InvalidMessageForGameState, NoSuchTarget, GameOver(GameOver), Update(PlayerUpdate), Sleep, Reset, } #[derive(Debug, Clone, Serialize, Deserialize)] pub enum PlayerUpdate { Number(NonZeroU8), }