aboutsummaryrefslogtreecommitdiff
path: root/server/protocol/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-03-13 03:20:46 +0100
committermetamuffin <metamuffin@disroot.org>2026-03-13 03:20:50 +0100
commit5726d34f31d0129d314dc447340b0feb56534060 (patch)
tree4001955680a353ff763afd6d8f5525420c005acf /server/protocol/src
parent1a55a5d74bb3e57eb6e77286b86a5be559d43589 (diff)
downloadhurrycurry-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.rs47
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),