diff options
Diffstat (limited to 'examples/breakout/breakout.rs')
-rw-r--r-- | examples/breakout/breakout.rs | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/examples/breakout/breakout.rs b/examples/breakout/breakout.rs index 0ac79ed..5a51756 100644 --- a/examples/breakout/breakout.rs +++ b/examples/breakout/breakout.rs @@ -65,7 +65,7 @@ pub enum GameSystems { #[derive(Component, Deref, DerefMut)] struct Velocity(Vec2); -#[derive(Default)] +#[derive(Default, Event)] struct CollisionEvent; #[derive(Component)] @@ -118,9 +118,11 @@ fn server_is_listening(server: Res<Server>) -> bool { fn main() { let mut app = App::new(); - app.add_plugins(DefaultPlugins) - .add_plugin(QuinnetServerPlugin::default()) - .add_plugin(QuinnetClientPlugin::default()); + app.add_plugins(( + DefaultPlugins, + QuinnetServerPlugin::default(), + QuinnetClientPlugin::default(), + )); app.add_event::<CollisionEvent>(); app.add_state::<GameState>(); app.insert_resource(ClearColor(BACKGROUND_COLOR)) @@ -131,34 +133,41 @@ fn main() { .insert_resource(client::BricksMapping::default()); // ------ Main menu - app.add_system(bevy::window::close_on_esc) - .add_system(client::setup_main_menu.in_schedule(OnEnter(GameState::MainMenu))) - .add_system(client::handle_menu_buttons.in_set(OnUpdate(GameState::MainMenu))) - .add_system(client::teardown_main_menu.in_schedule(OnExit(GameState::MainMenu))); + app.add_systems(Update, bevy::window::close_on_esc) + .add_systems(OnEnter(GameState::MainMenu), client::setup_main_menu) + .add_systems( + Update, + client::handle_menu_buttons.run_if(in_state(GameState::MainMenu)), + ) + .add_systems(OnExit(GameState::MainMenu), client::teardown_main_menu); // ------ Hosting a server on a client app.add_systems( - (server::start_listening, client::start_connection) - .in_schedule(OnEnter(GameState::HostingLobby)), + OnEnter(GameState::HostingLobby), + (server::start_listening, client::start_connection), ) .add_systems( + Update, ( server::handle_client_messages, server::handle_server_events, client::handle_server_messages, ) - .in_set(OnUpdate(GameState::HostingLobby)), + .run_if(in_state(GameState::HostingLobby)), ); // ------ or just Joining as a client - app.add_system(client::start_connection.in_schedule(OnEnter(GameState::JoiningLobby))) - .add_system(client::handle_server_messages.in_set(OnUpdate(GameState::JoiningLobby))); + app.add_systems(OnEnter(GameState::JoiningLobby), client::start_connection) + .add_systems( + Update, + client::handle_server_messages.run_if(in_state(GameState::JoiningLobby)), + ); // ------ Running the game. // ------ Every app is a client - app.add_system(client::setup_breakout.in_schedule(OnEnter(GameState::Running))); - app.edit_schedule(CoreSchedule::FixedUpdate, |schedule| { + app.add_systems(OnEnter(GameState::Running), client::setup_breakout); + app.edit_schedule(FixedUpdate, |schedule| { schedule.configure_set(GameSystems::ClientSystems.run_if(in_state(GameState::Running))); schedule.add_systems( ( @@ -173,7 +182,7 @@ fn main() { }); // ------ But hosting apps are also a server - app.edit_schedule(CoreSchedule::FixedUpdate, |schedule| { + app.edit_schedule(FixedUpdate, |schedule| { schedule.configure_set( GameSystems::HostSystems .run_if(in_state(GameState::Running)) |