From ce2fe02b05e0f7ede8854a0d7367510da004a7e4 Mon Sep 17 00:00:00 2001 From: ghostlyzsh Date: Wed, 12 Apr 2023 18:09:09 -0500 Subject: [PATCH] other players added, we'll see if it works --- Cargo.lock | 24 ++++----- protocol/src/lib.rs | 9 ++-- server/src/handler.rs | 8 +-- server/src/main.rs | 1 + server/src/manager.rs | 2 +- server/src/planet.rs | 48 ++++++++++++++++++ server/src/timer.rs | 22 +++++--- .../__pycache__/ninja_syntax.cpython-310.pyc | Bin 0 -> 5958 bytes 8 files changed, 89 insertions(+), 25 deletions(-) create mode 100644 server/src/planet.rs create mode 100644 spacetime_py/__pycache__/ninja_syntax.cpython-310.pyc diff --git a/Cargo.lock b/Cargo.lock index 430908aa41d5d6fb0d65107e02d9abd34c659638..3fdd5884b710bd5e9ad2752857062679549159e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -31,7 +31,7 @@ checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.13", + "syn 2.0.14", ] [[package]] @@ -42,7 +42,7 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote", - "syn 2.0.13", + "syn 2.0.14", ] [[package]] @@ -454,7 +454,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.13", + "syn 2.0.14", ] [[package]] @@ -1210,22 +1210,22 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.159" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" +checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.159" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585" +checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" dependencies = [ "proc-macro2", "quote", - "syn 2.0.13", + "syn 2.0.14", ] [[package]] @@ -1396,9 +1396,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c9da457c5285ac1f936ebd076af6dac17a61cfe7826f2076b4d015cf47bc8ec" +checksum = "fcf316d5356ed6847742d036f8a39c3b8435cac10bd528a4bd461928a6ab34d5" dependencies = [ "proc-macro2", "quote", @@ -1422,7 +1422,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.13", + "syn 2.0.14", ] [[package]] @@ -1505,7 +1505,7 @@ checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.13", + "syn 2.0.14", ] [[package]] diff --git a/protocol/src/lib.rs b/protocol/src/lib.rs index 4afc3c80d53ca0b80bba4744322dbac2af9312a0..62e7a1c20771d2c5cf19dce673e437d5511888e2 100644 --- a/protocol/src/lib.rs +++ b/protocol/src/lib.rs @@ -46,11 +46,14 @@ pub enum MessageS2C { Pong {}, - Position { - x: f64, - y: f64, + PlayersUpdate { + rotation: Vec, + x: Vec, + y: Vec, + username: Vec, }, + PlanetData { planets: Vec } diff --git a/server/src/handler.rs b/server/src/handler.rs index 4c539bb3803b9d6cff7c5a67100a33aeffc5e7e5..5846de590eedf0d5a0bb2614a0b70838030b6e90 100644 --- a/server/src/handler.rs +++ b/server/src/handler.rs @@ -33,10 +33,12 @@ pub async fn handle_client(mgr: ClientManager, data: Arc>, r from }).await?; } - ClientHandlerMessage::Position { x, y } => { - send!(client_tx, &MessageS2C::Position { + ClientHandlerMessage::PlayersUpdate { rotation, x, y, usernames } => { + send!(client_tx, &MessageS2C::PlayersUpdate { + rotation, x, - y + y, + username: usernames }).await?; } ClientHandlerMessage::PlanetData { planets } => { diff --git a/server/src/main.rs b/server/src/main.rs index 3f99750172e2b264ec09b8753c26080588d5b888..03b6b13bc995405ff9b30706799d777ba8210f43 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -23,6 +23,7 @@ pub mod manager; pub mod timer; #[macro_use] pub mod macros; +pub mod planet; const SCALE: f64 = 10.0; diff --git a/server/src/manager.rs b/server/src/manager.rs index 7984f10657428aaac9e6a107fc89bac44396e243..b954fb9f62e0e7da0b59bbdf51b9072a1f80ad14 100644 --- a/server/src/manager.rs +++ b/server/src/manager.rs @@ -61,6 +61,6 @@ impl PhysicsData { pub enum ClientHandlerMessage { Tick, ChatMessage { from: String, message: String }, - Position { x: f64, y: f64 }, + PlayersUpdate { rotation: Vec, x: Vec, y: Vec, usernames: Vec }, PlanetData { planets: Vec }, } diff --git a/server/src/planet.rs b/server/src/planet.rs new file mode 100644 index 0000000000000000000000000000000000000000..ec96008070260e9738b4423a4b2ed0b623faf1f4 --- /dev/null +++ b/server/src/planet.rs @@ -0,0 +1,48 @@ +use rapier2d_f64::prelude::{RigidBodyHandle, ColliderHandle, RigidBodySet, ColliderBuilder, RigidBodyBuilder, ColliderSet}; + +use crate::SCALE; + +pub struct Planet { + pub body_handle: RigidBodyHandle, + pub position: (f64, f64), + pub radius: f64, + pub mass: f64 +} + +pub struct Planets { + pub planets: Vec, +} + +impl Planets { + pub fn make_planet(planets: &mut Vec, mass: f64, radius: f64, position: (f64, f64), rigid_body_set: &mut RigidBodySet, collider_set: &mut ColliderSet) { + let collider = ColliderBuilder::ball(1000.0 / SCALE) + .build(); + let body = RigidBodyBuilder::fixed() + .additional_mass(0.0); + let body_handle = rigid_body_set.insert(body); + + collider_set.insert_with_parent(collider, body_handle, rigid_body_set); + + planets.push(Planet { + body_handle, + position, + radius, + mass, + }); + } + + pub fn new(rigid_body_set: &mut RigidBodySet, collider_set: &mut ColliderSet) -> Planets { + let mut planets = Vec::new(); + + let earth = Planets::make_planet( + &mut planets, + 2000.0, + 1000.0, + (0.0, 0.0), + rigid_body_set, + collider_set, + ); + + Planets { planets } + } +} diff --git a/server/src/timer.rs b/server/src/timer.rs index a77b48f4882e28069a77586268252700ade2cf6c..a66f01a0d8d90ba8e935630eaa96fe91347b971e 100644 --- a/server/src/timer.rs +++ b/server/src/timer.rs @@ -17,13 +17,23 @@ pub async fn timer_main(mgr: ClientManager, physics_data: Arc { - let player_handle = match mgr.players.read().await.get(addr) { - Some(s) => s.handle, - None => { continue; } - }; + let player_handles = mgr.players.read().await.values().map(|s| {s.handle}).collect::>(); let data = physics_data.read().await; - let player_body = data.rigid_body_set.get(player_handle).unwrap(); - match client_thread.tx.send(ClientHandlerMessage::Position { x: (player_body.translation().x * SCALE) as f64, y: (player_body.translation().y * SCALE) as f64 }).await { + let mut translations = Vec::new(); + let mut rotations = Vec::new(); + for handle in player_handles { + let player_body = data.rigid_body_set.get(handle).unwrap(); + translations.push(player_body.translation()); + rotations.push(player_body.rotation().angle()); + } + let usernames_raw = mgr.usernames.read().await; + let usernames = usernames_raw.values().collect::>(); + + match client_thread.tx.send(ClientHandlerMessage::PlayersUpdate { + rotation: rotations, + usernames: usernames.into_iter().map(|s| s.clone()).collect(), + x: translations.clone().into_iter().map(|s| { s.x * SCALE}).collect(), + y: translations.into_iter().map(|s| { s.y * SCALE}).collect() }).await { Ok(_) => (), Err(e) => { error!("unable to send position packet: {}", e); diff --git a/spacetime_py/__pycache__/ninja_syntax.cpython-310.pyc b/spacetime_py/__pycache__/ninja_syntax.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1ce0013edf75cb67d20ed60a1c9d539cbd32644c GIT binary patch literal 5958 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 literal 0 HcmV?d00001