From 63648eef6e549e16e62cb1593fb9fbf2fd890e79 Mon Sep 17 00:00:00 2001 From: CoCo_Sol007 Date: Sat, 16 Mar 2024 23:12:49 +0100 Subject: [PATCH] save --- crates/border-wars/src/connection.rs | 2 +- crates/border-wars/src/main.rs | 4 ++++ crates/border-wars/src/scenes/menu.rs | 2 +- crates/border-wars/src/scenes/mod.rs | 2 ++ crates/border-wars/src/scenes/waiting_menu.rs | 19 +++++++++++-------- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/crates/border-wars/src/connection.rs b/crates/border-wars/src/connection.rs index c1c55eb..f6b9239 100644 --- a/crates/border-wars/src/connection.rs +++ b/crates/border-wars/src/connection.rs @@ -39,5 +39,5 @@ pub struct AddPlayer { /// The packet sent when a player is removed. #[derive(Event, Deserialize, Serialize)] pub struct RemovePlayer { - pub uuid: String, + pub uuid: Uuid, } diff --git a/crates/border-wars/src/main.rs b/crates/border-wars/src/main.rs index cc2c72e..474d5e5 100644 --- a/crates/border-wars/src/main.rs +++ b/crates/border-wars/src/main.rs @@ -1,7 +1,9 @@ //! The main entry point of the game. +use bevnet::NetworkPlugin; use bevy::prelude::*; use border_wars::camera::CameraPlugin; +use border_wars::connection::ConnectionPlugin; use border_wars::map::click_tile::TilesClickable; use border_wars::map::renderer::RendererPlugin; use border_wars::scenes::ScenesPlugin; @@ -13,5 +15,7 @@ fn main() { .add_plugins(RendererPlugin) .add_plugins(CameraPlugin) .add_plugins(TilesClickable) + .add_plugins(ConnectionPlugin) + .add_plugins(NetworkPlugin::new("relay.cocosol.fr".to_string())) .run(); } diff --git a/crates/border-wars/src/scenes/menu.rs b/crates/border-wars/src/scenes/menu.rs index eac3051..d9a6c87 100644 --- a/crates/border-wars/src/scenes/menu.rs +++ b/crates/border-wars/src/scenes/menu.rs @@ -66,7 +66,7 @@ fn name_settings( mut local_name: Local, mut connection: Res, ) { - egui::CentralPanel::default().show(ctx.ctx_mut(), |ui| { + egui::Window::new("Name settings").show(ctx.ctx_mut(), |ui| { ui.label("Enter your name:"); ui.horizontal(|ui| { let text = ui.text_edit_singleline(&mut *local_name); diff --git a/crates/border-wars/src/scenes/mod.rs b/crates/border-wars/src/scenes/mod.rs index da18601..3874fe2 100644 --- a/crates/border-wars/src/scenes/mod.rs +++ b/crates/border-wars/src/scenes/mod.rs @@ -7,6 +7,7 @@ use crate::{responsive_scale, CurrentScene}; pub mod lobby; pub mod menu; +pub mod waiting_menu; /// The plugin for all scenes. pub struct ScenesPlugin; @@ -17,6 +18,7 @@ impl Plugin for ScenesPlugin { .add_state::() .add_plugins(menu::MenuPlugin) .add_plugins(lobby::LobbyPlugin) + .add_plugins(waiting_menu::WaitingMenuPlugin) .add_plugins(responsive_scale::ResponsiveScalingPlugin); } } diff --git a/crates/border-wars/src/scenes/waiting_menu.rs b/crates/border-wars/src/scenes/waiting_menu.rs index 3f304a8..1e5c6cc 100644 --- a/crates/border-wars/src/scenes/waiting_menu.rs +++ b/crates/border-wars/src/scenes/waiting_menu.rs @@ -1,9 +1,10 @@ //! TODO +use bevnet::{Connection, Receive}; use bevy::prelude::*; use bevy_egui::{egui, EguiContexts}; -use crate::connection::{AllPlayers, RequestConnection}; +use crate::connection::{AddPlayer, AllPlayers, RemovePlayer, RequestConnection}; use crate::CurrentScene; /// The plugin for the lobby. @@ -24,26 +25,28 @@ fn ui(all_players: Res, mut ctx: EguiContexts) { ui.separator(); - for (uuid, name) in all_players.iter() { + for (uuid, name) in all_players.0.iter() { ui.label(format!("{}: {}", uuid, name)); } - }) + }); } fn handle_new_players( mut all_players: ResMut, - mut new_players: EventReader, - mut remove_players: EventReader, + mut new_players: EventReader>, + mut remove_players: EventReader>, self_uuid: Res, ) { for new_player in new_players.iter() { - all_players.insert(new_player.uuid, new_player.name.clone()); + all_players + .0 + .insert(new_player.1.uuid, new_player.1.name.clone()); } for remove_player in remove_players.iter() { - if remove_player.uuid == self_uuid.identifier().unwrap() { + if remove_player.1.uuid == self_uuid.identifier().unwrap() { todo!("end the game"); } - all_players.remove(&remove_player.uuid); + all_players.0.remove(&remove_player.1.uuid); } }