~starkingdoms/starkingdoms

a42d76993b6aa2c9925bb197166a5b989d5c0ea7 — ghostlyzsh 2 years ago f8a7045
random player position
3 files changed, 10 insertions(+), 1 deletions(-)

M Cargo.lock
M server/Cargo.toml
M server/src/handler.rs
M Cargo.lock => Cargo.lock +1 -0
@@ 3310,6 3310,7 @@ dependencies = [
 "lazy_static",
 "log",
 "nalgebra",
 "rand",
 "rapier2d-f64",
 "serde",
 "serde_json",

M server/Cargo.toml => server/Cargo.toml +1 -0
@@ 25,6 25,7 @@ starkingdoms-protocol = { version = "0.1.0", path = "../protocol" }
lazy_static = "1.4.0"
rapier2d-f64 = { version = "0.17.2", features = [ "simd-stable" ] }
nalgebra = "0.32.2"
rand = "0.8.5"

[build-dependencies]
cargo_metadata = "0.15"

M server/src/handler.rs => server/src/handler.rs +8 -1
@@ 1,4 1,5 @@
use std::error::Error;
use std::f64::consts::PI;
use std::net::SocketAddr;
use std::sync::Arc;
use std::time::{Duration, SystemTime};


@@ 6,6 7,7 @@ use futures::stream::{SplitSink, SplitStream};
use futures::{FutureExt, SinkExt, StreamExt};
use log::{error, info, debug};
use nalgebra::{vector, point};
use rand::Rng;
use rapier2d_f64::prelude::{RigidBodyBuilder, RigidBodyType, ColliderBuilder, MassProperties, Collider};
use tungstenite::Message;
use starkingdoms_protocol::goodbye_reason::GoodbyeReason;


@@ 139,8 141,13 @@ pub async fn handle_client(mgr: ClientManager, entities: Arc<RwLock<EntityHandle
                                let mut rigid_body_set = data_handle.rigid_body_set.clone();
                                let mut collider_set = data_handle.collider_set.clone();

                                let angle: f64 = {
                                    let mut rng = rand::thread_rng();
                                    rng.gen::<f64>() * PI * 2.
                                };
                                let player_body = RigidBodyBuilder::new(RigidBodyType::Dynamic)
                                    .translation(vector![0.0, 2100.0/SCALE])
                                    .translation(vector![angle.cos() * 2050. / SCALE, angle.sin() * 2050.0/SCALE])
                                    .rotation(angle + PI / 2.)
                                    .build();
                                let player_collider: Collider = ColliderBuilder::cuboid(25.0 / SCALE, 25.0 / SCALE)
                                    .mass_properties(MassProperties::new(point![0.0, 0.0], 120.0, 122500.0))