pub mod replication; pub mod server_plugins; mod shared_plugins; mod server; use std::net::SocketAddr; use std::process::exit; use bevy::log::tracing_subscriber; use clap::Parser; use bevy::prelude::*; use crate::server_plugins::ServerPluginGroup; use crate::shared_plugins::SharedPluginGroup; #[derive(Parser, Debug)] #[command(version, about)] enum Cli { Client { #[arg(short, long)] server: SocketAddr }, Server { #[arg(short, long)] bind: SocketAddr, #[arg(short, long)] tick_rate: f64 } } fn main() -> AppExit { tracing_subscriber::fmt() .with_env_filter(tracing_subscriber::EnvFilter::from_default_env()) .init(); let cli = Cli::parse(); debug!(?cli, "parsed cli"); let mut app = App::new(); match cli { Cli::Client { server } => { todo!() }, Cli::Server { bind, tick_rate } => { if cfg!(target_family = "wasm") { eprintln!("the server cannot run on webassembly"); exit(1); } app.add_plugins(ServerPluginGroup { bind, tick_rate }); } } app.add_plugins(SharedPluginGroup); app.run() }