~starkingdoms/starkingdoms

1bcf5ed75103cbaa1b0ff71092b28c7e52aae2e3 — ghostlyzsh 2 years ago 1d8e890
deleting all attached modules implemented
M assets/dist/spritesheet-125.json => assets/dist/spritesheet-125.json +7 -7
@@ 45,7 45,7 @@
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "autoplr_cfg.png": {
    "hearty.png": {
      "frame": { "x": 0, "y": 896, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,


@@ 54,7 54,7 @@
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "hearty.png": {
    "autoplr_cfg.png": {
      "frame": { "x": 0, "y": 960, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,


@@ 108,7 108,7 @@
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "hub_on.png": {
    "autoplr_on.png": {
      "frame": { "x": 0, "y": 1344, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,


@@ 117,7 117,7 @@
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "powerhub_on.png": {
    "hub_on.png": {
      "frame": { "x": 0, "y": 1408, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,


@@ 126,7 126,7 @@
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "autoplr_on.png": {
    "powerhub_on.png": {
      "frame": { "x": 0, "y": 1472, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,


@@ 180,7 180,7 @@
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "hub_off.png": {
    "powerhub_off.png": {
      "frame": { "x": 0, "y": 1856, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,


@@ 189,7 189,7 @@
      "pivot": { "x": 32, "y": 32 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 64, "h": 64 }
    },
    "powerhub_off.png": {
    "hub_off.png": {
      "frame": { "x": 0, "y": 1920, "w": 64, "h": 64 },
      "rotated": false,
      "trimmed": false,

M assets/dist/spritesheet-125.png => assets/dist/spritesheet-125.png +0 -0
M assets/dist/spritesheet-375.json => assets/dist/spritesheet-375.json +7 -7
@@ 45,7 45,7 @@
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "autoplr_cfg.png": {
    "hearty.png": {
      "frame": { "x": 0, "y": 2688, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,


@@ 54,7 54,7 @@
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "hearty.png": {
    "autoplr_cfg.png": {
      "frame": { "x": 0, "y": 2880, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,


@@ 108,7 108,7 @@
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "hub_on.png": {
    "autoplr_on.png": {
      "frame": { "x": 0, "y": 4032, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,


@@ 117,7 117,7 @@
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "powerhub_on.png": {
    "hub_on.png": {
      "frame": { "x": 0, "y": 4224, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,


@@ 126,7 126,7 @@
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "autoplr_on.png": {
    "powerhub_on.png": {
      "frame": { "x": 0, "y": 4416, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,


@@ 180,7 180,7 @@
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "hub_off.png": {
    "powerhub_off.png": {
      "frame": { "x": 0, "y": 5568, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,


@@ 189,7 189,7 @@
      "pivot": { "x": 96, "y": 96 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 192, "h": 192 }
    },
    "powerhub_off.png": {
    "hub_off.png": {
      "frame": { "x": 0, "y": 5760, "w": 192, "h": 192 },
      "rotated": false,
      "trimmed": false,

M assets/dist/spritesheet-375.png => assets/dist/spritesheet-375.png +0 -0
M assets/dist/spritesheet-full.json => assets/dist/spritesheet-full.json +4 -4
@@ 108,7 108,7 @@
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "hub_on.png": {
    "autoplr_on.png": {
      "frame": { "x": 1536, "y": 6144, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,


@@ 126,7 126,7 @@
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "autoplr_on.png": {
    "hub_on.png": {
      "frame": { "x": 1536, "y": 7168, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,


@@ 180,7 180,7 @@
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "hub_off.png": {
    "powerhub_off.png": {
      "frame": { "x": 4608, "y": 0, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,


@@ 189,7 189,7 @@
      "pivot": { "x": 256, "y": 256 },
      "9slicedFrame": { "x": 0, "y": 0, "w": 512, "h": 512 }
    },
    "powerhub_off.png": {
    "hub_off.png": {
      "frame": { "x": 5120, "y": 0, "w": 512, "h": 512 },
      "rotated": false,
      "trimmed": false,

M assets/dist/spritesheet-full.png => assets/dist/spritesheet-full.png +0 -0
M client/index.html => client/index.html +5 -1
@@ 42,7 42,11 @@
            let servers = [];

            function server_url_to_ping_url(server) {
                return server + "/ping"
                if(server.endsWith('/')) {
                    return server + "ping"
                } else {
                    return server + "/ping"
                }
            }

            function server_url_to_gateway_url(server) {

M server/src/entity.rs => server/src/entity.rs +10 -0
@@ 141,6 141,16 @@ impl EntityHandler {
        }
        None
    }
    pub fn get_id_from_attached(&self, p_module: AttachedModule) -> Option<EntityId> {
        for (id, entity) in self.entities.iter() {
            if let Entity::AttachedModule(module) = entity {
                if module.handle == p_module.handle {
                    return Some(*id);
                }
            }
        }
        None
    }

    pub fn gravity(&self, position: (f64, f64), mass: f64) -> (f64, f64) {
        let mut direction = Vector2::zeros();

M server/src/handler.rs => server/src/handler.rs +3 -18
@@ 275,7 275,7 @@ pub async fn handle_client(
                                data_handle.rigid_body_set = rigid_body_set;
                                data_handle.collider_set = collider_set;

                                let module_id = AttachedModule::attach_new(
                                /*let module_id = AttachedModule::attach_new(
                                    &mut data_handle,
                                    &mut e_write_handle,
                                    player_id,


@@ 306,23 306,8 @@ pub async fn handle_client(
                                        module_type: ModuleType::Cargo,
                                    },
                                    2,
                                );
                                let module_id = AttachedModule::attach_new(
                                    &mut data_handle,
                                    &mut e_write_handle,
                                    module_id,
                                    player_id,
                                    ModuleTemplate {
                                        translation: vector![0.0, 50.0],
                                        mass_properties: MassProperties::new(
                                            point![0.0, 0.0],
                                            0.0001,
                                            0.005,
                                        ),
                                        module_type: ModuleType::Hub,
                                    },
                                    2,
                                );
                                );*/

                            }
                        }
                        MessageC2S::Goodbye(pkt) => {

M server/src/main.rs => server/src/main.rs +17 -4
@@ 9,7 9,7 @@ use async_std::sync::RwLock;
use entity::EntityHandler;
use futures::StreamExt;
use lazy_static::lazy_static;
use log::{error, info, warn, Level};
use log::{error, info, warn, Level, debug};
use manager::PhysicsData;
use nalgebra::vector;
use rapier2d_f64::prelude::{


@@ 146,20 146,21 @@ async fn _handle_request(
        mgr.handlers.write().await.remove(&remote_addr);
        mgr.usernames.write().await.remove(&remote_addr);
        // remove player physics body
        let mut entity_write = entities.write().await;
        let mut data = physics_data.write().await;
        let mut rigid_body_set = data.rigid_body_set.clone();
        let mut island_manager = data.island_manager.clone();
        let mut collider_set = data.collider_set.clone();
        let mut impulse_joint_set = data.impulse_joint_set.clone();
        let mut multibody_joint_set = data.multibody_joint_set.clone();
        let player_id = match entities.read().await.get_player_id(remote_addr) {
        let player_id = match entity_write.get_player_id(remote_addr) {
            Some(s) => s,
            None => {
                warn!("[{}] player missing from entities.players", remote_addr);
                return Err("Player missing from entities.players".into());
            }
        };
        if let Entity::Player(player) = entities.read().await.entities.get(&player_id).unwrap() {
        if let Entity::Player(player) = entity_write.entities.get(&player_id).unwrap() {
            rigid_body_set.remove(
                player.handle,
                &mut island_manager,


@@ 168,13 169,25 @@ async fn _handle_request(
                &mut multibody_joint_set,
                true,
            );
            for module in player.search_modules(&entity_write) {
                rigid_body_set.remove(
                    module.handle,
                    &mut island_manager,
                    &mut collider_set,
                    &mut impulse_joint_set,
                    &mut multibody_joint_set,
                    true,
                );
                let module_id = entity_write.get_id_from_attached(module).unwrap();
                entity_write.entities.remove(&module_id);
            }
        }
        data.rigid_body_set = rigid_body_set;
        data.collider_set = collider_set;
        data.island_manager = island_manager;
        data.impulse_joint_set = impulse_joint_set;
        data.multibody_joint_set = multibody_joint_set;
        entities.write().await.entities.remove(&player_id);
        entity_write.entities.remove(&player_id);
    }

    Ok(())

M server/src/module.rs => server/src/module.rs +1 -1
@@ 242,7 242,7 @@ impl AttachedModule {
    }

    pub fn search_modules(&self, entities: &EntityHandler) -> Vec<AttachedModule> {
        let mut modules = Vec::new();
        let mut modules = vec![self.clone()];
        for attachment in self.children.iter().flatten() {
            if let Entity::AttachedModule(child_module) =
                entities.entities.get(&attachment.child).unwrap()

M server/src/timer.rs => server/src/timer.rs +1 -1
@@ 12,7 12,7 @@ use crate::{
};
use async_std::sync::RwLock;
use async_std::task::sleep;
use log::{info, warn};
use log::{info, warn, debug};
use nalgebra::{point, vector};
use rand::Rng;
use rapier2d_f64::prelude::{