M Cargo.lock => Cargo.lock +0 -9
@@ 5449,15 5449,6 @@ dependencies = [
]
[[package]]
-name = "ship_editor"
-version = "0.1.0"
-dependencies = [
- "bevy",
- "ctrlc",
- "getrandom 0.4.2",
-]
-
-[[package]]
name = "shlex"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
D crates/ship_editor/Cargo.toml => crates/ship_editor/Cargo.toml +0 -25
@@ 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"]
M crates/unified/src/cli.rs => crates/unified/src/cli.rs +6 -0
@@ 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");
M crates/unified/src/main.rs => crates/unified/src/main.rs +1 -0
@@ 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")]
R crates/ship_editor/src/input.rs => crates/unified/src/ship_editor/input.rs +0 -0
R crates/ship_editor/src/main.rs => crates/unified/src/ship_editor/mod.rs +18 -13
@@ 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<Assets<Mesh>>,
mut materials: ResMut<Assets<ColorMaterial>>,
) {
+ 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
A crates/unified/src/ship_editor/plugins.rs => crates/unified/src/ship_editor/plugins.rs +10 -0
@@ 0,0 1,10 @@
+use bevy::app::PluginGroupBuilder;
+use crate::prelude::*;
+
+pub struct ShipEditorPluginGroup;
+
+impl PluginGroup for ShipEditorPluginGroup {
+ fn build(self) -> PluginGroupBuilder {
+ PluginGroupBuilder::start::<Self>()
+ }
+}<
\ No newline at end of file
R crates/ship_editor/src/ui.rs => crates/unified/src/ship_editor/ui.rs +21 -5
@@ 1,4 1,5 @@
use bevy::prelude::*;
+use crate::client::colors;
pub fn ui_plugin(app: &mut App) {
app.add_systems(Startup, setup_ui);
@@ 7,17 8,32 @@ pub fn ui_plugin(app: &mut App) {
fn setup_ui(mut commands: Commands) {
commands.spawn((
Node {
- width: Val::Percent(100.),
- height: Val::Percent(100.),
+ width: Val::Percent(100.0),
+ height: Val::Percent(100.0),
..Default::default()
},
children![(
Node {
- width: Val::Px(32.0),
- height: Val::Px(32.0),
+ 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(Color::LinearRgba(LinearRgba::rgb(1.0, 1.0, 1.0))),
+ 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),
)],
));
}
M crates/unified/src/universal_entrypoint.rs => crates/unified/src/universal_entrypoint.rs +12 -3
@@ 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::<ScheduleRunnerPlugin>());
- app.add_plugins(SharedPluginGroup);
match cli {
StkArgs::Client { server } => {
+ app.add_plugins(MinimalPlugins.build().disable::<ScheduleRunnerPlugin>());
+ 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::<ScheduleRunnerPlugin>());
+ 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()