~starkingdoms/starkingdoms

ref: eabc84c8e290163d25ea21f153ae811bf09fc23a starkingdoms/crates/unified/src/server/client_timing.rs -rw-r--r-- 966 bytes
eabc84c8 — core feat: add basic save file authentication infrastructure 18 hours ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use bevy_replicon::prelude::{FromClient, SendTargets, ToClients};
use crate::prelude::*;
use crate::shared::ecs::clock_sync::{ClientTiming, ServerTiming};

pub fn client_timing_plugin(app: &mut App) {
    app.add_systems(Update, echo_timing);
}

fn echo_timing(
    mut client_timings: MessageReader<FromClient<ClientTiming>>,
    mut server_timings: MessageWriter<ToClients<ServerTiming>>,
    time: Res<Time>,
) {
    for client_timing in client_timings.read() {
        let Ok(now) = web_time::SystemTime::now().duration_since(web_time::UNIX_EPOCH) else {
            warn!("Could not get system time");
            return
        };
        server_timings.write(ToClients {
            targets: SendTargets::Single(client_timing.client_id),
            message: ServerTiming {
                client_tx: client_timing.time,
                server: now.as_secs_f64(),
                server_time_elapsed: time.elapsed_secs_f64(),
            }
        });
    }
}