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 }, +}