Skip to content

Commit

Permalink
communicate promotion
Browse files Browse the repository at this point in the history
  • Loading branch information
raffaeleragni committed Jun 7, 2024
1 parent f7cfb35 commit a4610e5
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 5 deletions.
5 changes: 5 additions & 0 deletions src/client/receiver.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use crate::{
lib_priv::PromotedToServer,
logging::{log_message_received, Who},
networking::{assets::SyncAssetTransfer, create_client, create_server},
proto::SyncAssetType,
Expand All @@ -13,6 +14,7 @@ pub(crate) fn poll_for_messages(
mut track: ResMut<SyncTrackerRes>,
mut sync_assets: ResMut<SyncAssetTransfer>,
mut client: ResMut<RenetClient>,
mut send_promoted_event: EventWriter<PromotedToServer>,
) {
while let Some(message) = client.receive_message(DefaultChannel::ReliableOrdered) {
let deser_message = bincode::deserialize(&message).unwrap();
Expand All @@ -23,6 +25,7 @@ pub(crate) fn poll_for_messages(
&mut track,
&mut sync_assets,
&mut commands,
&mut send_promoted_event,
);
}
}
Expand All @@ -34,6 +37,7 @@ fn client_received_a_message(
track: &mut ResMut<SyncTrackerRes>,
sync_assets: &mut ResMut<SyncAssetTransfer>,
cmd: &mut Commands,
send_promoted_event: &mut EventWriter<PromotedToServer>,
) {
log_message_received(Who::Client, &msg);
match msg {
Expand Down Expand Up @@ -126,6 +130,7 @@ fn client_received_a_message(
info!("Starting as host...");
world.insert_resource(create_server(ip, port));
});
send_promoted_event.send(PromotedToServer {});
}
Message::NewHost {
ip,
Expand Down
14 changes: 12 additions & 2 deletions src/lib_priv.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ use bevy_renet::renet::ClientId;

use crate::{
binreflect::bin_to_reflect, bundle_fix::BundleFixPlugin, client::ClientSyncPlugin,
proto::AssId, server::ServerSyncPlugin, ClientPlugin, ClientState, ServerPlugin, ServerState,
SyncComponent, SyncConnectionParameters, SyncDown, SyncExclude, SyncMark, SyncPlugin, SyncUp,
proto::AssId, server::ServerSyncPlugin, ClientPlugin, ClientState, PromoteToHostEvent,
ServerPlugin, ServerState, SyncComponent, SyncConnectionParameters, SyncDown, SyncExclude,
SyncMark, SyncPlugin, SyncUp,
};

#[derive(PartialEq, Eq, Hash)]
Expand All @@ -26,6 +27,12 @@ pub(crate) struct ComponentChange {
pub(crate) data: Box<dyn Reflect>,
}

#[derive(Event)]
pub(crate) struct PromotedToServer;

#[derive(Event)]
pub(crate) struct PromotedToClient;

#[derive(Resource, Default)]
pub(crate) struct SyncTrackerRes {
/// Mapping of entity ids between server and clients. key: server, value: client
Expand Down Expand Up @@ -220,6 +227,9 @@ impl Plugin for SyncPlugin {
app.add_plugins(ClientSyncPlugin);
app.init_state::<ServerState>();
app.init_state::<ClientState>();
app.add_event::<PromotedToServer>();
app.add_event::<PromotedToClient>();
app.add_event::<PromoteToHostEvent>();
}
}

Expand Down
5 changes: 2 additions & 3 deletions src/server/mod.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use bevy::prelude::*;
use bevy_renet::renet::{
transport::{NetcodeClientTransport, NetcodeServerTransport}, DefaultChannel, RenetServer, ServerEvent,
transport::{NetcodeClientTransport, NetcodeServerTransport},
DefaultChannel, RenetServer, ServerEvent,
};

use crate::{
Expand All @@ -26,8 +27,6 @@ pub(crate) struct ServerSyncPlugin;

impl Plugin for ServerSyncPlugin {
fn build(&self, app: &mut App) {
app.add_event::<PromoteToHostEvent>();

app.add_systems(
Update,
server_connected
Expand Down
5 changes: 5 additions & 0 deletions src/server/receiver.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use bevy_renet::renet::ClientId;

use crate::{
lib_priv::PromotedToClient,
logging::{log_message_received, Who},
networking::{assets::SyncAssetTransfer, create_client},
proto::SyncAssetType,
Expand All @@ -13,6 +14,7 @@ pub(crate) fn poll_for_messages(
mut server: ResMut<RenetServer>,
mut track: ResMut<SyncTrackerRes>,
mut sync_assets: ResMut<SyncAssetTransfer>,
mut send_promoted_event: EventWriter<PromotedToClient>,
) {
for client_id in server.clients_id().into_iter() {
while let Some(message) = server.receive_message(client_id, DefaultChannel::ReliableOrdered)
Expand All @@ -25,6 +27,7 @@ pub(crate) fn poll_for_messages(
&mut track,
&mut sync_assets,
&mut commands,
&mut send_promoted_event,
);
}
}
Expand All @@ -37,6 +40,7 @@ fn server_received_a_message(
track: &mut ResMut<SyncTrackerRes>,
sync_assets: &mut ResMut<SyncAssetTransfer>,
cmd: &mut Commands,
send_promoted_event: &mut EventWriter<PromotedToClient>,
) {
log_message_received(Who::Server, &msg);
match msg {
Expand Down Expand Up @@ -158,6 +162,7 @@ fn server_received_a_message(
info!("Creating a new client connection to new host...");
world.insert_resource(create_client(ip, port));
});
send_promoted_event.send(PromotedToClient {});
}
}
}
Expand Down

0 comments on commit a4610e5

Please sign in to comment.