From 144af6a353933efbedcbfaa3b08db3c52c12dcaf Mon Sep 17 00:00:00 2001 From: ghostly_zsh Date: Mon, 15 Jun 2026 15:16:43 -0500 Subject: [PATCH] chore: move ship editor to unified codebase --- Cargo.lock | 9 ----- crates/ship_editor/Cargo.toml | 25 ------------ crates/ship_editor/src/ui.rs | 23 ----------- crates/unified/src/cli.rs | 6 +++ crates/unified/src/main.rs | 1 + .../src => unified/src/ship_editor}/input.rs | 0 .../src/ship_editor/mod.rs} | 31 ++++++++------- crates/unified/src/ship_editor/plugins.rs | 10 +++++ crates/unified/src/ship_editor/ui.rs | 39 +++++++++++++++++++ crates/unified/src/universal_entrypoint.rs | 15 +++++-- 10 files changed, 86 insertions(+), 73 deletions(-) delete mode 100644 crates/ship_editor/Cargo.toml delete mode 100644 crates/ship_editor/src/ui.rs rename crates/{ship_editor/src => unified/src/ship_editor}/input.rs (100%) rename crates/{ship_editor/src/main.rs => unified/src/ship_editor/mod.rs} (51%) create mode 100644 crates/unified/src/ship_editor/plugins.rs create mode 100644 crates/unified/src/ship_editor/ui.rs diff --git a/Cargo.lock b/Cargo.lock index 0e41e08d07f0b4bd8937f29cc5e0f3c8954abad6..764a7a06f01324c77a866d7a36dde30d6e44d249 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5448,15 +5448,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "ship_editor" -version = "0.1.0" -dependencies = [ - "bevy", - "ctrlc", - "getrandom 0.4.2", -] - [[package]] name = "shlex" version = "1.3.0" diff --git a/crates/ship_editor/Cargo.toml b/crates/ship_editor/Cargo.toml deleted file mode 100644 index 406d5f772acfcea75f2376f9ecebfce9011b9e34..0000000000000000000000000000000000000000 --- a/crates/ship_editor/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "ship_editor" -version = "0.1.0" -edition = "2024" - -[dependencies] -bevy = { workspace = true } -getrandom = { workspace = true } - -[target.'cfg(not(target_arch = "wasm32"))'.dependencies] -ctrlc = { workspace = true, optional = true } - -[features] -native_dev = [ - "bevy/file_watcher", - "bevy/hotpatching", - "bevy/dynamic_linking", - "native", -] -native = [ - "bevy/x11", - "bevy/wayland", - "dep:ctrlc" -] -wasm = ["getrandom/wasm_js", "bevy/webgl2"] diff --git a/crates/ship_editor/src/ui.rs b/crates/ship_editor/src/ui.rs deleted file mode 100644 index c4713be02020165754234243f90247a32fd498eb..0000000000000000000000000000000000000000 --- a/crates/ship_editor/src/ui.rs +++ /dev/null @@ -1,23 +0,0 @@ -use bevy::prelude::*; - -pub fn ui_plugin(app: &mut App) { - app.add_systems(Startup, setup_ui); -} - -fn setup_ui(mut commands: Commands) { - commands.spawn(( - Node { - width: Val::Percent(100.), - height: Val::Percent(100.), - ..Default::default() - }, - children![( - Node { - width: Val::Px(32.0), - height: Val::Px(32.0), - ..Default::default() - }, - BackgroundColor(Color::LinearRgba(LinearRgba::rgb(1.0, 1.0, 1.0))), - )], - )); -} diff --git a/crates/unified/src/cli.rs b/crates/unified/src/cli.rs index 3c58714de8badb24e06086207f239424a01ea9de..6a0319be7174241afff6b1ee4016971506351548 100644 --- a/crates/unified/src/cli.rs +++ b/crates/unified/src/cli.rs @@ -12,6 +12,9 @@ pub enum StkArgs { bind_to: std::net::SocketAddr, with_client: bool }, + ShipEditor { + + } } #[cfg(not(target_arch = "wasm32"))] @@ -47,6 +50,9 @@ pub fn parse_args() -> StkArgs { with_client: pargs.contains("--with-client"), } }, + "ship_editor" => { + StkArgs::ShipEditor {} + }, unknown => { eprintln!("unknown subcommand: {unknown} (is that feature supported on this platform?)"); eprintln!("-h, --help for help"); diff --git a/crates/unified/src/main.rs b/crates/unified/src/main.rs index c12ac1c97374d310954c181dfe18219bb5522b28..7290248afcb0b7921ab94ccfdf2c204531fc07e7 100644 --- a/crates/unified/src/main.rs +++ b/crates/unified/src/main.rs @@ -28,6 +28,7 @@ pub mod wasm_entrypoint; pub mod cli; pub mod shared; pub mod universal_entrypoint; +pub mod ship_editor; use std::str::FromStr; #[cfg(target_arch = "wasm32")] diff --git a/crates/ship_editor/src/input.rs b/crates/unified/src/ship_editor/input.rs similarity index 100% rename from crates/ship_editor/src/input.rs rename to crates/unified/src/ship_editor/input.rs diff --git a/crates/ship_editor/src/main.rs b/crates/unified/src/ship_editor/mod.rs similarity index 51% rename from crates/ship_editor/src/main.rs rename to crates/unified/src/ship_editor/mod.rs index b315e2ecfbc5615aa90ca05b5a41a8006d51a262..6c369ec9a6b1a0583a93e5e9067d5e864fc88ade 100644 --- a/crates/ship_editor/src/main.rs +++ b/crates/unified/src/ship_editor/mod.rs @@ -1,17 +1,21 @@ -use bevy::{prelude::*}; -use crate::input::input_plugin; -use crate::ui::ui_plugin; - pub mod ui; -mod input; +pub mod input; +pub mod plugins; + +use crate::client::colors; +use crate::prelude::*; +use crate::ship_editor::input::input_plugin; +use crate::ship_editor::ui::ui_plugin; -fn main() { - App::new() - .add_plugins(DefaultPlugins) - .add_systems(Startup, setup) - .add_plugins(ui_plugin) - .add_plugins(input_plugin) - .run(); +pub struct ShipEditorPlugin; + +impl Plugin for ShipEditorPlugin { + fn build(&self, app: &mut App) { + app + .add_systems(Startup, setup) + .add_plugins(input_plugin) + .add_plugins(ui_plugin); + } } fn setup( @@ -19,6 +23,7 @@ fn setup( mut meshes: ResMut>, mut materials: ResMut>, ) { + commands.insert_resource(ClearColor(colors::BASE)); commands.spawn(( Camera2d::default(), Transform::from_xyz(0.0, 0.0, 0.0), @@ -29,4 +34,4 @@ fn setup( MeshMaterial2d(materials.add(Color::linear_rgb(0.0, 0.0, 0.0))), Transform::from_xyz(0.0, 0.0, 0.0) )); -} +} \ No newline at end of file diff --git a/crates/unified/src/ship_editor/plugins.rs b/crates/unified/src/ship_editor/plugins.rs new file mode 100644 index 0000000000000000000000000000000000000000..943a409fe861e6c27400dbce87ae2a3f6a86d4c8 --- /dev/null +++ b/crates/unified/src/ship_editor/plugins.rs @@ -0,0 +1,10 @@ +use bevy::app::PluginGroupBuilder; +use crate::prelude::*; + +pub struct ShipEditorPluginGroup; + +impl PluginGroup for ShipEditorPluginGroup { + fn build(self) -> PluginGroupBuilder { + PluginGroupBuilder::start::() + } +} \ No newline at end of file diff --git a/crates/unified/src/ship_editor/ui.rs b/crates/unified/src/ship_editor/ui.rs new file mode 100644 index 0000000000000000000000000000000000000000..62ada4b5f60154cd2c4d43feced099bcbe66507b --- /dev/null +++ b/crates/unified/src/ship_editor/ui.rs @@ -0,0 +1,39 @@ +use bevy::prelude::*; +use crate::client::colors; + +pub fn ui_plugin(app: &mut App) { + app.add_systems(Startup, setup_ui); +} + +fn setup_ui(mut commands: Commands) { + commands.spawn(( + Node { + width: Val::Percent(100.0), + height: Val::Percent(100.0), + ..Default::default() + }, + children![( + Node { + position_type: PositionType::Absolute, + margin: UiRect::AUTO.with_bottom(Val::Px(0.0)), + width: Val::Percent(50.0), + height: Val::Px(128.0), + ..Default::default() + }, + BackgroundColor(colors::MANTLE), + children![( + + )] + ), + ( + Node { + position_type: PositionType::Absolute, + margin: UiRect::AUTO.with_left(Val::Px(0.0)), + width: Val::Px(20.0), + height: Val::Percent(100.0), + ..Default::default() + }, + BackgroundColor(colors::MANTLE), + )], + )); +} diff --git a/crates/unified/src/universal_entrypoint.rs b/crates/unified/src/universal_entrypoint.rs index 7adf43ac161f03ead22f0b7a6399917718e0eebc..4f456630202494b946833339dffa400d22c643b5 100644 --- a/crates/unified/src/universal_entrypoint.rs +++ b/crates/unified/src/universal_entrypoint.rs @@ -3,7 +3,7 @@ use bevy::prelude::Startup; use crate::cli::StkArgs; use crate::client::ClientPlugin; use crate::client::plugins::ClientPluginGroup; -use crate::prelude::{App, AppExit, MinimalPlugins, PluginGroup}; +use crate::prelude::{App, AppExit, DefaultPlugins, MinimalPlugins, PluginGroup}; #[cfg(not(target_arch = "wasm32"))] use crate::server::player::join::spawn_singleplayer_player; #[cfg(not(target_arch = "wasm32"))] @@ -11,20 +11,24 @@ use crate::server::plugins::ServerPluginGroup; #[cfg(not(target_arch = "wasm32"))] use crate::server::ServerPlugin; use crate::shared::plugins::SharedPluginGroup; +use crate::ship_editor::plugins::ShipEditorPluginGroup; +use crate::ship_editor::ShipEditorPlugin; pub fn run(cli: StkArgs) -> AppExit { let mut app = App::new(); - app.add_plugins(MinimalPlugins.build().disable::()); - app.add_plugins(SharedPluginGroup); match cli { StkArgs::Client { server } => { + app.add_plugins(MinimalPlugins.build().disable::()); + app.add_plugins(SharedPluginGroup); app.add_plugins(ClientPluginGroup); app.add_plugins(ClientPlugin { server: Some(server) }); }, #[cfg(not(target_arch = "wasm32"))] StkArgs::Server { bind_to, with_client } => { + app.add_plugins(MinimalPlugins.build().disable::()); + app.add_plugins(SharedPluginGroup); app.add_plugins(ServerPluginGroup); app.add_plugins(ServerPlugin { bind: bind_to }); if with_client { @@ -33,6 +37,11 @@ pub fn run(cli: StkArgs) -> AppExit { app.add_systems(Startup, spawn_singleplayer_player); } } + StkArgs::ShipEditor {} => { + app.add_plugins(DefaultPlugins); + app.add_plugins(ShipEditorPluginGroup); + app.add_plugins(ShipEditorPlugin); + } } app.run()