aboutsummaryrefslogtreecommitdiff
path: root/examples/breakout/client.rs
diff options
context:
space:
mode:
authorHenauxg <19689618+Henauxg@users.noreply.github.com>2022-11-03 15:06:44 +0100
committerHenauxg <19689618+Henauxg@users.noreply.github.com>2022-11-03 15:06:44 +0100
commitd2b244966e1ccdad8e8a025b3cf3c65fd8520f20 (patch)
tree75c9e625f8bc77e1d1d5b5bd180ea5684f3e47f6 /examples/breakout/client.rs
parent6708e7c4bd6d7c43788549c30e52624e0b77346d (diff)
[example:breakout] Networked paddle movement
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;
+ }
+ }
+ }
}
}
}