Merge branch 'master'

This commit is contained in:
2025-12-19 20:12:41 -05:00
7 changed files with 42 additions and 13 deletions

View File

@@ -2,7 +2,7 @@ use crate::{
GameState, global_observer,
heads_database::HeadsDatabase,
player::ClientPlayerId,
protocol::{ClientEnteredPlaying, PlayerId, SetGameTick, messages::AssignClientPlayer},
protocol::{ClientEnteredPlaying, PlayerIdCounter, SetGameTick, messages::AssignClientPlayer},
tb_entities::SpawnPoint,
tick::GameTick,
};
@@ -34,12 +34,14 @@ pub fn plugin(app: &mut App) {
fn on_client_playing(
trigger: On<FromClient<ClientEnteredPlaying>>,
commands: Commands,
clients: Query<&ClientPlayerId>,
query: Query<&Transform, With<SpawnPoint>>,
heads_db: Res<HeadsDatabase>,
) -> Result {
info!("client has entered playing gamestate");
crate::player::spawn(commands, trigger.client_id, query, heads_db)
let id = clients.get(trigger.client_id.entity().unwrap()).unwrap();
crate::player::spawn(commands, trigger.client_id, id.0, query, heads_db)
.ok_or("failed to spawn player")?;
Ok(())
@@ -93,16 +95,17 @@ fn on_connected(
game_tick: Res<GameTick>,
mut commands: Commands,
mut assign_id: MessageWriter<ToClients<AssignClientPlayer>>,
mut ids: ResMut<PlayerIdCounter>,
) {
let client = trigger.event_target();
info!("{client} connected to server!");
let id = ClientPlayerId(PlayerId { id: 0 });
commands.entity(client).insert(id);
let id = ids.alloc();
commands.entity(client).insert(ClientPlayerId(id));
assign_id.write(ToClients {
mode: SendMode::Direct(ClientId::Client(trigger.entity)),
message: AssignClientPlayer(id.0),
message: AssignClientPlayer(id),
});
commands.server_trigger(ToClients {