diff --git a/crates/border-wars/src/scenes/lobby.rs b/crates/border-wars/src/scenes/lobby.rs index 776550d..c5ff7cb 100644 --- a/crates/border-wars/src/scenes/lobby.rs +++ b/crates/border-wars/src/scenes/lobby.rs @@ -4,7 +4,7 @@ use bevnet::{Connection, Receive, SendTo}; use bevy::prelude::*; use bevy_egui::{egui, EguiContexts}; -use crate::connection::{AddPlayer, AllPlayers, RequestConnection}; +use crate::connection::{AddPlayer, AllPlayers, RemovePlayer, RequestConnection}; use crate::CurrentScene; /// The plugin for the lobby. @@ -24,6 +24,8 @@ fn lobby_ui( mut ctx: EguiContexts, mut next_scene: ResMut>, connection: Res, + mut all_players: ResMut, + mut event: EventWriter>, ) { egui::CentralPanel::default().show(ctx.ctx_mut(), |ui| { ui.heading("Border Wars"); @@ -44,6 +46,21 @@ fn lobby_ui( // TODO: run the game } }); + egui::Window::new("Admin").show(ctx.ctx_mut(), |ui| { + for player in all_players.0.iter() { + ui.label(format!("{}", player.1)); + ui.separator(); + if player.0 == &connection.identifier().unwrap() { + continue; + } + let button = ui.button(format!("Kick {}", player.1)); + if button.clicked() { + for target_player in all_players.0.iter() { + event.send(SendTo(*target_player.0, RemovePlayer { uuid: *player.0 })); + } + } + } + }); } fn handle_request(