aboutsummaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-06-16 23:10:05 +0200
committermetamuffin <metamuffin@disroot.org>2024-06-16 23:10:05 +0200
commitc10d66de1bd2ef04e4010223dcd82443a5d558f0 (patch)
tree300283fd71569b8d8375001657795b4c4293d0aa /server
parentf21cccf9f381bd52dffbd3a9e6822300d5525897 (diff)
downloadhurrycurry-c10d66de1bd2ef04e4010223dcd82443a5d558f0.tar
hurrycurry-c10d66de1bd2ef04e4010223dcd82443a5d558f0.tar.bz2
hurrycurry-c10d66de1bd2ef04e4010223dcd82443a5d558f0.tar.zst
a
Diffstat (limited to 'server')
-rw-r--r--server/.gitignore1
-rw-r--r--server/examples/client.rs52
-rw-r--r--server/src/lib.rs2
-rw-r--r--server/src/main.rs14
-rw-r--r--server/src/protocol.rs2
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 },