#![warn(clippy::pedantic)] #![deny( clippy::allow_attributes_without_reason, clippy::assertions_on_result_states )] #![warn(clippy::if_then_some_else_none)] #![allow(clippy::type_complexity, reason = "Bevy makes this a nightmare")] #![allow(clippy::needless_pass_by_value, reason = "Bevy makes this a nightmare")] #![allow( clippy::cast_precision_loss, clippy::cast_possible_truncation, clippy::cast_sign_loss, reason = "We cast ints to floats a lot" )] #![allow(clippy::missing_panics_doc, reason = "Gamedev! We panic a lot")] #![allow(clippy::too_many_arguments, reason = "Le Bevy:tm:")] #![allow(clippy::too_many_lines, reason = "With the three of us, this is impossible")] pub mod client; pub mod server; pub mod prelude; #[cfg(target_arch = "wasm32")] pub mod wasm_entrypoint; mod cli; pub mod shared; use std::str::FromStr; use shared::plugins; #[cfg(target_arch = "wasm32")] pub use wasm_entrypoint::*; use crate::cli::StkArgs; use client::plugins::ClientPluginGroup; use crate::prelude::*; use server::plugins::ServerPluginGroup; fn run(cli: StkArgs) -> AppExit { let mut app = App::new(); match cli { StkArgs::Play => { app.add_plugins( DefaultPlugins.build() .disable::() .disable::() ); app.add_plugins(plugins::SharedPluginGroup); app.add_plugins(ServerPluginGroup); app.add_plugins(ClientPluginGroup); } } app.run() } #[cfg(feature = "wasm")] fn main() { // noop on webassembly } #[cfg(feature = "native")] fn main() -> AppExit { use tracing_subscriber::util::SubscriberInitExt; use bevy::log::tracing_subscriber; let cli = crate::cli::parse_args(); tracing_subscriber::fmt() .with_env_filter( tracing_subscriber::EnvFilter::from_default_env() .add_directive(tracing_subscriber::filter::Directive::from_str("naga=error").unwrap()) .add_directive(tracing_subscriber::filter::Directive::from_str("info").unwrap()) .add_directive(tracing_subscriber::filter::Directive::from_str("starkingdoms=trace").unwrap()), ) .finish() .init(); run(cli) }