From 6c1144c90bfffed676ce395061837d61a42245f4 Mon Sep 17 00:00:00 2001 From: core Date: Sun, 17 May 2026 11:27:44 -0400 Subject: [PATCH] chore(netcode-rewrite): general codebase refactor --- crates/unified/src/client/components/mod.rs | 49 +++++++++++++++++++ crates/unified/src/client/crafting/ui.rs | 6 ++- crates/unified/src/client/input/mod.rs | 2 +- crates/unified/src/client/mod.rs | 6 ++- crates/unified/src/client/parts.rs | 7 +-- .../src/client/planet/incoming_planets.rs | 4 +- .../unified/src/client/planet/indicators.rs | 6 +-- .../{client_plugins.rs => client/plugins.rs} | 0 crates/unified/src/client/rendering/mod.rs | 3 +- crates/unified/src/client/ship/attachment.rs | 4 +- crates/unified/src/client/ship/thrusters.rs | 8 +-- crates/unified/src/client/starfield.rs | 8 ++- crates/unified/src/client/starguide/init.rs | 3 +- crates/unified/src/client/starguide/input.rs | 2 +- crates/unified/src/client/starguide/orbit.rs | 7 +-- crates/unified/src/client/ui.rs | 7 ++- crates/unified/src/client/zoom.rs | 9 ++-- crates/unified/src/main.rs | 17 ++----- crates/unified/src/server/craft.rs | 4 +- crates/unified/src/server/drill.rs | 6 ++- crates/unified/src/server/earth_parts.rs | 4 +- crates/unified/src/server/gravity.rs | 6 +-- crates/unified/src/server/heat/conduction.rs | 3 +- crates/unified/src/server/heat/cooling.rs | 2 +- crates/unified/src/server/heat/radiation.rs | 3 +- crates/unified/src/server/mod.rs | 1 + crates/unified/src/server/orbit/mod.rs | 4 +- crates/unified/src/server/part.rs | 8 +-- crates/unified/src/server/planets.rs | 6 ++- crates/unified/src/server/player.rs | 7 +-- crates/unified/src/server/player/join.rs | 9 ++-- crates/unified/src/server/player/thrust.rs | 9 ++-- .../{server_plugins.rs => server/plugins.rs} | 0 crates/unified/src/{ => shared}/attachment.rs | 0 crates/unified/src/{ => shared}/config/mod.rs | 0 .../unified/src/{ => shared}/config/part.rs | 0 .../unified/src/{ => shared}/config/planet.rs | 0 .../unified/src/{ => shared}/config/recipe.rs | 0 .../unified/src/{ => shared}/config/world.rs | 0 crates/unified/src/{ => shared}/ecs.rs | 42 ++-------------- .../unified/src/{ => shared}/ecs/thruster.rs | 0 crates/unified/src/shared/mod.rs | 7 +++ crates/unified/src/{ => shared}/physics.rs | 0 .../{shared_plugins.rs => shared/plugins.rs} | 14 +++--- crates/unified/src/{ => shared}/thrust.rs | 0 .../unified/src/{ => shared}/world_config.rs | 2 +- crates/unified/src/wasm_entrypoint.rs | 6 +-- 47 files changed, 161 insertions(+), 130 deletions(-) create mode 100644 crates/unified/src/client/components/mod.rs rename crates/unified/src/{client_plugins.rs => client/plugins.rs} (100%) rename crates/unified/src/{server_plugins.rs => server/plugins.rs} (100%) rename crates/unified/src/{ => shared}/attachment.rs (100%) rename crates/unified/src/{ => shared}/config/mod.rs (100%) rename crates/unified/src/{ => shared}/config/part.rs (100%) rename crates/unified/src/{ => shared}/config/planet.rs (100%) rename crates/unified/src/{ => shared}/config/recipe.rs (100%) rename crates/unified/src/{ => shared}/config/world.rs (100%) rename crates/unified/src/{ => shared}/ecs.rs (73%) rename crates/unified/src/{ => shared}/ecs/thruster.rs (100%) create mode 100644 crates/unified/src/shared/mod.rs rename crates/unified/src/{ => shared}/physics.rs (100%) rename crates/unified/src/{shared_plugins.rs => shared/plugins.rs} (82%) rename crates/unified/src/{ => shared}/thrust.rs (100%) rename crates/unified/src/{ => shared}/world_config.rs (96%) diff --git a/crates/unified/src/client/components/mod.rs b/crates/unified/src/client/components/mod.rs new file mode 100644 index 0000000000000000000000000000000000000000..49131c09423d8e2616d2032e47e209534cfd60fc --- /dev/null +++ b/crates/unified/src/client/components/mod.rs @@ -0,0 +1,49 @@ +use crate::prelude::{Component, Deserialize, GizmoConfigGroup, Handle, Image, Reflect, Resource, Serialize}; + +#[derive(Component)] +pub struct MainCamera; + +#[derive(Component)] +pub struct StarguideCamera; + +#[derive(Component)] +pub struct OrbitCamera; + +#[derive(Default, Reflect, GizmoConfigGroup)] +pub struct StarguideGizmos; + +#[derive(Component)] +pub struct StarfieldFront; + +#[derive(Component)] +pub struct StarfieldMid; + +#[derive(Component)] +pub struct StarfieldBack; + +#[derive(Component)] +pub struct FuelText; + +#[derive(Component)] +pub struct PowerText; + +#[derive(Component)] +pub struct PlanetSensor(pub String); + +#[derive(Component)] +pub struct Me; + +#[derive(Component)] +pub struct StarguideMe; + +#[derive(Resource)] +pub struct StarguideOrbitImage(pub Handle); + +#[derive(Component)] +pub struct StarguideOrbit; + +#[derive(Component, Serialize, Deserialize, Debug)] +pub struct CraftingUi; + +#[derive(Component, Serialize, Deserialize, Debug)] +pub struct TemperatureSprite; \ No newline at end of file diff --git a/crates/unified/src/client/crafting/ui.rs b/crates/unified/src/client/crafting/ui.rs index 3f94051308c512da9b842926d6a5f1dc5a6690ee..aea60e1245b3941795d0bc966585781d0d187451 100644 --- a/crates/unified/src/client/crafting/ui.rs +++ b/crates/unified/src/client/crafting/ui.rs @@ -2,7 +2,11 @@ use std::collections::HashMap; use bevy::{input_focus::AutoFocus, ui::RelativeCursorPosition}; -use crate::{attachment::PartInShip, client::colors, config::recipe::RecipesConfig, ecs::{CanCraft, CraftPartRequest, CraftingUi, Drill, MainCamera, Me, Part, SingleStorage, ToggleDrillEvent, VariableStorage}, prelude::*}; +use crate::{client::colors, prelude::*}; +use crate::client::components::{CraftingUi, MainCamera, Me}; +use crate::shared::attachment::PartInShip; +use crate::shared::config::recipe::RecipesConfig; +use crate::shared::ecs::{CanCraft, CraftPartRequest, Drill, Part, SingleStorage, ToggleDrillEvent, VariableStorage}; pub fn crafting_ui_plugin(app: &mut App) { app.init_resource::(); diff --git a/crates/unified/src/client/input/mod.rs b/crates/unified/src/client/input/mod.rs index a8fd76346ab64ee59c530a6d967f47acbf523aa3..7e40d75f978227e3bd8579cef96a36f3b1fe099c 100644 --- a/crates/unified/src/client/input/mod.rs +++ b/crates/unified/src/client/input/mod.rs @@ -5,7 +5,7 @@ use bevy::window::PrimaryWindow; use leafwing_input_manager::Actionlike; use leafwing_input_manager::input_map::InputMap; use leafwing_input_manager::prelude::ActionState; -use crate::ecs::MainCamera; +use crate::client::components::MainCamera; use crate::prelude::*; #[derive(Actionlike, PartialEq, Eq, Hash, Clone, Copy, Debug, Reflect)] diff --git a/crates/unified/src/client/mod.rs b/crates/unified/src/client/mod.rs index bffcc63381babc85b29acfe7dffab62a0e0a46d7..7f002259ae070e14af920450e371381799a29463 100644 --- a/crates/unified/src/client/mod.rs +++ b/crates/unified/src/client/mod.rs @@ -8,12 +8,12 @@ use crate::client::ui::ui_plugin; use crate::client::zoom::zoom_plugin; use crate::client::starguide::init::starguide_init_plugin; use crate::client::starguide::input::starguide_input_plugin; -use crate::ecs::StarguideGizmos; +use components::StarguideGizmos; use bevy::dev_tools::picking_debug::DebugPickingMode; use crate::prelude::*; use planet::incoming_planets::incoming_planets_plugin; use crate::client::ship::attachment::client_attachment_plugin; -use crate::ecs::GameplayState; +use crate::shared::ecs::GameplayState; pub mod colors; pub mod key_input; @@ -27,6 +27,8 @@ pub mod rendering; pub mod input; pub mod starguide; pub mod crafting; +pub mod components; +pub mod plugins; pub struct ClientPlugin; diff --git a/crates/unified/src/client/parts.rs b/crates/unified/src/client/parts.rs index 18059c97bca3af30313e4776dfb8b7fc0e715b3e..fbbdb69bb7121b0912ead33e55eebb30c0ee46cf 100644 --- a/crates/unified/src/client/parts.rs +++ b/crates/unified/src/client/parts.rs @@ -1,12 +1,13 @@ use std::f32::consts::PI; -use crate::attachment::{Joint, JointOf, Joints, PartInShip, Peer, SnapOf, SnapOfJoint}; +use crate::shared::attachment::{Joint, JointOf, Joints, PartInShip, Peer, SnapOf, SnapOfJoint}; use crate::client::crafting::ui::open_crafting_ui; -use crate::ecs::{Me, Temperature}; +use crate::shared::ecs::Temperature; use crate::client::colors::GREEN; -use crate::ecs::{DragRequestEvent, Part, MAIN_LAYER}; +use crate::shared::ecs::{DragRequestEvent, Part, MAIN_LAYER}; use crate::client::input::CursorWorldCoordinates; use bevy::color::palettes::css::{ORANGE, PURPLE, RED, YELLOW}; +use crate::client::components::Me; use crate::client::ship::attachment::AttachmentDebugRes; use crate::prelude::*; diff --git a/crates/unified/src/client/planet/incoming_planets.rs b/crates/unified/src/client/planet/incoming_planets.rs index f2db81f04f7cb56bfeae556249d6b52d67427c4a..8ee2fdb81ccdff21fd29c68d5a5f357878d17079 100644 --- a/crates/unified/src/client/planet/incoming_planets.rs +++ b/crates/unified/src/client/planet/incoming_planets.rs @@ -1,6 +1,6 @@ -use crate::config::planet::{Planet, SpecialSpriteProperties}; +use crate::shared::config::planet::{Planet, SpecialSpriteProperties}; use crate::prelude::*; -use crate::ecs::{MAIN_STAR_LAYERS}; +use crate::shared::ecs::{MAIN_STAR_LAYERS}; pub fn incoming_planets_plugin(app: &mut App) { app.add_systems(Update, (handle_incoming_planets, handle_updated_planets)); diff --git a/crates/unified/src/client/planet/indicators.rs b/crates/unified/src/client/planet/indicators.rs index 93227283de53b5e55bb5fa9e290c19ba26661ed0..01c1099145848f94154134d0e2df06a97aab302a 100644 --- a/crates/unified/src/client/planet/indicators.rs +++ b/crates/unified/src/client/planet/indicators.rs @@ -1,6 +1,6 @@ -use crate::ecs::Me; -use crate::config::planet::Planet; -use crate::ecs::MainCamera; +use crate::client::components::Me; +use crate::shared::config::planet::Planet; +use crate::client::components::MainCamera; use crate::prelude::*; use bevy::window::PrimaryWindow; diff --git a/crates/unified/src/client_plugins.rs b/crates/unified/src/client/plugins.rs similarity index 100% rename from crates/unified/src/client_plugins.rs rename to crates/unified/src/client/plugins.rs diff --git a/crates/unified/src/client/rendering/mod.rs b/crates/unified/src/client/rendering/mod.rs index 2f65de6b58380dd2984ed1edc5ab09819e0da6fb..baa6caef71c307c55c7b918f6cd02890625eb518 100644 --- a/crates/unified/src/client/rendering/mod.rs +++ b/crates/unified/src/client/rendering/mod.rs @@ -2,7 +2,8 @@ use bevy::anti_alias::fxaa::Fxaa; use bevy::app::{App, Startup}; use bevy::core_pipeline::tonemapping::DebandDither; use bevy::post_process::bloom::Bloom; -use crate::ecs::{GameplayState, MAIN_LAYER, MainCamera, Me, STARGUIDE_LAYER, StarguideGizmos}; +use crate::client::components::{MainCamera, Me, StarguideGizmos}; +use crate::shared::ecs::{GameplayState, MAIN_LAYER, STARGUIDE_LAYER}; use crate::prelude::*; pub fn render_plugin(app: &mut App) { diff --git a/crates/unified/src/client/ship/attachment.rs b/crates/unified/src/client/ship/attachment.rs index e9dfe35a81d88b2f9e2e0584a0dab6f900d1e438..e1560d5ee0de215515900a3570e2d736fbe4bfee 100644 --- a/crates/unified/src/client/ship/attachment.rs +++ b/crates/unified/src/client/ship/attachment.rs @@ -1,8 +1,8 @@ use std::ops::Deref; use bevy::color::palettes::basic::{FUCHSIA, GREEN, WHITE}; use bevy::color::palettes::css::ORANGE; -use crate::attachment::{JointOf, Peer, SnapOf}; -use crate::ecs::Part; +use crate::shared::attachment::{JointOf, Peer, SnapOf}; +use crate::shared::ecs::Part; use crate::prelude::*; pub fn client_attachment_plugin(app: &mut App) { diff --git a/crates/unified/src/client/ship/thrusters.rs b/crates/unified/src/client/ship/thrusters.rs index dcfcedb2f8fff6b97fab49b2d90d1b2a5f8914c2..bf1ea127c1d8e842ed47061bd0800339ee4b647f 100644 --- a/crates/unified/src/client/ship/thrusters.rs +++ b/crates/unified/src/client/ship/thrusters.rs @@ -6,13 +6,13 @@ use bevy::color::palettes::css::LIMEGREEN; use bevy::math::Vec3Swizzles; use good_lp::{default_solver, variable, Expression, ProblemVariables, Solution, SolutionStatus, SolverModel}; use leafwing_input_manager::prelude::ActionState; -use crate::attachment::Parts; +use crate::shared::attachment::Parts; use crate::client::input::ClientAction; -use crate::ecs::thruster::{PartThrusters, Thruster}; +use crate::shared::ecs::thruster::{PartThrusters, Thruster}; use crate::prelude::*; use crate::client::input::util::ActionStateExt; -use crate::ecs::Me; -use crate::thrust::ThrustSolution; +use crate::client::components::Me; +use crate::shared::thrust::ThrustSolution; pub fn client_thrusters_plugin(app: &mut App) { app diff --git a/crates/unified/src/client/starfield.rs b/crates/unified/src/client/starfield.rs index b4749f355dfb1dee307ec116e74555fc1fd7e2b2..45a7eef645c1e83d76ce3a0b26047f0fc6354db2 100644 --- a/crates/unified/src/client/starfield.rs +++ b/crates/unified/src/client/starfield.rs @@ -15,11 +15,9 @@ use bevy::{ transform::components::Transform, window::{Window, WindowResized}, }; - -use crate::{ - ecs::Me, - ecs::{MainCamera, MAIN_LAYER, StarfieldBack, StarfieldFront, StarfieldMid}, -}; +use crate::client::components::{MainCamera, StarfieldBack, StarfieldFront, StarfieldMid}; +use crate::shared::ecs::MAIN_LAYER; +use crate::client::components::Me; pub const BACK_STARFIELD_SIZE: f32 = 256.0; pub const MID_STARFIELD_SIZE: f32 = 384.0; diff --git a/crates/unified/src/client/starguide/init.rs b/crates/unified/src/client/starguide/init.rs index f8f779329031f9ca705628dd365e33d659ee2ae6..2961e33ec566c6a08edfc2bc8fbf15979e827be2 100644 --- a/crates/unified/src/client/starguide/init.rs +++ b/crates/unified/src/client/starguide/init.rs @@ -1,8 +1,9 @@ use bevy::anti_alias::fxaa::Fxaa; use bevy::core_pipeline::tonemapping::DebandDither; use bevy::post_process::bloom::Bloom; +use crate::client::components::{Me, StarguideCamera, StarguideMe, StarguideOrbit}; use crate::prelude::*; -use crate::ecs::{Me, Part, STARGUIDE_LAYER, StarguideCamera, StarguideMe, StarguideOrbit}; +use crate::shared::ecs::{Part, STARGUIDE_LAYER}; pub fn starguide_init_plugin(app: &mut App) { app diff --git a/crates/unified/src/client/starguide/input.rs b/crates/unified/src/client/starguide/input.rs index 3027b1ca8d55fb90136131ecc425f96f0a75fae1..f4f16f0d251796990fec1e5f2cb21a8b3296b3da 100644 --- a/crates/unified/src/client/starguide/input.rs +++ b/crates/unified/src/client/starguide/input.rs @@ -1,6 +1,6 @@ use crate::prelude::*; use crate::client::input::CursorWorldCoordinates; -use crate::ecs::StarguideCamera; +use crate::client::components::StarguideCamera; pub fn starguide_input_plugin(app: &mut App) { app diff --git a/crates/unified/src/client/starguide/orbit.rs b/crates/unified/src/client/starguide/orbit.rs index c59ed0c71841ad7b6955631c430a8f1094413480..593c05a746c2bd565edea802ec61241125e75fdb 100644 --- a/crates/unified/src/client/starguide/orbit.rs +++ b/crates/unified/src/client/starguide/orbit.rs @@ -1,7 +1,8 @@ use std::f64::consts::PI; - - -use crate::{config::planet::Planet, ecs::{Me, StarguideCamera, StarguideGizmos}, prelude::*, world_config::WorldConfigResource}; +use crate::client::components::{Me, StarguideCamera, StarguideGizmos}; +use crate::prelude::*; +use crate::shared::config::planet::Planet; +use crate::shared::world_config::WorldConfigResource; pub fn starguide_orbit_plugin(app: &mut App) { app diff --git a/crates/unified/src/client/ui.rs b/crates/unified/src/client/ui.rs index 154da237b42e78b829a9575ec3833b904ab1e9fe..9379aaa5ba3de6ddb026e8eb3821c356b125a455 100644 --- a/crates/unified/src/client/ui.rs +++ b/crates/unified/src/client/ui.rs @@ -1,10 +1,9 @@ use crate::prelude::*; -use crate::{ - client::colors, - ecs::{FuelText, Player, PlayerStorage, PowerText, MainCamera, MAIN_LAYER}, -}; +use crate::client::colors; +use crate::client::components::{FuelText, MainCamera, PowerText}; use crate::client::rendering::setup_graphics; +use crate::shared::ecs::{Player, PlayerStorage, MAIN_LAYER}; pub fn ui_plugin(app: &mut App) { app.add_systems(Startup, setup_ui.after(setup_graphics)) diff --git a/crates/unified/src/client/zoom.rs b/crates/unified/src/client/zoom.rs index d18b6ac095119234f278e4b973a4e983e89fdf8a..b5c959a72041385246024fb2153aa3fb1e8727b4 100644 --- a/crates/unified/src/client/zoom.rs +++ b/crates/unified/src/client/zoom.rs @@ -2,12 +2,9 @@ use bevy::{ input::mouse::{MouseScrollUnit, MouseWheel}, prelude::*, }; - -use crate::{ - client::starfield::{BACK_STARFIELD_SIZE, FRONT_STARFIELD_SIZE, MID_STARFIELD_SIZE, StarfieldSize}, ecs::{MainCamera, Me, OrbitCamera, StarfieldBack, StarfieldFront, StarfieldMid} -}; -use crate::ecs::{StarguideCamera, GameplayState}; - +use crate::client::components::{MainCamera, Me, OrbitCamera, StarfieldBack, StarfieldFront, StarfieldMid, StarguideCamera}; +use crate::client::starfield::{StarfieldSize, BACK_STARFIELD_SIZE, FRONT_STARFIELD_SIZE, MID_STARFIELD_SIZE}; +use crate::shared::ecs::GameplayState; pub fn zoom_plugin(app: &mut App) { app.add_systems(Update, on_scroll); } diff --git a/crates/unified/src/main.rs b/crates/unified/src/main.rs index 131a6769fd43844b8ca3b7407d2f1da2253457cb..596a62448b3aa41153d968b1559cf04b87a39bdf 100644 --- a/crates/unified/src/main.rs +++ b/crates/unified/src/main.rs @@ -16,32 +16,25 @@ #![allow(clippy::too_many_arguments, reason = "Le Bevy:tm:")] #![allow(clippy::too_many_lines, reason = "With the three of us, this is impossible")] -pub mod attachment; pub mod client; -pub mod client_plugins; -pub mod config; -pub mod ecs; pub mod server; -pub mod server_plugins; -pub mod shared_plugins; -pub mod world_config; -pub mod physics; pub mod prelude; #[cfg(target_arch = "wasm32")] pub mod wasm_entrypoint; mod cli; -mod thrust; +pub mod shared; use std::str::FromStr; +use shared::plugins; #[cfg(target_arch = "wasm32")] pub use wasm_entrypoint::*; use crate::cli::StkArgs; -use crate::client_plugins::ClientPluginGroup; +use client::plugins::ClientPluginGroup; use crate::prelude::*; -use crate::server_plugins::ServerPluginGroup; +use server::plugins::ServerPluginGroup; fn run(cli: StkArgs) -> AppExit { let mut app = App::new(); @@ -53,7 +46,7 @@ fn run(cli: StkArgs) -> AppExit { .disable::() .disable::() ); - app.add_plugins(shared_plugins::SharedPluginGroup); + app.add_plugins(plugins::SharedPluginGroup); app.add_plugins(ServerPluginGroup); app.add_plugins(ClientPluginGroup); } diff --git a/crates/unified/src/server/craft.rs b/crates/unified/src/server/craft.rs index 21a1b4479d37fb3370fea5a9664c147905349c3a..cf01bdadfea8e94ab776883d7cd2083a1ae860ff 100644 --- a/crates/unified/src/server/craft.rs +++ b/crates/unified/src/server/craft.rs @@ -1,6 +1,8 @@ use std::collections::HashMap; -use crate::{attachment::{PartInShip, Parts}, ecs::{CraftPartRequest, Part, Player, SingleStorage, VariableStorage}, prelude::*, server::part::{SpawnPartBundle, SpawnPartRequest}}; +use crate::{prelude::*, server::part::{SpawnPartBundle, SpawnPartRequest}}; +use crate::shared::attachment::{PartInShip, Parts}; +use crate::shared::ecs::{CraftPartRequest, Part, Player, SingleStorage, VariableStorage}; pub fn craft_plugin(app: &mut App) { app.add_systems(Update, receive_crafting_request); diff --git a/crates/unified/src/server/drill.rs b/crates/unified/src/server/drill.rs index 7e392a70015aac5982ef1c8ebe9c8c5982e2e1a3..70eb4806362b9d8872caf752f35c77bb03cad6dc 100644 --- a/crates/unified/src/server/drill.rs +++ b/crates/unified/src/server/drill.rs @@ -1,4 +1,8 @@ -use crate::{attachment::{PartInShip, Parts}, config::planet::Planet, ecs::{Drill, Part, PlanetSensor, Player, SingleStorage, ToggleDrillEvent, VariableStorage}, prelude::*}; +use crate::client::components::PlanetSensor; +use crate::prelude::*; +use crate::shared::attachment::{PartInShip, Parts}; +use crate::shared::config::planet::Planet; +use crate::shared::ecs::{Drill, Part, Player, SingleStorage, ToggleDrillEvent, VariableStorage}; pub fn drill_plugin(app: &mut App) { app.add_systems(Update, (toggle_drill, drill_on_planet, do_drilling)); diff --git a/crates/unified/src/server/earth_parts.rs b/crates/unified/src/server/earth_parts.rs index d1f18e9de246fffc26984332cbafce4db0ed2106..c2cb6b2c87aca9907f7c2ea64f5ea86f22d97c5b 100644 --- a/crates/unified/src/server/earth_parts.rs +++ b/crates/unified/src/server/earth_parts.rs @@ -1,6 +1,6 @@ -use crate::config::planet::Planet; +use crate::shared::config::planet::Planet; use crate::server::part::{SpawnPartBundle, SpawnPartRequest}; -use crate::world_config::WorldConfigResource; +use crate::shared::world_config::WorldConfigResource; use bevy::app::App; use crate::prelude::*; use bevy::time::Time; diff --git a/crates/unified/src/server/gravity.rs b/crates/unified/src/server/gravity.rs index 0ef5cae0514189f882073b47a32b2ac2b2736f32..f73c1c2e2701a78bda1fa6df676aeafab9c1a4a0 100644 --- a/crates/unified/src/server/gravity.rs +++ b/crates/unified/src/server/gravity.rs @@ -1,8 +1,8 @@ -use crate::config::planet::Planet; -use crate::ecs::Part; +use crate::shared::config::planet::Planet; +use crate::shared::ecs::Part; use crate::prelude::*; use crate::server::system_sets::WorldUpdateSet; -use crate::world_config::WorldConfigResource; +use crate::shared::world_config::WorldConfigResource; pub fn newtonian_gravity_plugin(app: &mut App) { app.add_systems(Update, update_gravity.in_set(WorldUpdateSet)); diff --git a/crates/unified/src/server/heat/conduction.rs b/crates/unified/src/server/heat/conduction.rs index a9ff183edd02bf1ac4302defa81f41a9a2bb35a5..8a30383733b36d751c68e216b99df1bc768f78b0 100644 --- a/crates/unified/src/server/heat/conduction.rs +++ b/crates/unified/src/server/heat/conduction.rs @@ -1,4 +1,5 @@ -use crate::{attachment::Peer, prelude::*}; +use crate::prelude::*; +use crate::shared::attachment::Peer; pub fn heat_conduction_plugin(app: &mut App) { app.add_systems(Update, propagate_heat); diff --git a/crates/unified/src/server/heat/cooling.rs b/crates/unified/src/server/heat/cooling.rs index ab05b2e39e4becaa3ed4dac1ed0c6a2bdc103f86..fc5dd15858f1089373211e8511d94763dcd2e84d 100644 --- a/crates/unified/src/server/heat/cooling.rs +++ b/crates/unified/src/server/heat/cooling.rs @@ -1,5 +1,5 @@ use crate::prelude::*; -use crate::ecs::{Cooler, Temperature}; +use crate::shared::ecs::{Cooler, Temperature}; pub fn heat_cooling_plugin(app: &mut App) { app.add_systems(Update, cool_part); diff --git a/crates/unified/src/server/heat/radiation.rs b/crates/unified/src/server/heat/radiation.rs index 9076939aeec9acf0b8720efb2cb102ac9244a3e0..dda46517a01c65a1b8cbd31195354c3f5905c51f 100644 --- a/crates/unified/src/server/heat/radiation.rs +++ b/crates/unified/src/server/heat/radiation.rs @@ -1,4 +1,5 @@ -use crate::{ecs::{Part, Radiator, Temperature}, prelude::*}; +use crate::prelude::*; +use crate::shared::ecs::{Part, Radiator, Temperature}; const STEFAN_BOLTZMANN: f64 = 5.670374419E-8; const T_ENV: f64 = 4.0; // units: Kelvin diff --git a/crates/unified/src/server/mod.rs b/crates/unified/src/server/mod.rs index 2ed0a832a92e5db60e392ceb5bf0843fd0534317..232f70f6cd8046059f32a03a79bd4f1604e87dcf 100644 --- a/crates/unified/src/server/mod.rs +++ b/crates/unified/src/server/mod.rs @@ -9,6 +9,7 @@ pub mod planets; pub mod player; mod system_sets; pub mod orbit; +pub mod plugins; use crate::server::craft::craft_plugin; use crate::server::damping::damping_plugin; diff --git a/crates/unified/src/server/orbit/mod.rs b/crates/unified/src/server/orbit/mod.rs index c0b770c47a58bbff21edd15f669b73f03ee35687..74e3433a2fcf9992a739ced19345b0c3ae234409 100644 --- a/crates/unified/src/server/orbit/mod.rs +++ b/crates/unified/src/server/orbit/mod.rs @@ -4,9 +4,9 @@ use avian2d::math::TAU; use avian2d::prelude::{LinearVelocity, Mass}; use bevy::prelude::{Plugin, Transform}; use bevy::time::Time; -use crate::config::planet::{Planet, PlanetSpring}; +use crate::shared::config::planet::{Planet, PlanetSpring}; use crate::prelude::{App, Query, Res, Update, Without}; -use crate::world_config::WorldConfigResource; +use crate::shared::world_config::WorldConfigResource; pub struct OrbitPlugin; impl Plugin for OrbitPlugin { diff --git a/crates/unified/src/server/part.rs b/crates/unified/src/server/part.rs index 962c276bc25b50d4e282e96080fdcdffd4bda94e..0f14b2736d810cd4007f1ebeb8d35c77614204df 100644 --- a/crates/unified/src/server/part.rs +++ b/crates/unified/src/server/part.rs @@ -1,10 +1,10 @@ use std::collections::HashMap; -use crate::attachment::{Joint, JointId, JointOf, Joints, Peer, SnapOf, SnapOfJoint}; -use crate::config::part::{CoolingConfig, CraftingConfig, DrillConfig, JointConfig, PartConfig, StorageConfig, StorageType}; -use crate::ecs::{CanCraft, Cooler, Drill, Part, PartHandle, Radiator, SingleStorage, Temperature, VariableStorage}; +use crate::shared::attachment::{Joint, JointId, JointOf, Joints, Peer, SnapOf, SnapOfJoint}; +use crate::shared::config::part::{CoolingConfig, CraftingConfig, DrillConfig, JointConfig, PartConfig, StorageConfig, StorageType}; +use crate::shared::ecs::{CanCraft, Cooler, Drill, Part, PartHandle, Radiator, SingleStorage, Temperature, VariableStorage}; use crate::prelude::*; -use crate::ecs::thruster::{PartThrusters, Thruster, ThrusterBundle, ThrusterId, ThrusterOfPart}; +use crate::shared::ecs::thruster::{PartThrusters, Thruster, ThrusterBundle, ThrusterId, ThrusterOfPart}; pub fn part_management_plugin(app: &mut App) { app.add_systems(PreUpdate, (handle_ready_parts, handle_part_reloading)); diff --git a/crates/unified/src/server/planets.rs b/crates/unified/src/server/planets.rs index 6eadda43d8bbf23ce162c3af636efe3dac66e5dc..2e3b25deab1c2bb1dde0134162fafff0d34e2f50 100644 --- a/crates/unified/src/server/planets.rs +++ b/crates/unified/src/server/planets.rs @@ -1,7 +1,9 @@ -use crate::{config::planet::{Planet, PlanetBundle, PlanetConfigCollection}, ecs::PlanetSensor, world_config::WorldConfigResource}; +use crate::client::components::PlanetSensor; use bevy::{asset::Handle, math::DVec3}; use crate::prelude::*; -use crate::config::planet::{PlanetSpring, PlanetSpringJoint}; +use crate::shared::config::planet::{PlanetSpring, PlanetSpringJoint}; +use crate::shared::config::planet::{Planet, PlanetBundle, PlanetConfigCollection}; +use crate::shared::world_config::WorldConfigResource; pub fn planets_plugin(app: &mut App) { app.init_resource::() diff --git a/crates/unified/src/server/player.rs b/crates/unified/src/server/player.rs index a6fb2f5b686fb43e131e7176fcb842f19a5ddbc8..36e76694f71a4f5cd7cb5b356963c03d29769e24 100644 --- a/crates/unified/src/server/player.rs +++ b/crates/unified/src/server/player.rs @@ -1,13 +1,14 @@ pub mod join; pub mod thrust; -use crate::attachment::{Joint, JointOf, Joints, PartInShip, Peer, SnapOf, SnapOfJoint}; -use crate::ecs::{DragRequestEvent, Me, Part, Player, PlayerStorage}; +use crate::shared::attachment::{Joint, JointOf, Joints, PartInShip, Peer, SnapOf, SnapOfJoint}; +use crate::shared::ecs::{DragRequestEvent, Part, Player, PlayerStorage}; use crate::server::damping::ModuleJointDamping; use crate::server::system_sets::PlayerInputSet; use crate::prelude::*; -use crate::world_config::WorldConfigResource; +use crate::shared::world_config::WorldConfigResource; use std::f64::consts::PI; +use crate::client::components::Me; pub fn player_management_plugin(app: &mut App) { app.add_systems( diff --git a/crates/unified/src/server/player/join.rs b/crates/unified/src/server/player/join.rs index 2259f7470d0d355f3de5a34afad070fe83747bd9..79bfe579ad668b7527fd5db546b13f6afea27937 100644 --- a/crates/unified/src/server/player/join.rs +++ b/crates/unified/src/server/player/join.rs @@ -1,10 +1,11 @@ -use crate::config::planet::Planet; -use crate::config::world::GlobalWorldConfig; -use crate::ecs::{Me, Player, PlayerStorage}; +use crate::client::components::Me; +use crate::shared::config::planet::Planet; +use crate::shared::config::world::GlobalWorldConfig; +use crate::shared::ecs::{Player, PlayerStorage}; use crate::prelude::*; use crate::server::ConnectedGameEntity; use crate::server::part::SpawnPartRequest; -use crate::world_config::WorldConfigResource; +use crate::shared::world_config::WorldConfigResource; fn join_player(joined_player: Entity, mut commands: Commands, wc: &GlobalWorldConfig, planets: Query<(&Transform, &LinearVelocity, &Planet)>, asset_server: &AssetServer diff --git a/crates/unified/src/server/player/thrust.rs b/crates/unified/src/server/player/thrust.rs index 6d52ca94a5f41bbd18a85238769a5b9dc665fd87..20724da5c122a3230f097c8ead7d05d602ab9b4c 100644 --- a/crates/unified/src/server/player/thrust.rs +++ b/crates/unified/src/server/player/thrust.rs @@ -2,11 +2,12 @@ //! The thrust solver runs on the client and sends a `ThrustSolution` message; //! this file receives it and applies it to the physics simulation. -use crate::ecs::{Me, Part, Temperature}; -use crate::ecs::thruster::{Thruster, ThrusterOfPart}; +use crate::client::components::Me; +use crate::shared::ecs::{Part, Temperature}; +use crate::shared::ecs::thruster::{Thruster, ThrusterOfPart}; use crate::prelude::*; -use crate::attachment::Parts; -use crate::thrust::ThrustSolution; +use crate::shared::attachment::Parts; +use crate::shared::thrust::ThrustSolution; pub fn server_thrust_plugin(app: &mut App) { app diff --git a/crates/unified/src/server_plugins.rs b/crates/unified/src/server/plugins.rs similarity index 100% rename from crates/unified/src/server_plugins.rs rename to crates/unified/src/server/plugins.rs diff --git a/crates/unified/src/attachment.rs b/crates/unified/src/shared/attachment.rs similarity index 100% rename from crates/unified/src/attachment.rs rename to crates/unified/src/shared/attachment.rs diff --git a/crates/unified/src/config/mod.rs b/crates/unified/src/shared/config/mod.rs similarity index 100% rename from crates/unified/src/config/mod.rs rename to crates/unified/src/shared/config/mod.rs diff --git a/crates/unified/src/config/part.rs b/crates/unified/src/shared/config/part.rs similarity index 100% rename from crates/unified/src/config/part.rs rename to crates/unified/src/shared/config/part.rs diff --git a/crates/unified/src/config/planet.rs b/crates/unified/src/shared/config/planet.rs similarity index 100% rename from crates/unified/src/config/planet.rs rename to crates/unified/src/shared/config/planet.rs diff --git a/crates/unified/src/config/recipe.rs b/crates/unified/src/shared/config/recipe.rs similarity index 100% rename from crates/unified/src/config/recipe.rs rename to crates/unified/src/shared/config/recipe.rs diff --git a/crates/unified/src/config/world.rs b/crates/unified/src/shared/config/world.rs similarity index 100% rename from crates/unified/src/config/world.rs rename to crates/unified/src/shared/config/world.rs diff --git a/crates/unified/src/ecs.rs b/crates/unified/src/shared/ecs.rs similarity index 73% rename from crates/unified/src/ecs.rs rename to crates/unified/src/shared/ecs.rs index 2a60347d2ad8e94cc578e29a7ef11532de99fcaf..3a9266e1d5d26d015aae3ca18b0d5ef9ac3cf568 100644 --- a/crates/unified/src/ecs.rs +++ b/crates/unified/src/shared/ecs.rs @@ -1,6 +1,6 @@ pub mod thruster; -use crate::config::part::PartConfig; +use crate::shared::config::part::PartConfig; use bevy::math::{Quat, Vec2}; use bevy::camera::visibility::RenderLayers; use crate::prelude::*; @@ -19,29 +19,7 @@ pub const STARGUIDE_LAYER: RenderLayers = RenderLayers::layer(1); pub static MAIN_STAR_LAYERS: LazyLock = LazyLock::new(|| RenderLayers::from_layers(&[0, 1])); pub const ORBIT_LAYER: RenderLayers = RenderLayers::layer(2); -#[derive(Component)] -pub struct MainCamera; -#[derive(Component)] -pub struct StarguideCamera; -#[derive(Component)] -pub struct OrbitCamera; - -#[derive(Default, Reflect, GizmoConfigGroup)] -pub struct StarguideGizmos; - -#[derive(Component)] -pub struct StarfieldFront; -#[derive(Component)] -pub struct StarfieldMid; -#[derive(Component)] -pub struct StarfieldBack; -#[derive(Component)] -pub struct FuelText; -#[derive(Component)] -pub struct PowerText; - -#[derive(Component)] -pub struct PlanetSensor(pub String); // corresponding planet name +// corresponding planet name #[derive(Component, Serialize, Deserialize, Debug)] #[require( @@ -78,21 +56,8 @@ pub struct PlayerStorage { pub power: f32, } -#[derive(Component)] -pub struct Me; -#[derive(Component)] -pub struct StarguideMe; - -#[derive(Resource)] -pub struct StarguideOrbitImage(pub Handle); - -#[derive(Component)] -pub struct StarguideOrbit; - #[derive(Component, Serialize, Deserialize, Debug)] pub struct CanCraft; -#[derive(Component, Serialize, Deserialize, Debug)] -pub struct CraftingUi; #[derive(Message, Debug, Clone)] pub struct CraftPartRequest { pub crafting_part: Entity, @@ -103,8 +68,6 @@ pub struct CraftPartRequest { #[derive(Component, Serialize, Deserialize, Debug)] pub struct Temperature(pub f64); #[derive(Component, Serialize, Deserialize, Debug)] -pub struct TemperatureSprite; -#[derive(Component, Serialize, Deserialize, Debug)] pub struct Cooler { pub cool_temperature: f64, pub heat_cooling_constant: f64, @@ -137,3 +100,4 @@ pub struct VariableStorage { pub resources: HashMap, pub capacity: f32, } + diff --git a/crates/unified/src/ecs/thruster.rs b/crates/unified/src/shared/ecs/thruster.rs similarity index 100% rename from crates/unified/src/ecs/thruster.rs rename to crates/unified/src/shared/ecs/thruster.rs diff --git a/crates/unified/src/shared/mod.rs b/crates/unified/src/shared/mod.rs new file mode 100644 index 0000000000000000000000000000000000000000..21ff3afbf32044c5882b9aa0dd03d6abc42efdb0 --- /dev/null +++ b/crates/unified/src/shared/mod.rs @@ -0,0 +1,7 @@ +pub mod attachment; +pub mod config; +pub mod physics; +pub mod thrust; +pub mod world_config; +pub mod plugins; +pub mod ecs; \ No newline at end of file diff --git a/crates/unified/src/physics.rs b/crates/unified/src/shared/physics.rs similarity index 100% rename from crates/unified/src/physics.rs rename to crates/unified/src/shared/physics.rs diff --git a/crates/unified/src/shared_plugins.rs b/crates/unified/src/shared/plugins.rs similarity index 82% rename from crates/unified/src/shared_plugins.rs rename to crates/unified/src/shared/plugins.rs index 489891418cfa8d6a6ac271a6056e4613e1ac6ae9..94de47b9a916ad09d659a1505d6ccbbf5153f64e 100644 --- a/crates/unified/src/shared_plugins.rs +++ b/crates/unified/src/shared/plugins.rs @@ -1,13 +1,13 @@ -use crate::ecs::{CraftPartRequest, DragRequestEvent, ToggleDrillEvent}; -use crate::thrust::ThrustSolution; +use crate::shared::ecs::{CraftPartRequest, DragRequestEvent, ToggleDrillEvent}; +use crate::shared::thrust::ThrustSolution; use bevy::app::{App, PluginGroup, PluginGroupBuilder}; use bevy_common_assets::toml::TomlAssetPlugin; use crate::prelude::*; -use crate::config::part::PartConfig; -use crate::config::planet::PlanetConfigCollection; -use crate::config::recipe::RecipesConfig; -use crate::config::world::GlobalWorldConfig; -use crate::world_config::world_config_plugin; +use crate::shared::config::part::PartConfig; +use crate::shared::config::planet::PlanetConfigCollection; +use crate::shared::config::recipe::RecipesConfig; +use crate::shared::config::world::GlobalWorldConfig; +use crate::shared::world_config::world_config_plugin; pub struct SharedPluginGroup; diff --git a/crates/unified/src/thrust.rs b/crates/unified/src/shared/thrust.rs similarity index 100% rename from crates/unified/src/thrust.rs rename to crates/unified/src/shared/thrust.rs diff --git a/crates/unified/src/world_config.rs b/crates/unified/src/shared/world_config.rs similarity index 96% rename from crates/unified/src/world_config.rs rename to crates/unified/src/shared/world_config.rs index 721e5dbb314f4ade3885d9e457a1841ab893da67..93c4991cfd22127c70db1895cb3afa3ee30036f4 100644 --- a/crates/unified/src/world_config.rs +++ b/crates/unified/src/shared/world_config.rs @@ -1,4 +1,4 @@ -use crate::config::world::GlobalWorldConfig; +use crate::shared::config::world::GlobalWorldConfig; use bevy::asset::Handle; use crate::prelude::*; diff --git a/crates/unified/src/wasm_entrypoint.rs b/crates/unified/src/wasm_entrypoint.rs index d6e0f77e9368e91a13d2cf674708b1f660d23da8..154dcfebfe81d9d8c9b4f96fb1dd4de6c32b0983 100644 --- a/crates/unified/src/wasm_entrypoint.rs +++ b/crates/unified/src/wasm_entrypoint.rs @@ -1,6 +1,6 @@ -use crate::client_plugins::ClientPluginGroup; -use crate::server_plugins::ServerPluginGroup; -use crate::shared_plugins::SharedPluginGroup; +use crate::client::plugins::ClientPluginGroup; +use crate::server::plugins::ServerPluginGroup; +use crate::shared::plugins::SharedPluginGroup; use bevy::app::App; use bevy::log::LogPlugin; use bevy::ui::UiPlugin;