save
All checks were successful
Rust Checks / checks (push) Successful in 2m4s
Rust Checks / checks (pull_request) Successful in 2m10s

This commit is contained in:
CoCo_Sol 2024-03-21 10:07:46 +01:00
parent 49ee6daa8e
commit 0d048b3a57
6 changed files with 23 additions and 22 deletions

View file

@ -3,12 +3,12 @@
use bevnet::Uuid; use bevnet::Uuid;
use bevy::prelude::*; use bevy::prelude::*;
use bevy::utils::HashMap; use bevy::utils::HashMap;
use networkinig::GameRank; use networking::GameRank;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
pub mod camera; pub mod camera;
pub mod map; pub mod map;
pub mod networkinig; pub mod networking;
pub mod responsive_scale; pub mod responsive_scale;
pub mod scenes; pub mod scenes;

View file

@ -4,7 +4,7 @@ use bevy::prelude::*;
use border_wars::camera::CameraPlugin; use border_wars::camera::CameraPlugin;
use border_wars::map::renderer::RendererPlugin; use border_wars::map::renderer::RendererPlugin;
use border_wars::map::selected_tile::SelectTilePlugin; use border_wars::map::selected_tile::SelectTilePlugin;
use border_wars::networkinig::NetworkingPlugin; use border_wars::networking::NetworkingPlugin;
use border_wars::scenes::ScenesPlugin; use border_wars::scenes::ScenesPlugin;
fn main() { fn main() {

View file

@ -8,9 +8,9 @@ use super::GameRank;
use crate::{AllPlayers, CurrentScene, Player}; use crate::{AllPlayers, CurrentScene, Player};
/// A plugin that manage connections (add, remove). /// A plugin that manage connections (add, remove).
pub struct ConnectionPuglin; pub struct ConnectionPlugin;
impl Plugin for ConnectionPuglin { impl Plugin for ConnectionPlugin {
fn build(&self, app: &mut App) { fn build(&self, app: &mut App) {
app.add_network_event::<RequestJoin>() app.add_network_event::<RequestJoin>()
.add_network_event::<AddPlayer>() .add_network_event::<AddPlayer>()
@ -19,23 +19,24 @@ impl Plugin for ConnectionPuglin {
} }
} }
/// An event that is trigger whene a new player request to join a game. /// An event that is trigger when a new player request to join a game.
#[derive(Event, Serialize, Deserialize)] #[derive(Event, Serialize, Deserialize)]
pub struct RequestJoin(pub Player); pub struct RequestJoin(pub Player);
/// An event that is trigger whene a new player is added. /// An event that is trigger when a new player is added.
#[derive(Event, Serialize, Deserialize)] #[derive(Event, Serialize, Deserialize)]
pub struct AddPlayer(Uuid, Player); pub struct AddPlayer(Uuid, Player);
/// An event that is trigger whene a player is removed. /// An event that is trigger when a player is removed.
#[derive(Event, Serialize, Deserialize)] #[derive(Event, Serialize, Deserialize)]
pub struct RemovePlayer(pub Uuid); pub struct RemovePlayer(pub Uuid);
/// A fonction that handle join request and add it. /// A fonction that accept new connection.
/// It add the player to the list of all players.
pub fn accept_connection( pub fn accept_connection(
all_players: Res<AllPlayers>, all_players: Res<AllPlayers>,
mut requests_join: EventReader<Receive<RequestJoin>>, mut requests_join_event: EventReader<Receive<RequestJoin>>,
mut add_players: EventWriter<SendTo<AddPlayer>>, mut add_players_event: EventWriter<SendTo<AddPlayer>>,
connection: Res<Connection>, connection: Res<Connection>,
state: Res<State<CurrentScene>>, state: Res<State<CurrentScene>>,
) { ) {
@ -48,7 +49,7 @@ pub fn accept_connection(
return; return;
} }
for request_join in requests_join.read() { for request_join in requests_join_event.read() {
let new_uuid = request_join.0; let new_uuid = request_join.0;
let mut new_player = request_join.1.0.clone(); let mut new_player = request_join.1.0.clone();
@ -60,17 +61,17 @@ pub fn accept_connection(
new_player.rank = GameRank::Spectator; new_player.rank = GameRank::Spectator;
} }
add_players.send(SendTo(new_uuid, AddPlayer(new_uuid, new_player.clone()))); add_players_event.send(SendTo(new_uuid, AddPlayer(new_uuid, new_player.clone())));
for (uuid, player) in all_players.0.iter() { for (uuid, player) in all_players.0.iter() {
// Link all players // Link all players
add_players.send(SendTo(*uuid, AddPlayer(new_uuid, new_player.clone()))); add_players_event.send(SendTo(*uuid, AddPlayer(new_uuid, new_player.clone())));
add_players.send(SendTo(new_uuid, AddPlayer(*uuid, player.clone()))); add_players_event.send(SendTo(new_uuid, AddPlayer(*uuid, player.clone())));
} }
} }
} }
/// A fonction that handle new / remove players events. /// A fonction that handle new / remove players when a events.
pub fn handle_change_player( pub fn handle_change_player(
mut add_players: EventReader<Receive<AddPlayer>>, mut add_players: EventReader<Receive<AddPlayer>>,
mut remove_players: EventReader<Receive<RemovePlayer>>, mut remove_players: EventReader<Receive<RemovePlayer>>,

View file

@ -4,7 +4,7 @@ use bevnet::{Connection, NetworkPlugin};
use bevy::prelude::*; use bevy::prelude::*;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use self::connection::ConnectionPuglin; use self::connection::ConnectionPlugin;
use crate::{AllPlayers, Player}; use crate::{AllPlayers, Player};
pub mod connection; pub mod connection;
@ -15,7 +15,7 @@ pub struct NetworkingPlugin;
impl Plugin for NetworkingPlugin { impl Plugin for NetworkingPlugin {
fn build(&self, app: &mut App) { fn build(&self, app: &mut App) {
app.add_plugins(NetworkPlugin::new("relay.cocosol.fr".to_string())) app.add_plugins(NetworkPlugin::new("relay.cocosol.fr".to_string()))
.add_plugins(ConnectionPuglin) .add_plugins(ConnectionPlugin)
.init_resource::<AllPlayers>(); .init_resource::<AllPlayers>();
} }
} }

View file

@ -4,8 +4,8 @@ use bevnet::{Connection, SendTo};
use bevy::prelude::*; use bevy::prelude::*;
use bevy_egui::{egui, EguiContexts}; use bevy_egui::{egui, EguiContexts};
use crate::networkinig::connection::RemovePlayer; use crate::networking::connection::RemovePlayer;
use crate::networkinig::GameRank; use crate::networking::GameRank;
use crate::{AllPlayers, CurrentScene}; use crate::{AllPlayers, CurrentScene};
/// The plugin for the lobby. /// The plugin for the lobby.

View file

@ -4,8 +4,8 @@ use bevnet::{Connection, SendTo, Uuid};
use bevy::prelude::*; use bevy::prelude::*;
use bevy_egui::{egui, EguiContexts}; use bevy_egui::{egui, EguiContexts};
use crate::networkinig::connection::RequestJoin; use crate::networking::connection::RequestJoin;
use crate::networkinig::GameRank; use crate::networking::GameRank;
use crate::{AllPlayers, CurrentScene, Player}; use crate::{AllPlayers, CurrentScene, Player};
/// The plugin for the menu. /// The plugin for the menu.