~starkingdoms/starkingdoms

ce2fe02b05e0f7ede8854a0d7367510da004a7e4 — ghostlyzsh 2 years ago 08c1b75
other players added, we'll see if it works
M Cargo.lock => Cargo.lock +12 -12
@@ 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]]

M protocol/src/lib.rs => protocol/src/lib.rs +6 -3
@@ 46,11 46,14 @@ pub enum MessageS2C {

    Pong {},

    Position {
        x: f64,
        y: f64,
    PlayersUpdate {
        rotation: Vec<f64>,
        x: Vec<f64>,
        y: Vec<f64>,
        username: Vec<String>,
    },


    PlanetData {
        planets: Vec<ProtocolPlanet>
    }

M server/src/handler.rs => server/src/handler.rs +5 -3
@@ 33,10 33,12 @@ pub async fn handle_client(mgr: ClientManager, data: Arc<RwLock<PhysicsData>>, 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 } => {

M server/src/main.rs => server/src/main.rs +1 -0
@@ 23,6 23,7 @@ pub mod manager;
pub mod timer;
#[macro_use]
pub mod macros;
pub mod planet;

const SCALE: f64 = 10.0;


M server/src/manager.rs => server/src/manager.rs +1 -1
@@ 61,6 61,6 @@ impl PhysicsData {
pub enum ClientHandlerMessage {
    Tick,
    ChatMessage { from: String, message: String },
    Position { x: f64, y: f64 },
    PlayersUpdate { rotation: Vec<f64>, x: Vec<f64>, y: Vec<f64>, usernames: Vec<String> },
    PlanetData { planets: Vec<ProtocolPlanet> },
}

A server/src/planet.rs => server/src/planet.rs +48 -0
@@ 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<Planet>,
}

impl Planets {
    pub fn make_planet(planets: &mut Vec<Planet>, 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 }
    }
}

M server/src/timer.rs => server/src/timer.rs +16 -6
@@ 17,13 17,23 @@ pub async fn timer_main(mgr: ClientManager, physics_data: Arc<RwLock<PhysicsData
        for (addr, client_thread) in mgr.handlers.read().await.iter() {
            match client_thread.tx.send(ClientHandlerMessage::Tick).await {
                Ok(_) => {
                    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::<Vec<_>>();
                    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::<Vec<_>>();

                    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);

A spacetime_py/__pycache__/ninja_syntax.cpython-310.pyc => spacetime_py/__pycache__/ninja_syntax.cpython-310.pyc +0 -0