diff options
author | Henauxg <19689618+Henauxg@users.noreply.github.com> | 2022-11-03 15:06:44 +0100 |
---|---|---|
committer | Henauxg <19689618+Henauxg@users.noreply.github.com> | 2022-11-03 15:06:44 +0100 |
commit | d2b244966e1ccdad8e8a025b3cf3c65fd8520f20 (patch) | |
tree | 75c9e625f8bc77e1d1d5b5bd180ea5684f3e47f6 /examples/breakout/client.rs | |
parent | 6708e7c4bd6d7c43788549c30e52624e0b77346d (diff) |
[example:breakout] Networked paddle movement
Diffstat (limited to 'examples/breakout/client.rs')
-rw-r--r-- | examples/breakout/client.rs | 15 |
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; + } + } + } } } } |