~starkingdoms/starkingdoms

ref: af4596b8b1b420a569b206cddbe2de664399218c starkingdoms/crates/unified/src/universal_entrypoint.rs -rw-r--r-- 1.3 KiB
af4596b8 — core feat(netcode-rewrite): begin reimplementing replication 28 days ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use bevy::app::ScheduleRunnerPlugin;
use bevy::prelude::Startup;
use crate::cli::StkArgs;
use crate::client::ClientPlugin;
use crate::client::plugins::ClientPluginGroup;
use crate::prelude::{App, AppExit, MinimalPlugins, PluginGroup};
#[cfg(not(target_arch = "wasm32"))]
use crate::server::player::join::spawn_singleplayer_player;
#[cfg(not(target_arch = "wasm32"))]
use crate::server::plugins::ServerPluginGroup;
#[cfg(not(target_arch = "wasm32"))]
use crate::server::ServerPlugin;
use crate::shared::plugins::SharedPluginGroup;

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(ClientPluginGroup);
            app.add_plugins(ClientPlugin { server: Some(server) });
        },
        #[cfg(not(target_arch = "wasm32"))]
        StkArgs::Server { bind_to, with_client } => {
            app.add_plugins(ServerPluginGroup);
            app.add_plugins(ServerPlugin { bind: bind_to });
            if with_client {
                app.add_plugins(ClientPluginGroup);
                app.add_plugins(ClientPlugin { server: None });
                app.add_systems(Startup, spawn_singleplayer_player);
            }
        }
    }

    app.run()
}