diff options
| author | metamuffin <metamuffin@disroot.org> | 2026-03-13 03:20:46 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2026-03-13 03:20:50 +0100 |
| commit | 5726d34f31d0129d314dc447340b0feb56534060 (patch) | |
| tree | 4001955680a353ff763afd6d8f5525420c005acf /server/protocol/src | |
| parent | 1a55a5d74bb3e57eb6e77286b86a5be559d43589 (diff) | |
| download | hurrycurry-5726d34f31d0129d314dc447340b0feb56534060.tar hurrycurry-5726d34f31d0129d314dc447340b0feb56534060.tar.bz2 hurrycurry-5726d34f31d0129d314dc447340b0feb56534060.tar.zst | |
add server-side voting logic
Diffstat (limited to 'server/protocol/src')
| -rw-r--r-- | server/protocol/src/lib.rs | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/server/protocol/src/lib.rs b/server/protocol/src/lib.rs index 9dfcc4dd..903f707a 100644 --- a/server/protocol/src/lib.rs +++ b/server/protocol/src/lib.rs @@ -114,6 +114,7 @@ pub struct GamedataFlags { fn chef_class() -> PlayerClass { PlayerClass::Chef } + #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "snake_case", tag = "type")] pub enum PacketS { @@ -153,6 +154,15 @@ pub enum PacketS { Keepalive, Ready, + InitiateVote { + player: PlayerID, + subject: VoteSubject, + }, + CastVote { + player: PlayerID, + agree: bool, + }, + /// For use in replay sessions only ReplayTick { dt: f64, @@ -210,13 +220,19 @@ pub enum Message { Tile(TileIndex), } +pub fn version() -> PacketC { + PacketC::Version { + major: VERSION.0, + minor: VERSION.1, + } +} + #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "snake_case", tag = "type")] pub enum PacketC { Version { minor: u32, major: u32, - supports_bincode: bool, }, Joined { id: PlayerID, @@ -307,6 +323,20 @@ pub enum PacketC { uri: Vec<String>, }, + VoteStarted { + initiated_by: PlayerID, + subject: VoteSubject, + message: Message, + }, + VoteUpdated { + total: usize, + agree: usize, + reject: usize, + }, + VoteEnded { + result: bool, + }, + /// For use in replay sessions only ReplayStart, ReplayStop, @@ -316,6 +346,21 @@ pub enum PacketC { } #[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "snake_case", tag = "action")] +pub enum VoteSubject { + StartGame { config: GameConfig }, + EndGame, + RestartGame, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct GameConfig { + pub map: String, + pub hand_count: Option<usize>, + pub timer: Option<f32>, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "snake_case", tag = "menu", content = "data")] pub enum Menu { Score(Score), |