aboutsummaryrefslogtreecommitdiff
path: root/examples/breakout/client.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/breakout/client.rs')
-rw-r--r--examples/breakout/client.rs68
1 files changed, 68 insertions, 0 deletions
diff --git a/examples/breakout/client.rs b/examples/breakout/client.rs
new file mode 100644
index 0000000..0c723a3
--- /dev/null
+++ b/examples/breakout/client.rs
@@ -0,0 +1,68 @@
+use std::collections::HashMap;
+
+use bevy::prelude::{warn, EventReader, ResMut};
+use bevy_quinnet::{
+ client::{CertificateVerificationMode, Client, ClientConfigurationData, ConnectionEvent},
+ ClientId,
+};
+
+use crate::protocol::ServerMessage;
+
+#[derive(Debug, Clone, Default)]
+pub(crate) struct Users {
+ self_id: ClientId,
+ names: HashMap<ClientId, String>,
+}
+
+pub(crate) fn handle_server_messages(mut client: ResMut<Client>, mut users: ResMut<Users>) {
+ while let Ok(Some(message)) = client.receive_message::<ServerMessage>() {
+ match message {
+ ServerMessage::ClientConnected { client_id: _ } => {}
+ ServerMessage::ClientDisconnected { client_id } => {
+ if let Some(username) = users.names.remove(&client_id) {
+ println!("{} left", username);
+ } else {
+ warn!("ClientDisconnected for an unknown client_id: {}", client_id)
+ }
+ }
+ ServerMessage::InitClient { client_id } => {
+ users.self_id = client_id;
+ }
+ ServerMessage::BrickDestroyed {} => todo!(),
+ ServerMessage::BallPosition {} => todo!(),
+ ServerMessage::PaddlePosition {} => todo!(),
+ }
+ }
+}
+
+pub(crate) fn start_connection(client: ResMut<Client>) {
+ client
+ .connect(
+ ClientConfigurationData::new("127.0.0.1".to_string(), 6000, "0.0.0.0".to_string(), 0),
+ CertificateVerificationMode::SkipVerification,
+ )
+ .unwrap();
+}
+
+pub(crate) fn handle_client_events(
+ connection_events: EventReader<ConnectionEvent>,
+ client: ResMut<Client>,
+) {
+ if !connection_events.is_empty() {
+ // We are connected
+ // let username: String = rand::thread_rng()
+ // .sample_iter(&Alphanumeric)
+ // .take(7)
+ // .map(char::from)
+ // .collect();
+
+ // println!("--- Joining with name: {}", username);
+ // println!("--- Type 'quit' to disconnect");
+
+ // client
+ // .send_message(ClientMessage::Join { name: username })
+ // .unwrap();
+
+ connection_events.clear();
+ }
+}