aboutsummaryrefslogtreecommitdiff
path: root/src/spectate/mod.rs
blob: 3da4a0d9207c81ce1a3736e480931e56b18888ed (plain)
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
use crate::State;
use serde::Deserialize;
use std::{net::SocketAddr, sync::Arc};

pub mod server;

#[derive(Deserialize)]
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();
                    }
                }
            }
        }
    }
}