Switch to replicon (#80)
This commit is contained in:
@@ -4,14 +4,13 @@ use crate::{
|
||||
loading_assets::AudioAssets,
|
||||
};
|
||||
use bevy::prelude::*;
|
||||
use lightyear::prelude::MessageReceiver;
|
||||
use shared::{
|
||||
player::PlayerBodyMesh,
|
||||
player::{LocalPlayerId, PlayerBodyMesh},
|
||||
protocol::{PlaySound, PlayerId, events::ClientHeadChanged, messages::AssignClientPlayer},
|
||||
};
|
||||
|
||||
pub fn plugin(app: &mut App) {
|
||||
app.register_type::<ClientPlayerId>();
|
||||
app.register_type::<LocalPlayerId>();
|
||||
app.register_type::<LocalPlayer>();
|
||||
|
||||
app.init_state::<PlayerAssignmentState>();
|
||||
@@ -28,35 +27,32 @@ pub fn plugin(app: &mut App) {
|
||||
global_observer!(app, on_update_head_mesh);
|
||||
}
|
||||
|
||||
#[derive(Resource, Reflect)]
|
||||
#[reflect(Resource)]
|
||||
pub struct ClientPlayerId {
|
||||
id: u8,
|
||||
}
|
||||
|
||||
fn receive_player_id(
|
||||
mut commands: Commands,
|
||||
mut recv: Single<&mut MessageReceiver<AssignClientPlayer>>,
|
||||
mut client_assignments: MessageReader<AssignClientPlayer>,
|
||||
mut next: ResMut<NextState<PlayerAssignmentState>>,
|
||||
) {
|
||||
for AssignClientPlayer(id) in recv.receive() {
|
||||
commands.insert_resource(ClientPlayerId { id });
|
||||
for &AssignClientPlayer(id) in client_assignments.read() {
|
||||
commands.insert_resource(LocalPlayerId { id });
|
||||
next.set(PlayerAssignmentState::IdReceived);
|
||||
info!("player id `{id}` received");
|
||||
info!("player id `{}` received", id.id);
|
||||
}
|
||||
}
|
||||
|
||||
fn match_player_id(
|
||||
mut commands: Commands,
|
||||
players: Query<(Entity, &PlayerId), Changed<PlayerId>>,
|
||||
client: Res<ClientPlayerId>,
|
||||
client: Res<LocalPlayerId>,
|
||||
mut next: ResMut<NextState<PlayerAssignmentState>>,
|
||||
) {
|
||||
for (entity, player) in players.iter() {
|
||||
if player.id == client.id {
|
||||
for (entity, player_id) in players.iter() {
|
||||
if *player_id == client.id {
|
||||
commands.entity(entity).insert(LocalPlayer);
|
||||
next.set(PlayerAssignmentState::Confirmed);
|
||||
info!("player entity {entity:?} confirmed with id `{}`", player.id);
|
||||
info!(
|
||||
"player entity {entity:?} confirmed with id `{}`",
|
||||
player_id.id
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user