aboutsummaryrefslogtreecommitdiff
path: root/src/spectate/mod.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-06-04 21:53:00 +0200
committermetamuffin <metamuffin@disroot.org>2024-06-04 21:53:00 +0200
commitd50cbd513c7208cb2a5c13571a964544b9470017 (patch)
tree1d6e19928713d592b01bf1652285c49789f32051 /src/spectate/mod.rs
parent5063701929569fe37ca4b8659bd52981f8e7b77c (diff)
downloadgpn-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.rs20
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();
+ }
+ }
+ }
+ }
+ }
+}