~starkingdoms/starkingdoms

144af6a353933efbedcbfaa3b08db3c52c12dcaf — ghostly_zsh a day ago 6aca948
chore: move ship editor to unified codebase
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()