From 0fab0e8c5691f74996920d33bdbe2c5f91b17955 Mon Sep 17 00:00:00 2001 From: Tangent Wantwight Date: Mon, 18 May 2020 20:53:28 -0400 Subject: [PATCH] Create Serde structs for messages --- Cargo.toml | 3 ++- src/main.rs | 2 ++ src/net/mod.rs | 31 +++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/net/mod.rs diff --git a/Cargo.toml b/Cargo.toml index e7d7c9c..e50a984 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,6 +10,7 @@ env_logger = "0.7" futures = "0.3" log = "0.4" structopt = "0.3" -serde = "1" +serde = {version = "1", features = ["derive"]} +serde_json = "1" tokio = {version = "0.2", features = ["macros"]} warp = "0.2" diff --git a/src/main.rs b/src/main.rs index 80f4c9d..8c7e4ba 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,6 +7,8 @@ use structopt::StructOpt; use warp::{serve, ws, ws::Ws, Filter}; use ws::Message; +pub mod net; + #[derive(StructOpt)] /// Server for base2020 lockstep protocol for multiplayer games. struct Args { diff --git a/src/net/mod.rs b/src/net/mod.rs new file mode 100644 index 0000000..9573fd3 --- /dev/null +++ b/src/net/mod.rs @@ -0,0 +1,31 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Deserialize, Debug)] +#[serde(tag = "t")] +pub enum ClientMessage { + #[serde(rename = "s")] + SetState { s: S }, + #[serde(rename = "i")] + Input { i: I }, + #[serde(rename = "g")] + GetState { c: usize, s: S }, +} + +#[derive(Serialize, Debug)] +pub struct Meta { + helo: Option, + version: &'static str, +} + +#[derive(Serialize, Debug)] +#[serde(tag = "t")] +pub enum ServerMessage { + #[serde(rename = "m")] + Meta { m: Meta }, + #[serde(rename = "s")] + SetState { u: i8, s: S }, + #[serde(rename = "i")] + Input { i: I }, + #[serde(rename = "g")] + GetState { c: usize }, +}