aboutsummaryrefslogtreecommitdiff
path: root/src/spectate/mod.rs
diff options
context:
space:
mode:
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();
+ }
+ }
+ }
+ }
+ }
+}