diff options
author | metamuffin <metamuffin@disroot.org> | 2024-06-16 23:10:05 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-06-16 23:10:05 +0200 |
commit | c10d66de1bd2ef04e4010223dcd82443a5d558f0 (patch) | |
tree | 300283fd71569b8d8375001657795b4c4293d0aa /server | |
parent | f21cccf9f381bd52dffbd3a9e6822300d5525897 (diff) | |
download | hurrycurry-c10d66de1bd2ef04e4010223dcd82443a5d558f0.tar hurrycurry-c10d66de1bd2ef04e4010223dcd82443a5d558f0.tar.bz2 hurrycurry-c10d66de1bd2ef04e4010223dcd82443a5d558f0.tar.zst |
a
Diffstat (limited to 'server')
-rw-r--r-- | server/.gitignore | 1 | ||||
-rw-r--r-- | server/examples/client.rs | 52 | ||||
-rw-r--r-- | server/src/lib.rs | 2 | ||||
-rw-r--r-- | server/src/main.rs | 14 | ||||
-rw-r--r-- | server/src/protocol.rs | 2 |
5 files changed, 61 insertions, 10 deletions
diff --git a/server/.gitignore b/server/.gitignore deleted file mode 100644 index ea8c4bf7..00000000 --- a/server/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target diff --git a/server/examples/client.rs b/server/examples/client.rs index 69c50eaa..02c9c9e3 100644 --- a/server/examples/client.rs +++ b/server/examples/client.rs @@ -1,6 +1,52 @@ -fn main() { +use std::{ + io::{stdin, BufRead, BufReader, Write}, + net::TcpStream, + thread, +}; + +use glam::Vec2; +use undercooked::protocol::{PacketC, PacketS}; - +fn main() { + let mut sock = TcpStream::connect("127.0.0.1:27031").unwrap(); + let sock2 = BufReader::new(sock.try_clone().unwrap()); + thread::spawn(move || { + for line in sock2.lines() { + let line = line.unwrap(); + let packet: PacketC = serde_json::from_str(&line).unwrap(); + eprintln!("{packet:?}") + } + }); -}
\ No newline at end of file + for line in stdin().lines() { + let line = line.unwrap(); + let mut toks = line.split(" "); + let packet = match toks.next().unwrap() { + "j" => PacketS::Join { + name: "test".to_string(), + }, + "p" => PacketS::Position { + pos: Vec2::new( + toks.next().unwrap().parse().unwrap(), + toks.next().unwrap().parse().unwrap(), + ), + rot: 0., + }, + "i" => PacketS::Position { + pos: Vec2::new( + toks.next().unwrap().parse().unwrap(), + toks.next().unwrap().parse().unwrap(), + ), + rot: toks.next().unwrap_or("0").parse().unwrap(), + }, + _ => { + println!("unknown"); + continue; + } + }; + sock.write_all(serde_json::to_string(&packet).unwrap().as_bytes()) + .unwrap(); + sock.write_all(b"\n").unwrap(); + } +} diff --git a/server/src/lib.rs b/server/src/lib.rs new file mode 100644 index 00000000..4659e440 --- /dev/null +++ b/server/src/lib.rs @@ -0,0 +1,2 @@ +pub mod game; +pub mod protocol; diff --git a/server/src/main.rs b/server/src/main.rs index f688cffe..06786c05 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,7 +1,5 @@ use anyhow::Result; -use game::Game; -use log::info; -use protocol::{PacketC, PacketS}; +use log::{debug, info}; use std::{sync::Arc, time::Duration}; use tokio::{ io::{AsyncBufReadExt, AsyncWriteExt, BufReader}, @@ -10,9 +8,10 @@ use tokio::{ sync::{broadcast, RwLock}, time::sleep, }; - -pub mod game; -pub mod protocol; +use undercooked::{ + game::Game, + protocol::{PacketC, PacketS}, +}; #[tokio::main] async fn main() -> Result<()> { @@ -29,6 +28,7 @@ async fn main() -> Result<()> { { let mut g = game.write().await; while let Some(p) = g.packet_out() { + debug!("-> {p:?}"); let _ = tx.send(p); } } @@ -48,12 +48,14 @@ async fn main() -> Result<()> { .write_all(serde_json::to_string(&packet).unwrap().as_bytes()) .await .unwrap(); + write.write_all(b"\n").await.unwrap(); } }); spawn(async move { let mut read = BufReader::new(read).lines(); while let Ok(Some(line)) = read.next_line().await { let packet: PacketS = serde_json::from_str(&line).unwrap(); + debug!("<- {id} {packet:?}"); game.write().await.packet_in(id, packet).unwrap(); } }); diff --git a/server/src/protocol.rs b/server/src/protocol.rs index d463a5d3..93d2afe9 100644 --- a/server/src/protocol.rs +++ b/server/src/protocol.rs @@ -10,6 +10,7 @@ pub enum Item {} pub enum Tile {} #[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] pub enum PacketS { Join { name: String }, Leave, @@ -18,6 +19,7 @@ pub enum PacketS { } #[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] pub enum PacketC { AddPlayer { id: ID, name: String }, RemovePlayer { id: ID }, |