use bevy::prelude::*;
use game_core::assets::AssetHandles;
use game_core::system::flow::AppState;
use game_core::system::resources::DefaultResourcesPlugin;
use iyes_loopless::prelude::AppLooplessStateExt;
use micro_musicbox::CombinedAudioPlugins;
use remote_events::RemoteEventPlugin;

fn main() {
	App::new()
		.add_loopless_state(AppState::Preload)
		.add_plugin(DefaultResourcesPlugin)
		.add_plugins(DefaultPlugins)
		.add_plugin(game_core::assets::AssetsPlugin)
		.add_plugins(CombinedAudioPlugins::<AssetHandles>::new())
		.add_plugin(game_core::splash_screen::SplashScreenPlugin)
		.add_plugin(game_core::system::camera::CameraManagementPlugin)
		.add_plugin(RemoteEventPlugin::<
			game_core::multiplayer::OutgoingEvent,
			game_core::multiplayer::IncomingEvent,
		>::new())
		.run();
}