skullball/rust/src/ui/net_stats.rs
2026-07-16 05:50:20 +03:00

41 lines
1001 B
Rust

use godot::{
classes::{ILabel, Label},
prelude::*,
};
use crate::net::net_stats::Stats;
#[derive(GodotClass)]
#[class(base=Label)]
pub struct NetStatsLabel {
since_update: f64,
base: Base<Label>,
}
#[godot_api]
impl ILabel for NetStatsLabel {
fn init(base: Base<Self::Base>) -> Self {
NetStatsLabel {
since_update: 0.,
base,
}
}
fn process(&mut self, delta: f64) {
self.since_update += delta;
if self.since_update > 0.1 {
self.since_update = 0.;
let stats = Stats::singleton();
let statistics = &stats.bind().statistics;
self.base_mut().set_text(&format!(
"TX: {} ({} bps)\nRX: {} ({} bps)\nPacket Loss: {:.2}%",
statistics.total_bytes_tx,
statistics.tx_bps,
statistics.total_bytes_rx,
statistics.rx_bps,
statistics.packet_loss * 100.
));
}
}
}