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.rs15
1 files changed, 13 insertions, 2 deletions
diff --git a/examples/breakout/client.rs b/examples/breakout/client.rs
index e45c035..1596287 100644
--- a/examples/breakout/client.rs
+++ b/examples/breakout/client.rs
@@ -55,9 +55,12 @@ pub(crate) struct NetworkMapping {
map: HashMap<Entity, Entity>,
}
+#[derive(Component)]
+pub(crate) struct Paddle;
+
/// The buttons in the main menu.
#[derive(Clone, Copy, Component)]
-pub enum MenuItem {
+pub(crate) enum MenuItem {
Host,
Join,
}
@@ -98,6 +101,7 @@ fn spawn_paddle(commands: &mut Commands, position: &Vec3) -> Entity {
..default()
})
.insert(Collider)
+ .insert(Paddle)
.id()
}
@@ -127,6 +131,7 @@ pub(crate) fn handle_server_messages(
mut client_data: ResMut<ClientData>,
mut entity_mapping: ResMut<NetworkMapping>,
mut game_state: ResMut<State<GameState>>,
+ mut paddles: Query<&mut Transform, With<Paddle>>,
) {
while let Ok(Some(message)) = client.receive_message::<ServerMessage>() {
match message {
@@ -152,7 +157,13 @@ pub(crate) fn handle_server_messages(
ServerMessage::StartGame {} => game_state.set(GameState::Running).unwrap(),
ServerMessage::BrickDestroyed { client_id } => todo!(),
ServerMessage::BallPosition { entity, position } => todo!(),
- ServerMessage::PaddlePosition { entity, position } => todo!(),
+ ServerMessage::PaddlePosition { entity, position } => {
+ if let Some(local_paddle) = entity_mapping.map.get(&entity) {
+ if let Ok(mut paddle_transform) = paddles.get_mut(*local_paddle) {
+ paddle_transform.translation = position;
+ }
+ }
+ }
}
}
}