Start button triggers connection & state change

When the start button is pressed, switch to a "connecting" state. This
triggers the spawning of the "connecting" UI message and the connection
startup.

When the connection task finishes, `fn handle_tasks()` collects it and
pushes the CommandQueue into the main world just as before. In addition,
it will change to the "playing" state, which triggers the despawning of
the UI notice.

There is no meaningful connection-error handling path. A failed
connection will print a warning to stdout, and that is all.

There is still no transmitter at all, nor is the receiver hooked up to
one of the paddles.
This commit is contained in:
2025-10-21 13:55:58 -05:00
parent 62c84aceaf
commit 7837ab49b0
2 changed files with 54 additions and 4 deletions

View File

@@ -33,7 +33,7 @@ pub fn spawn_main_menu(mut commands: Commands) {
let mut start_button = cmds.spawn(button_bundle("Start game"));
start_button.observe(
|_trigger: On<Pointer<Click>>, mut game_state: ResMut<NextState<GameState>>| {
game_state.set(GameState::Playing);
game_state.set(GameState::Connecting);
},
);
let mut quit_button = cmds.spawn(button_bundle("Quit Game"));
@@ -58,6 +58,29 @@ pub fn despawn_main_menu(
commands.entity(top_node.into_inner()).despawn();
}
pub fn spawn_connection_wait_screen(mut commands: Commands) {
info!("Spawning connecting notice.");
commands.spawn((
Node {
width: Val::Percent(100.0),
height: Val::Percent(100.0),
align_items: AlignItems::Center,
justify_content: JustifyContent::Center,
flex_direction: FlexDirection::Column,
..Default::default()
},
children![Text::new("Connecting...")],
));
}
pub fn despawn_connection_wait_screen(
mut commands: Commands,
text_nodes: Single<Entity, (With<Node>, With<Text>)>,
) {
info!("Despawning connecting notice.");
commands.entity(text_nodes.into_inner()).despawn();
}
/// The basic bundle for generic buttons.
///
/// It's mostly so I don't have to copy & paste this everywhere I want to use it.