From 4401b64300092d7922e9466f5943de2c5bcd174c Mon Sep 17 00:00:00 2001 From: CoCo_Sol007 Date: Thu, 21 Mar 2024 09:09:54 +0100 Subject: [PATCH] save --- crates/border-wars/src/scenes/lobby.rs | 34 +++++++++++++++++++--- crates/border-wars/src/scenes/menu.rs | 40 +++++++++++++++++++++++--- crates/relay-client/src/lib.rs | 3 +- 3 files changed, 68 insertions(+), 9 deletions(-) diff --git a/crates/border-wars/src/scenes/lobby.rs b/crates/border-wars/src/scenes/lobby.rs index 84a0348..7181767 100644 --- a/crates/border-wars/src/scenes/lobby.rs +++ b/crates/border-wars/src/scenes/lobby.rs @@ -1,9 +1,12 @@ //! The lobby of the game. +use bevnet::{Connection, SendTo}; use bevy::prelude::*; use bevy_egui::{egui, EguiContexts}; -use crate::CurrentScene; +use crate::networkinig::connection::RemovePlayer; +use crate::networkinig::GameRank; +use crate::{AllPlayer, CurrentScene}; /// The plugin for the lobby. pub struct LobbyPlugin; @@ -15,7 +18,13 @@ impl Plugin for LobbyPlugin { } /// Display the UI of the lobby. -fn lobby_ui(mut ctx: EguiContexts, mut next_scene: ResMut>) { +fn lobby_ui( + mut ctx: EguiContexts, + mut next_scene: ResMut>, + connection: Res, + all_players: Res, + mut kick_player: EventWriter>, +) { egui::CentralPanel::default().show(ctx.ctx_mut(), |ui| { ui.heading("Border Wars"); @@ -23,14 +32,31 @@ fn lobby_ui(mut ctx: EguiContexts, mut next_scene: ResMut, mut next_scene: ResMut>, + mut request_join: EventWriter>, + mut name: Local, + mut all_player: ResMut, + connection: Res, ) { + let Some(uuid) = connection.identifier() else { + return; + }; + egui::CentralPanel::default().show(ctx.ctx_mut(), |ui| { ui.heading("Border Wars"); ui.separator(); + ui.label("Name"); + ui.text_edit_singleline(&mut *name); + + ui.separator(); + ui.label("Connect to an existing game:"); ui.horizontal(|ui| { ui.label("Game ID: "); ui.text_edit_singleline(&mut *connection_string); + let Ok(game_id) = Uuid::parse_str(&connection_string) else { + return; + }; + if ui.button("Join").clicked() { - next_scene.set(CurrentScene::Game); - // TODO: connect to the game + next_scene.set(CurrentScene::Lobby); + request_join.send(SendTo( + game_id, + RequestJoin(Player { + name: name.clone(), + rank: GameRank::Player, + }), + )); } }); @@ -39,7 +65,13 @@ fn menu_ui( if ui.button("Create new game").clicked() { next_scene.set(CurrentScene::Lobby); - // TODO: create a new game + all_player.0.insert( + uuid, + Player { + name: name.clone(), + rank: GameRank::Admin, + }, + ); } }); } diff --git a/crates/relay-client/src/lib.rs b/crates/relay-client/src/lib.rs index b052784..05eec18 100644 --- a/crates/relay-client/src/lib.rs +++ b/crates/relay-client/src/lib.rs @@ -80,7 +80,8 @@ impl Connection { path.push(".relay-data"); // Check if the file exists. - match path.exists() { + match false { + // path.exists() true => { // Read the file and parse the identifier and secret key. let contents = fs::read(&path)?;