diff options
author | metamuffin <metamuffin@disroot.org> | 2024-06-04 21:53:00 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-06-04 21:53:00 +0200 |
commit | d50cbd513c7208cb2a5c13571a964544b9470017 (patch) | |
tree | 1d6e19928713d592b01bf1652285c49789f32051 /src/spectate/mod.rs | |
parent | 5063701929569fe37ca4b8659bd52981f8e7b77c (diff) | |
download | gpn-tron-rust-d50cbd513c7208cb2a5c13571a964544b9470017.tar gpn-tron-rust-d50cbd513c7208cb2a5c13571a964544b9470017.tar.bz2 gpn-tron-rust-d50cbd513c7208cb2a5c13571a964544b9470017.tar.zst |
show chat and winners
Diffstat (limited to 'src/spectate/mod.rs')
-rw-r--r-- | src/spectate/mod.rs | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/spectate/mod.rs b/src/spectate/mod.rs index f80551e..3da4a0d 100644 --- a/src/spectate/mod.rs +++ b/src/spectate/mod.rs @@ -1,5 +1,6 @@ +use crate::State; use serde::Deserialize; -use std::net::SocketAddr; +use std::{net::SocketAddr, sync::Arc}; pub mod server; @@ -7,3 +8,20 @@ pub mod server; pub struct Config { bind: SocketAddr, } + +async fn stats_loop(state: Arc<State>) { + let mut ticks = state.tick.subscribe(); + while let Ok(end) = ticks.recv().await { + if let Some(winner) = end { + if let Some(winner) = winner { + if let Some(winner) = state.players.write().await.get(&winner).cloned() { + let mut h = state.win_history.write().await; + h.push_front(winner); + while h.len() > 64 { + h.pop_back(); + } + } + } + } + } +} |