diff options
Diffstat (limited to 'examples/chat/client.rs')
-rw-r--r-- | examples/chat/client.rs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/examples/chat/client.rs b/examples/chat/client.rs index 0e6fad7..15d515a 100644 --- a/examples/chat/client.rs +++ b/examples/chat/client.rs @@ -7,7 +7,10 @@ use std::{ use bevy::{ app::{AppExit, ScheduleRunnerPlugin}, log::LogPlugin, - prelude::{info, warn, App, Commands, CoreStage, EventReader, EventWriter, Res, ResMut}, + prelude::{ + info, warn, App, Commands, CoreStage, Deref, DerefMut, EventReader, EventWriter, Res, + ResMut, Resource, + }, }; use bevy_quinnet::{ client::{ @@ -23,12 +26,15 @@ use protocol::{ClientMessage, ServerMessage}; mod protocol; -#[derive(Debug, Clone, Default)] +#[derive(Resource, Debug, Clone, Default)] struct Users { self_id: ClientId, names: HashMap<ClientId, String>, } +#[derive(Resource, Deref, DerefMut)] +struct TerminalReceiver(mpsc::Receiver<String>); + pub fn on_app_exit(app_exit_events: EventReader<AppExit>, client: Res<Client>) { if !app_exit_events.is_empty() { client.send_message(ClientMessage::Disconnect {}).unwrap(); @@ -76,7 +82,7 @@ fn handle_server_messages(mut client: ResMut<Client>, mut users: ResMut<Users>) fn handle_terminal_messages( client: ResMut<Client>, - mut terminal_messages: ResMut<mpsc::Receiver<String>>, + mut terminal_messages: ResMut<TerminalReceiver>, mut app_exit_events: EventWriter<AppExit>, ) { while let Ok(message) = terminal_messages.try_recv() { @@ -101,7 +107,7 @@ fn start_terminal_listener(mut commands: Commands) { .unwrap(); }); - commands.insert_resource(from_terminal_receiver); + commands.insert_resource(TerminalReceiver(from_terminal_receiver)); } fn start_connection(client: ResMut<Client>) { |